Charles Lepple <[email protected]>:
> Steps 1-3 are what I was calling Eaton_SDK@n-1

Right, I thought so.  

> > 4. It ends with a single commit, "Re-create Eaton_SDK branch with
> > (hopefully) rights files properties."
> 
> I was assuming this commit would be from the trunk alone - not from the n-1 
> branch. But git-svn seems to have given that commit two parents:
> 
> https://github.com/clepple/nut/network (scroll to Nov. 24th)

Hm.  That makes me wonder if I should be detecting two parent links here as
well.  I'll add that to my to-do list.

> I'll look, but these also seem to be from the CVS era - in which
> case, the CVS-to-SVN conversion might have created one single commit
> from where two should have been.

That seems not unlikely.  The question is how I'm going to deal with
it.  For an an example of the messiness, there's a revision in the
dumpfile that looks like this (text sections have been removed):

Revision-number: 432
Prop-content-length: 173
Content-length: 173

K 7
svn:log
V 64
Patch for spec file, courtesy of William Bell (tested on RHEL4)

K 10
svn:author
V 13
clepple-guest
K 8
svn:date
V 27
2006-06-09T02:42:54.140363Z
PROPS-END

Node-path: branches/Testing/CHANGES
Node-kind: file
Node-action: change
Text-content-length: 145003
Text-content-md5: 4891f7b636fe310141bef10469585914
Text-content-sha1: 104107f973dd766bb059f4e2868dde68072058d2
Content-length: 145003

Node-path: branches/Testing/packaging/RedHat/nut.spec.in
Node-kind: file
Node-action: change
Text-content-length: 11873
Text-content-md5: a0c5db69876abac956eef20cd611f411
Text-content-sha1: 0b0b7b58d31aaa35a580c99ba0f9d24f87bbdb99
Content-length: 11873

Node-path: trunk/CHANGES
Node-kind: file
Node-action: change
Text-content-length: 162960
Text-content-md5: 1964e5c4b98da27203a362f09293dc66
Text-content-sha1: d8e1cd5a5f66664f52d4f523befddf10ae8a3cfe
Content-length: 162960

Node-path: trunk/packaging/RedHat/nut.spec.in
Node-kind: file
Node-action: change
Text-content-length: 11873
Text-content-md5: a0c5db69876abac956eef20cd611f411
Text-content-sha1: 0b0b7b58d31aaa35a580c99ba0f9d24f87bbdb99
Content-length: 11873

Here's how this translates into import-stream markup:

commit refs/heads/root
mark :1917
committer Charles Lepple <[email protected]> 1149820974 +0000
data 64
Patch for spec file, courtesy of William Bell (tested on RHEL4)
from :1630
M 100644 :1914 branches/Testing/CHANGES
M 100644 :1915 branches/Testing/packaging/RedHat/nut.spec.in
M 100644 :1916 trunk/CHANGES
M 100644 :1915 trunk/packaging/RedHat/nut.spec.in

The problem is that there are paths from two different branches here,
'trunk' and 'branches/Testing'. The commit lands on the root branch
because there's no common file prefix on all the paths, which is what 
the branch analysis logic was expecting.

There are only 3 of these mixed commits out of over 3300 in the repo.
But they're a biiig problem.  The correct way to handle them *should*
be to split them up into multiple commits.  But there are headaches 
galore here, starting with a problem as basic as: what imputed Subversion
revision numbers should the fragments get?  There's no answer that doesn't
break assumptions all over the code about Subversion revision numbers 
being monotonically-increasing integers...

This is *nasty*.  I don't know how I'm going to handle it.  I don't think
there's any way to do it gracefully...

> > I have yet to find a clean merge point for any branch.  I think this means 
> > my cleanliness test is wrong.  I'll work on that.
> 
> Finding more merges is still on my todo list. As you have seen, it's not as 
> simple as just reading the commit messages to determine intent. Or, to turn 
> the problem around, are there specific merges that you would expect to be 
> clean? (It always seems that we're editing out a conflict or two after 
> branches diverge.)

I don't know the history well enough. But let's have this conversation again
after I've taken a whack at the mixed-commit problem.

> > I don't know what to do about the svn:eol properties.  git's handling of
> > cross-platfform line termination issues doesn't seem very well documented. 
> 
> IMHO, any line endings other than Unix line endings in this repository are 
> wrong :-) But maybe I'm just bitter that we haven't gotten the Windows_port 
> branch to a state where we can completely cross compile it on a real system.
> 
> Realistically, we should end up with Unix line endings for most of the 
> source, with a few Windows files which have CR/LF. I think Git on Windows 
> shifts the burden to the editors (by storing whatever was put into the 
> repository).

Whereas under Unix git seems to use LF everywhere.  To be revisited later.
Right now I have to figure out some way to cope with those mixed commits,
because that's a showstopper.
-- 
                <a href="http://www.catb.org/~esr/";>Eric S. Raymond</a>

_______________________________________________
Nut-upsdev mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/nut-upsdev

Reply via email to