Hi, I mentioned a few months back that I'd created a temporary git repository on git.debian.org for the /run transition work. This was just a crude import of the current tree, without any history. IIRC, someone mentioned at the time that doing a git conversion was on their TODO list.
Today, I tried a couple of different conversion methods: - git svn - svn2git Both worked, but when doing per-tag and -branch checks the former gave broken history. This is due to the presence of some inconsistencies in the repository history. The latter allowed a "perfect" conversion with the creation of a custom import ruleset. I've replaced the temporary repository at git.debian.org/git/collab-maint/sysvinit with the completed repository conversion for you to take a look at. I've also attached the scripts I used to to the conversion and validation. sysvinit.rules works around brokenness in the early history of the repo (all revisions before r18 are discarded), and it special cases upstream branches and names tags to allow tag conversion later. fixtags.sh converts tag branches to signed tags. Currently signed by me, but can be trivially resigned. checktags.sh validates all tags by diffing each checked out tag with a full SVN tree, and filtering out all .svn and .git dirs. Branches were validated using the same logic, but by hand. Dodgy tags: 2.86.ds1-12 2.86.ds1-13 2.86.ds1-22[.new[@936]] 2.86.ds1-31 2.86.ds1-34 These all appear in git as incomplete merges. They exist as tags but are not attached to any branch (i.e. unlike all other tags are not in the history for master). "git svn" gave incorrect history for these. "svn2git" correctly reproduces the tree, but it's not part of the history for any specific branch. You can easily create such a branch with "git checkout -b $tag". I guess these were a result of making a commit to the tag after branching from master, since in svn a tag is just a directory. Anyway, hope this is useful. If you don't want to use the repo as it stands, feel free to pull the branches and push them elsewhere, or to repeat the entire conversion yourselves--all the bits needed to reproduce the conversion are attached. The above repo is in collab-maint for convenience, but could easily be moved to a pkg-sysvinit directory with the same access controls as the existing svn repo. Regards, Roger -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `- GPG Public Key: 0x25BFB848 Please GPG sign your mail.
# # Declare the repositories we know about: # create repository sysvinit end repository # # Declare the rules # Note: rules must end in a slash # match /(trunk|branches|tags|sysvinit|sysvinit-upstream)/ max revision 17 end match match /sysvinit/trunk/ min revision 18 repository sysvinit branch master end match match /sysvinit-upstream/trunk/ min revision 18 repository sysvinit branch upstream end match # Subversion doesn't understand the Git concept of tags # In Subversion, tags are really branches # # Only a post-processing (i.e., after converting to Git) of the tag # branches can we be sure that a tag wasn't moved or changed from the # branch it was copied from # # So we don't pretend that SVN tags are Git tags and then import # everything as one match /sysvinit/branches/upstream/([^/]+)/ min revision 18 repository sysvinit branch upstream/\1 end match match /sysvinit/branches/([^/]+)/ min revision 18 repository sysvinit branch \1 end match match /sysvinit/tags/([^/]+)/ min revision 18 repository sysvinit branch tag-\1 end match match /sysvinit-upstream/(branches|tags)/([^/]+)/ min revision 18 repository sysvinit branch upstream-\2 end match
fixtags.sh
Description: Bourne shell script
checktags.sh
Description: Bourne shell script
signature.asc
Description: Digital signature
_______________________________________________ Pkg-sysvinit-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-sysvinit-devel

