[pacman-dev] [PATCH 2/4] makepkg: svn: update existing sources in srcdir without removing them first.

Allan McRae allan at archlinux.org
Fri Dec 13 21:14:04 EST 2013


On 11/12/13 19:31, Lukas Jirkovsky wrote:
> On Wed, Dec 11, 2013 at 6:08 AM, Allan McRae <allan at archlinux.org> wrote:
>>
>> There will be plenty of build systems that will use @.c  (made up
>> psuedo-make syntax) to compile all files.
> 
> I think I've a few ideas how to fix the problem with deleted files.
> 
> First idea is:
> 
> 1. checkout a new revision into a temporary directory
> 2. create patch between the current checkout in $SRCDEST and the
> checkout from 1.
> 3. replace the checkout in $SRCDEST with the temporary checkout from 1.
> 4. apply the patch from 2. to the sources in $srcdir
> 5. update .svn of the checkout in $srcdir using the one from $SRCDEST
> 
> The temporary checkout could by avoided if the patch was created using
> "svn diff" but that would probably download the changes twice.
> 
> Second idea is to do the update the other way for svn:
> 1. run "svn update" on the checkout in $srcdir
> 2. replace the sources in $SRCDEST with "svn export" from $srcdir
> 3. copy .svn from checkout in $srcdir to the sources in $SRCDEST
> effectively making it a valid checkout

If we were going for something like these two...  I'd say:

1) Copy checkout in $SRCDEST to temporary directory
2) Update checkout in $SRCDEST
3) take diff and delete temporary copy
4) apply diff to copy in $srcdir

which still involves temporary copies which could be quite large.

> The last idea:
> Log deleted files from the "svn update" output and then delete them
> manually. However, I'm afraid of such approach, because it would break
> if the update output changed.

Definitely not!  Parsing output of external software is bad.

In the end, I think we need to just accept that SVN in a centralised
system and it is difficult to do this perfectly.

Allan



More information about the pacman-dev mailing list