I'm doing a one-way convert from an SVN repository to a Git repository using git svn clone
. Most examples do this with the --no-metadata
flag - is there an advantage to using this flag?
I understand that the flag removes the SVN revision numbers. I can think of reasons why it may be useful to keep these around (such as referring back to specific commits mentioned in bug tracking software).
What are the arguments for using the --no-metadata
flag? Is there any benefit other than a sensation of breaking all ties?
It is actually not recommended:
One argument for using
--no-metadata
is that it doesn't change your commit messages. So even if you fetch from different locations, the commit messages will be the same and thus the commit hashes will be the same.As an example, if I
git svn init
a repo from a localfile:
URL and later pull from anhttps:
URL, every commit in the repo will be duplicated, since all of the commits withgit-svn-id: file:///
... will be fetched asgit-svn-id: https:///
... and encoded with new SHA1's.If I specify
--no-metadata
then the commit message and this sha1 has will be the same and I can fetch from either the local filesystem or the subversion server because there will only be a single copy of any given svn commit in the git repo.Personally I would prefer it if there were a minimal metadata option, which recorded the subversion revision id, but not the full metadata, but without messing around with
git-filter-branch
we are stuck with all or nothing.