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]

Reply via email to