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