I'm running into an interesting problem, which I've discussed with Danek
and we thought it might be interesting to bringup the discussion on
tools-discuss.
We're implementing the usr/closed vs. usr/src trees as two separate
repositories. But this means that, obviously, changesets can not span
both trees. In my conversion of ON from Teamware to Mercurial, this
means that I've got single putbacks split up into two disjoint 'hg
commits', one encompassing all the files in usr/src and one for all the
files in usr/closed.
A mild inconvenience, but oh well.
What becomes troublesome in the future, is that people will have to
continue to do this for their putbacks spanning both trees. This is a
mild annoyance we can workaround with a wrapper script like wx or
something. But it becomes more annoying when you move files between
repositories, as the changesets get broken up.
i.e.: if I had a putback with the comment "hello world" that affected
the following files:
usr/closed/foo
usr/closed/bar
usr/src/hello
Then this becomes two changesets, one in usr/closed encompassing "foo"
and "bar" with the comment "hello world" and putback by stevel, and
another in usr/src encompassing "hello" with the comment "hello world"
and putback by stevel. Sometime in the future, we find out
usr/closed/foo is clear to move to usr/src, so we go to move it.
However, we can't rename across repository boundaries... we can recreate
the history/diffs by looping through the history and doing commits with
the right comments/timestamps/authors - but this creates a history with
changesets that look similar (i.e.: timestamps/comments/authors match)
to others, but are distinctly different. So now instead of 1 changeset
encompassing "usr/closed/foo, usr/closed/bar, and usr/src/hello", I have
three changesets, one for each.
:(
Danek's suggestion of per-delta permissions seems to be the best way to
do this... but it sounded like this wasn't feasible given the
distributed nature.
My feeling is that it would actually be better to not carry *any*
history forward in a rename, and any time a file moves across
repositories, it would appear as a new file with no prior history. I
know it's not optimal in that it loses code deltas, but it removes this
strange changeset problem we'd have otherwise... and most files won't
move across boundaries often.
cheers,
steve
--
stephen lau // [EMAIL PROTECTED] | 650.786.0845 | http://whacked.net
opensolaris // solaris kernel development
_______________________________________________
tools-discuss mailing list
[email protected]