[pacman-dev] [PATCH] makepkg: speed up svn revision check for large repositories

Allan McRae allan at archlinux.org
Wed Jul 16 07:47:36 EDT 2008


Dan McGee wrote:
> On Wed, Jul 16, 2008 at 6:33 AM, Allan McRae <allan at archlinux.org> wrote:
>   
>> Dan McGee wrote:
>>     
>>> On Wed, Jul 16, 2008 at 1:45 AM, Xavier <shiningxc at gmail.com> wrote:
>>>
>>>       
>>>> Allan McRae wrote:
>>>>
>>>>         
>>>>> Dan McGee wrote:
>>>>>
>>>>>           
>>>>>> On Tue, Jul 15, 2008 at 7:15 PM, Dan McGee <dan at archlinux.org> wrote:
>>>>>>
>>>>>>
>>>>>>             
>>>>>>> Using the suggestion from FS#10905, use 'svn info' rather than 'svn log' to
>>>>>>> get the current revision number, which is much quicker for large Subversion
>>>>>>> repositories. Eventually git will rule the world. :)
>>>>>>>
>>>>>>> Signed-off-by: Dan McGee <dan at archlinux.org>
>>>>>>> ---
>>>>>>>  scripts/makepkg.sh.in |    2 +-
>>>>>>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>>>>>>
>>>>>>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
>>>>>>> index b810d60..2ab2aef 100644
>>>>>>> --- a/scripts/makepkg.sh.in
>>>>>>> +++ b/scripts/makepkg.sh.in
>>>>>>> @@ -1017,7 +1017,7 @@ devel_check() {
>>>>>>>                elif [ ! -z ${_svntrunk} ] && [ ! -z ${_svnmod} ] ; then
>>>>>>>                        [ $(type -p svn) ] || return 0
>>>>>>>                        msg "$(gettext "Determining latest svn revision...")"
>>>>>>> -                       newpkgver=$(svn log $_svntrunk --limit 1 -q | sed -n 's/^r\([0-9]*\) .*$/\1/p')
>>>>>>> +                       newpkgver=$(LC_ALL= LANG= svn info $_svntrunk | sed -n 's/^Last Changed Rev: \([0-9]*\)$/\1/p')
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>> I settled on this after I saw a similar use case elsewhere in makepkg:
>>>>>>   echo "# $(LC_ALL= LANG= date -u)" >>.PKGINFO
>>>>>> I think it makes sense. Let me know if anyone has better ideas.
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>>  From memory, that is the cleaner way to unset the locales so it is all
>>>>> good.
>>>>>
>>>>>
>>>>>           
>>>> Here is a filtered output of git grep LC_ALL :
>>>>
>>>> contrib/bacman:echo "# $(LC_ALL=C date)"            >> .PKGINFO
>>>>
>>>>         
>>> This one should probably change to match makepkg anyway...
>>>
>>>
>>>       
>>>> doc/makepkg.8.txt:seeking help or for other purposes, you may wish to
>>>> run "`LC_ALL=C makepkg`" so
>>>>
>>>>         
>>> I don't think this one is as big of deal, do you?
>>>
>>>
>>>       
>>>> scripts/makepkg.sh.in:  echo "# $(LC_ALL= LANG= date -u)" >>.PKGINFO
>>>>
>>>> So maybe we could change the first two for a better consistency?
>>>>
>>>>         
>> Hmmm, after some google searching.  LC_ALL appears to override any other
>> LC_* variable and the LANG variable.  So "LANG=" here is redundant.  I
>> couldn't find whether there is a difference between "LC_ALL=C" and
>> "LC_ALL=" but I am suspecting there isn't...
>>     
>
> Hmm, ok. That does make sense.
>
> Whatever works and is simplest is fine with me, and it would be ideal
> for it to work on platforms besides Linux as well.
>   

More google searching on this and requiring to correct my previous 
assertions...   "LC_ALL=C" is equivalent to "LC_ALL=POSIX".  Just using 
"LC_ALL=" does require "LANG=" as if LC_ALL is unset it then looks at 
the LANG variable.

So the following all are equivalent (I think...):
LC_ALL= LANG=
LC_ALL=C     <- my vote
LC_ALL=POSIX

Allan






More information about the pacman-dev mailing list