threads / bug / 15919

git-svnimport.perl bug when copy source path has a revision

Subject: git-svnimport.perl bug when copy source path has a revision

## tl;dr

3 messages between Oct 15, 2008 and Oct 16, 2008.

replies: 2people: 2as markdown or json

Karl Chen· Oct 15, 2008, 19:11 UTC · lore

This looks like a bug in git-svnimport.perl. If a tag (or branch?) is created retroactively, git-svnimport doesn't respect the copy source revision.

To reproduce:
svnadmin create somerepo;  export R=file://$PWD/somerepo
svn co $R wc && cd wc
mkdir trunk tags && svn add trunk tags && svn commit -m ""  # rev 1

cd trunk echo a > a echo b > b echo c > c

svn add a && svn commit -m "commit a" # rev 2 svn add b && svn commit -m "commit b" # rev 3 # Copy from revision 2 instead of HEAD: svn cp -m "tag rev 2" $R/trunk@2 $R/tags/mytag # rev 4 svn add c && svn commit -m "commit c" # rev 5

svn ls $R/tags/mytag # Lists only 'a'

mkdir /tmp/gitrepo && cd /tmp/gitrepo perl /usr/share/doc/git-core/contrib/examples/git-svnimport.perl $R

git log mytag # 'mytag' includes "commit b"; it was created as if it were tagged # at r3; the "@2" was ignored.

Pete Harlan· Oct 16, 2008, 06:43 UTC · re: Karl Chen · lore

Re: git-svnimport.perl bug when copy source path has a revision

Karl Chen wrote:
Show 32 quoted lines
> This looks like a bug in git-svnimport.perl.  If a tag (or
> branch?) is created retroactively, git-svnimport doesn't respect
> the copy source revision.
> 
> To reproduce:
> 
> svnadmin create somerepo;  export R=file://$PWD/somerepo
> 
> svn co $R wc && cd wc
> 
> mkdir trunk tags && svn add trunk tags && svn commit -m ""  # rev 1
> 
> cd trunk
> echo a > a
> echo b > b
> echo c > c
> 
> svn add a && svn commit -m "commit a"   # rev 2
> svn add b && svn commit -m "commit b"   # rev 3
> # Copy from revision 2 instead of HEAD:
> svn cp -m "tag rev 2" $R/trunk@2 $R/tags/mytag  # rev 4
> svn add c && svn commit -m "commit c"   # rev 5
> 
> svn ls $R/tags/mytag 
> # Lists only 'a'
> 
> mkdir /tmp/gitrepo && cd /tmp/gitrepo
> perl /usr/share/doc/git-core/contrib/examples/git-svnimport.perl $R
> 
> git log mytag
> # 'mytag' includes "commit b"; it was created as if it were tagged
> # at r3; the "@2" was ignored.
If you replace this:
> perl /usr/share/doc/git-core/contrib/examples/git-svnimport.perl $R
with:

git svn init -T trunk -t tags $R git svn fetch git log tags/mytag

you get a log that doesn't include "commit b". (And it does include the tag commit, as svn does.) tags/mytag is a branch, visibile via "git branch -r", instead of a tag. I'm not fluent enough in git svn to know if this is a bug or a feature.

According to git logs (8cb070a4, fee9832a), git-svnimport.perl hasn't been maintained in a while, presumably because git svn provides a superset of its functionality.

HTH,
--Pete
Karl Chen· Oct 16, 2008, 18:36 UTC · re: Pete Harlan · lore

Re: git-svnimport.perl bug when copy source path has a revision

>>>>> On 2008-10-15 23:43 PDT, Pete Harlan writes:
    Pete> git svn init -T trunk -t tags $R git svn fetch git log
    Pete> tags/mytag

Thanks for the pointer. I do know about git-svn and used it to convert most of my repositories, but one particular repository isn't converting with git-svn - it runs for hours before I cancel it, whereas git-svnimport completes in minutes.

← back to recent threads