[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[OT] Subversion -> Git on my personal repository



Hi,

Apologies in advance for those who feel that this post is not suitable
for this august (or is it September nowadays?) forum; I know it has got
almost nothing to do with Perl in Debian - I'd just like to shamelessly
make use of your collected Subversion & Git experience :)  Also... uhm,
this came out a bit longer than I thought it would; apologies for that,
too, and feel free to not read it or ignore it at your discretion! :)

For some weird reason, I've decided to migrate most of the projects
hosted in my personal Subversion repository at
http://svn.ringlet.net/svn/ringlet/ to Git, most probably hosted at
Gitorious.  As a first step, there ought to be a conversion from a
remote Subversion repo to a local Git one - and here's where I hit a
slight problem, most probably related to the repository layout that I've
been using all those years.

Let's take one of my simpler projects, confget.  I create an authors.txt file:
roam = Peter Pentchev <roam@ringlet.net>

...and then I run:

git svn clone --stdlayout -A authors.txt http://svn.ringlet.net/svn/ringlet/text/confget/

It does... a lot :)  And eventually leaves me with a "confget" directory
containing a Git repository with a single checked-out "master" branch -
so far so good.

However... the next step ought to be examining my Subversion tags and
branches and marking what needs to be marked as Git tags, not branches.
And that's the point when I find out that either I've been doing things
wrong all these years, or git-svn is somehow misinterpreting things :)

The main point is, my "trunk" directory contains several subdirectories
for different aspects of the confget development - confget/ has the real
source tree, confget-pkg/ has various packaging stuff (e.g.
confget-pkg/debian/ ought to be self-explanatory for the crowd here ;),
and confget-web/ is a trivial website.  When I tag something, I don't
copy the full trunk/ directory, but only the component I need: "svn copy
trunk/confget tags/confget-1.02-release" and "svn copy
trunk/confget-pkg/debian tags/confget-1.02-1-debian-01".  But git-svn
does not quite realize that, and the result is...


[roam@straylight ~/tmp/git/confget]$ git branch
* master
[roam@straylight ~/tmp/git/confget]$ ls
confget  confget-pkg  confget-web
[roam@straylight ~/tmp/git/confget]$ ls confget
CHANGES    confget_common.c  confget_http_get.c  confget_ini.h  README
confget.1  confget_common.h  confget_http_get.h  makedep.sh     t
confget.c  confget.h         confget_ini.c       Makefile       TODO
[roam@straylight ~/tmp/git/confget]$ git checkout tags/confget-1.01-release
Note: checking out 'tags/confget-1.01-release'.
(snip a lecture from Git on detached body parts)

HEAD is now at 2c63996... Tag the release of confget-1.01.
[roam@straylight ~/tmp/git/confget]$ ls
CHANGES    confget_common.c  confget_http_get.c  confget_ini.h  README
confget.1  confget_common.h  confget_http_get.h  makedep.sh     t
confget.c  confget.h         confget_ini.c       Makefile       TODO
[roam@straylight ~/tmp/git/confget]$

So... that's the problem.  Git-svn didn't realize that
tags/confget-1.01-release/ is only a copy of trunk/confget/ and not of
the entire trunk/.  Is there a way to make it, well, realize that - so
that "git diff tags/confget-1.02-release..master" would not show changes
in *all* the files "simply" because they've "moved" a directory down?  I
would really like to be able to not only compare tags (this is actually
possible - all of them are at the same relative position in the tree),
but to also compare the trunk againt a tag :)

Well, if anybody has actually read this far - thanks a lot :)  Even for
reading :) And if you can give any advice, pointers or whatever, that's
be very, very welcome!

G'luck,
Peter

-- 
Peter Pentchev	roam@space.bg    roam@ringlet.net    roam@FreeBSD.org
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
If this sentence were in Chinese, it would say something else.

Attachment: signature.asc
Description: Digital signature


Reply to: