[Nut-upsdev] Mixed-commit problem solved

Eric S. Raymond esr at thyrsus.com
Mon Jan 9 15:28:31 UTC 2012

Arnaud Quette <aquette.dev at gmail.com>:
> Note that I have a few things stagging for the "Powerchain" branch, which
> is not yet usable, but might be worth to commit.
> But since I don't want to interfere with the git transition, this can wait
> a bit more...

Go ahead and commit.  I have the git conversion scripted now - you can work
normally on the Subversion repo and when Charles says it's ready we'll 
do a last run and switch over.

You can simplify things a bit by doing your comments in git form (summary
line plus continuation) so I don't have to edit them.

I'm now working on detecting merges and places where directory copies 
should produce two-parent commits.

Just because you might find it interesting, the current version of the
lift script follows.  These aren't shell commands, they're reposurgeon commands.

# Reposurgeon script for building the git nut repository
# Make progress batons visible
verbose 1
# Start from a dump of the Subversion repo
read nut.svn
# Map the author IDs
authors read <<EOF
esr-guest = Eric S. Raymond <esr-guest at alioth.debian.org>
lestat-guest = David Goncalves <david at lestat.st>
agordeev-guest = Alexander Gordeev <agordeev-guest at alioth.debian.org>
emilienkia-guest = Emilien Kia <emilienkia-guest at alioth.debian.org>
prachi-guest = Prachi Gandhi <prachi-guest at alioth.debian.org>
praveenkumar-guest = Praveen Kumar <praveenkumar-guest at alioth.debian.org>
msoltyspl-guest = Michal Soltys <msoltyspl-guest at alioth.debian.org>
keyson-guest = Kjell Claesson <keyson-guest at alioth.debian.org>
chetanagarwal-guest = Chetan Agarwal <chetanagarwal-guest at alioth.debian.org>
fbohe-guest = Frederic Bohe <fbohe-guest at alioth.debian.org>
aquette = Arnaud Quette <arnaud.quette at free.fr>
clepple-guest = Charles Lepple <clepple+nut at gmail.com>
adkorte-guest = Arjen de Korte <adkorte-guest at alioth.debian.org>
(no author) = no author <nobody at networkupstools.org>
selinger-guest = Peter Selinger <selinger at users.sourceforge.net>
carlosefr-guest = Carlos Rodrigues <cefrodrigues at gmail.com>
nba-guest = Niels Baggesen <nba at users.sourceforge.net>
lyrgard-guest = Jonathan Dion <lyrgard-guest at alioth.debian.org>
jongough-guest = Jon Gough <jon.gough at eclipsesystems.com.au>
# Optional: uncomment to dump comments after author mapping
## mailbox_out nut.box-orig

# Edit comments to fix multine comments and make all commit references
# into machine-parseable cookies.
mailbox_in nut.box
# Optional: uncomment to eyeball the comment differences,
# Warning, this diff is large!
## shell diff -u nut.box-orig nut.box | more
# Lift all SVN:xxxx references
references lift
# Clean up superfluous branch root labels
delete =T & /New repository initialized by cvs2svn./
delete =T & /New branch for dynamic link of nut-scanner libraries/  
delete =T & /AsciiDoc branch creation/
delete =T & /Add new branch for bcmxcp driver extension/
delete =T & /Create a branch to track development on Powerchain/
delete =T & /Created NUT_packaging branch to add NUT Solaris package/
delete =T & /apcsmart driver updates/
delete =T & /Create branch tripplite-proto-3004/
delete =T & /Create branch netport/
delete =T & /Create Windows porting branch/
delete =T & /Branch for working on HP-UX build issues./
delete =T & /No functional changes \(properties only\)/
delete =T & /Add new branch for dynamic poll mechanism/
delete =T & /Create a branch for NUT Quality Assurance related work/
delete =T & /Branch for some FreeBSD testing of tripplite_usb/
delete =T & /creating a megatec-usb branch/
delete =T & /New branch to test tripplite_usb Unit ID code command/
delete =T & /Branch for "list UPS" option in upsc/
delete =T & /create the development branch to work on the new configuration/
delete =T & /creating a branch "automake" of trunk/
delete =T & /Folder for NUT test cases/
delete =T & /Create a new clean and up to date branch for NSS work/
delete =T & /New try to add this/
delete =T & /file mge-hid.h was initially added on branch v2_1_0./
delete =T & /file bcmxcp.[ch8] was initially added on branch v2_1_0./
delete =T & /file apc-hid.h was initially added on branch v2_1_0./
delete =T & /file netvisionmib.h was initially added on branch v2_1_0./
delete =T & /Initial CVS import from nut testing release 2.0.1-pre4/
delete =T & /file upscode2.8 was initially added on branch v2_1_0./
delete =T & /file pwmib.h was initially added on branch v2_1_0./
delete =T & /file upscode2.c was initially added on branch v2_1_0./
delete =T & /file solis.[ch8] was initially added on branch v2_1_0./
delete =T & /This commit was manufactured by cvs2svn to create branch/
delete =T & /New branch for rst conversion of documentation/
delete =T & /Experimenting with conversion of documentation to reStructuredText:/
delete =T & /Creating branch for eventual release of 2.2.0/
delete =T & /file .* was initially added on branch./
delete =T & /New branch for implementing list functionality in upsc./
delete =T & /Copied from the trunk, to work on the autodetection by the server which drivers are running to allow for future hot(un)plugging of drivers for instance./
delete =T & /Create an 'experimental' branch for changes that should/
delete =T & /Create a branch to track development on new user interfaces/
# Also, branch-deletion commits that have become tags.  The few that
# convey actual information get renamed instead.
delete =T & /Removing old branches/
delete =T & /Remove old branch/
delete =T & /^Merged into the trunk/
delete =T & /Remove old Testing branch/
delete =T & /Remove old -pre release tags, since these are not useful anymore/
delete =T & /removing dead branch metatec-usb/
delete =T & /Branch no longer needed./
delete =T & /Merged branch back into trunk/
delete =T & /Cleaning up old branches in preparation for 2.2.0/
delete =T & /removing obsolete tags/
delete =T & /Cleaning up repository after initial SVN import/
tag emptycommit-357 rename obsolete-branch-deletes
# Delete obsolete branches
delete (reportbuf) obliterate quiet
delete (Tripp_Lite_Omni) obliterate quiet
delete (regex_branch) obliterate quiet
# Delete other scar tissue
delete =C & /Something went wrong in the creation of this branch/ obliterate quiet
tag emptycommit-2175 delete # Empty comment - sets eol-style on Makefile.am
delete =C & /About to create a new rst branch from the trunk/
delete =C & /This branch is from before Arjen's updates to upsc. Moving it out of the way./
delete =C & /Moving branches.Development into trunk./
# Tag location and name fixups
delete =C & /Remove 2.6.0 tag/ obliterate quiet
tag v2.6.0 move /Missing website update for 2.6.0/
delete =T & /^wrong tag name/
tag 2.0.4 rename v2.0.4
delete =T & /re taging 2.2.2/
delete =C & /moving the tags following a last change in Testing/
tag v2.2.2 move /fix HAL_CALLOUT_PATH for distcheck/
tag emptycommit-2582 rename reset-eol
tag emptycommit-3003 rename windows-set-eol
# Known problems:
# 1. Merge code isn't working.
# 2. The first Eaton_SDK commit after the deleteall should have a link
#    back to trunk. The commit "Moving branches/Development into trunk." 
#    (2006-02-16T13:31:43Z!clepple+nut at gmail.com) is a deleteall in 
#    reposurgeon's translation, but in the git-svn conversion and original SVN
#    repository that commit is a no-op (file-wise) that connects/renames the
#    old branches/Development with the new trunk. Both instances of a general
#    problem: I don't have rules for when I should be generating merge 
#    commits.
# 3. Charles thinks .gitignore generation is busted since pre5, but I
#    don't see how. 
# Known problems that are not resolvable.
# 1. set-eol-style operations get lost; see tags windows-set-eol, reset-eol.
#    There's no way to express this semantics in an import-stream file.
# Some known clean merges for testing:
# apcsmart-dev -> trunk: merged in SVN r3211
# (2011-09-12T13:54:55Z!msoltyspl-guest at alioth.debian.org)
# - trunk parent: r3206 (2011-09-12T02:15:45Z!clepple+nut at gmail.com)
# - branch parent: r3210 (2011-09-12T13:04:33Z!msoltyspl-guest at alioth.debian.org
#merge /apcsmart: minor Makefile.am change/|/merge updated apcsmart driver from apcsmart-dev branch/
# SVN r3359 (2011-12-13T13:47:31Z!arnaud.quette at free.fr) on the trunk is a merge
# from nut-scanner_dlopen at r3357, not r3358 as might be inferred from
# the commit message. r3357 = 2011-12-13T09:02:32Z!arnaud.quette at free.fr
# r3357 = /Add the generated nutscan_init.3 Groff manual page to/
# r3359 = /Merge nut-scanner_dlopen branch/

		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>

More information about the Nut-upsdev mailing list