On 25.06.2011 14:05, Jens-Heiner Rechtien wrote:
Hi Mathias,
On 06/23/2011 07:15 PM, Mathias Bauer wrote:
Hi,
I'm no svn expert, but I hope to find some here.
We still have a lot of work in so called child workspaces (in Mercurial
they are just an own repository that originates from the "main"
repository). When I thought about possible ways to move them to the
Apache repository, I had the idea that doing this as a patch might be
the easiest way:
- it's trivial to create a patch of a CWS containing all changes
- the patch does not have any copyright problems as all changes in it
are done by Oracle employees or by other developers under SCA
- changes on problematic files will just not apply if the file is not in
the basic svn repo of OOo
Sounds like a good idea, doesn't it?
But now I recognized that this idea was based on the wonderful feature
that the "git extended" diff format offers. It allows to have file
removal, addition or renaming (that includes moves in the tree) or file
attribute changes in the diff and by using "hg patch" (and not the patch
command of the OS) all these changes apply nicely in the target
repository.
I didn't find a support for this in svn, but maybe there is something
similar or comparable we could use.
Simply use "git apply". This tool applies git style patches to a working
directory which explicitly doesn't need to be a git repository as long
the --index option is not used. Nice tool, lots of possibility to fix
whitespace etc on the fly.
But that doesn't solve the problem that you have to add/remove files in
svn manually after using git apply, right? For some CWS this is the most
tedious part (refactoring, gbuildifying etc.).
Maybe using
svn status | grep '?' | sed 's/^.* /svn add /'
or so and something similar for "svn remove" should work, but perhaps
there's something built into svn that makes it easier?!
I assume that tracking of moved files does not work anyway in svn (what
a PITA!), so the best one could get is a list of all missing and new files.
Regards,
Mathias