On 9 June 2015 at 19:37, Laszlo Ersek <ler...@redhat.com> wrote: > (Sorry about the sensationalist subject line, I don't have a degree in > marketing :)) > > Edk2 uses a large number of text files with *sections*: > > [Section.LOL] > > I'm sure you've been annoyed quite a few times, while reviewing patches, > that you couldn't immediately see the section that a hunk modified. (I > know I have.) We used to have two solutions for this: > > - On the reviewer side, apply the patchset and review it patch-wise, > against the full source code as context. > > - On the sender side, generate the patches with a larger context. > Options are -U<n>, --inter-hunk-context=<lines>, and even > --function-context. Unfortunately, these don't resolve the question of > sections reliably (or they produce overkill output). > > Turns out git has a trick for this up its sleeve: see gitattributes(5). > > (1) Edit your .git/info/attributes file, adding the following lines: > > *.dec diff=ini > *.dsc diff=ini > *.dsc.inc diff=ini > *.fdf diff=ini > *.fdf.inc diff=ini > *.inf diff=ini > > (2) in your .git/config, add > > [diff "ini"] > xfuncname = "^\\[[A-Za-z0-9_., ]+]" >
Nice find! Very useful indeed. -- Ard. > I just set these in my edk2 clone, and tested them on my local branch > where I had applied Ard's series > > [PATCH 0/7] ArmPkg/ArmVirtPkg: GIC revision detection > > for review. A good example is patch #4, "ArmPkg: copy ArmGicArchLib to > ArmGicArchSecLib". Now I can immediately see, in the hunk headers (@@), > what section each change belongs to. > > Here it is (git show output trimmed to relevant files): > >> diff --git a/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc >> b/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc >> index 0859bc3..6e6687c 100644 >> --- a/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc >> +++ b/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc >> @@ -138,6 +138,7 @@ [LibraryClasses.common.SEC] >> >> PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf >> >> PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf >> PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf >> + ArmGicArchLib|ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf >> >> [LibraryClasses.common.SEC, LibraryClasses.common.PEIM] >> MemoryInitPeiLib|ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf >> diff --git a/ArmPlatformPkg/ArmPlatformPkg.dsc >> b/ArmPlatformPkg/ArmPlatformPkg.dsc >> index be31025..14d82f6 100644 >> --- a/ArmPlatformPkg/ArmPlatformPkg.dsc >> +++ b/ArmPlatformPkg/ArmPlatformPkg.dsc >> @@ -134,6 +134,8 @@ [LibraryClasses.common.SEC] >> >> DebugAgentLib|ArmPkg/Library/DebugAgentSymbolsBaseLib/DebugAgentSymbolsBaseLib.inf >> >> DefaultExceptionHandlerLib|ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLibBase.inf >> >> + ArmGicArchLib|ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf >> + >> [LibraryClasses.common.SEC, LibraryClasses.common.PEIM] >> MemoryInitPeiLib|ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf >> >> diff --git a/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc >> b/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc >> index 19de381..4b4867f 100644 >> --- a/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc >> +++ b/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc >> @@ -128,6 +128,8 @@ [LibraryClasses.common.SEC] >> >> PrePiHobListPointerLib|ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf >> !endif >> >> + ArmGicArchLib|ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf >> + >> [LibraryClasses.common.SEC, LibraryClasses.common.PEIM] >> MemoryInitPeiLib|ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf >> >> diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc >> b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc >> index 84e2a99..8f7b5f1 100644 >> --- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc >> +++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc >> @@ -144,6 +144,8 @@ [LibraryClasses.common.SEC] >> # Trustzone Support >> >> ArmTrustedMonitorLib|ArmPlatformPkg/Library/ArmTrustedMonitorLibNull/ArmTrustedMonitorLibNull.inf >> >> + ArmGicArchLib|ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf >> + >> [LibraryClasses.common.PEI_CORE] >> HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf >> PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf > > This git-diff output shows quickly that Ard resolved the library class > for SEC modules, a fact that was not visible otherwise from the patch > itself. > > I recommend that all git users working with edk2 apply these settings -- > they are *very* helpful for reviewers. Personally, I will make this a > requirement for patches that I'm expected (or asked) to review. > > Thanks > Laszlo > > ------------------------------------------------------------------------------ > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel