* The git mirror is *very* badly screwed up @ 2014-01-24 16:29 Eric S. Raymond 2014-01-24 16:42 ` Andreas Schwab 0 siblings, 1 reply; 42+ messages in thread From: Eric S. Raymond @ 2014-01-24 16:29 UTC (permalink / raw) To: emacs-devel While investigating the git mirror with reposurgeon. I spent most of the last two days chasing some odd behavior in reposurgeon that I thought was a bug. But it turns out not to be a bug at all; rather, there's a kind of malformation in the mirror I've never seen before. Look at this span of commits: reposurgeon% 867? inspect Event 865 =============================================================== commit refs/tags/v0.3.0 mark :860 author Chris Wanstrath <chris@ozmm.org> 1268028778 -0800 committer Chris Wanstrath <chris@ozmm.org> 1268028778 -0800 data 13 Just in case from :858 M 100644 :859 coffee-mode.el Event 867 =============================================================== commit refs/tags/v0.3.0 mark :862 author Chris Wanstrath <chris@ozmm.org> 1268028809 -0800 committer Chris Wanstrath <chris@ozmm.org> 1268028809 -0800 data 6 0.3.0 from :860 M 100644 :861 coffee-mode.el Event 869 =============================================================== commit refs/tags/sml-mode-6.0 mark :864 author Sergei Lebedev <superbobry@gmail.com> 1269545595 -0700 committer Chris Wanstrath <chris@ozmm.org> 1269545595 -0700 data 60 Fix hanging of `coffee-previous-indent` at start of buffer. from :862 M 100644 :863 coffee-mode.el Event 874 =============================================================== commit refs/tags/sml-mode-6.0 mark :869 author tav <tav@espians.com> 1269545212 +0800 committer Chris Wanstrath <chris@ozmm.org> 1269545212 +0800 data 64 Change so that the compiled buffer doesn't open in a new frame. from :862 M 100644 :868 coffee-mode.el This looks pretty normal - until you notice that events 869 and 874, which should be sequential commits, are both parented by event 867. This is badly wrong; either 874 should be parented on 869 (almost certainly correct) or 869 and 874 should have different branch fields. I had wondered why the parent links in the early part of a gitk listing of the Emacs history looked so spaghettilike. Now I think many of them are wrong, and this also explains the persistent problems reposurgeon has been exhibiting with junk lightweight tags that can't be deleted. (The bad links defeat reposurgeon's algorithm for reassigning branch fields.) I'm investigating possible remedies. Because this kind of malformation is easy to spot once you know what to look for, it may be possible for me to write an automated fixer in reposurgeon. Andreas, how exactly are you doing the mirroring from Bazaar? Is there any chance parent links are being scrambled at that point? The other possibility is that parsecvs botched the CVS lift really badly. That wouldn't be good news for me either, because if so cvs-fast-export probably inherited the bug. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> He that would make his own liberty secure must guard even his enemy from oppression: for if he violates this duty, he establishes a precedent that will reach unto himself. -- Thomas Paine ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-24 16:29 The git mirror is *very* badly screwed up Eric S. Raymond @ 2014-01-24 16:42 ` Andreas Schwab 2014-01-24 17:07 ` Eric S. Raymond 0 siblings, 1 reply; 42+ messages in thread From: Andreas Schwab @ 2014-01-24 16:42 UTC (permalink / raw) To: Eric S. Raymond; +Cc: emacs-devel esr@thyrsus.com (Eric S. Raymond) writes: > This looks pretty normal - until you notice that events 869 and 874, > which should be sequential commits, are both parented by event 867. > This is badly wrong; either 874 should be parented on 869 (almost > certainly correct) or 869 and 874 should have different branch fields. These numbers are useless. Use git revisions. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-24 16:42 ` Andreas Schwab @ 2014-01-24 17:07 ` Eric S. Raymond 2014-01-24 17:22 ` Andreas Schwab 0 siblings, 1 reply; 42+ messages in thread From: Eric S. Raymond @ 2014-01-24 17:07 UTC (permalink / raw) To: Andreas Schwab; +Cc: emacs-devel Andreas Schwab <schwab@linux-m68k.org>: > esr@thyrsus.com (Eric S. Raymond) writes: > > > This looks pretty normal - until you notice that events 869 and 874, > > which should be sequential commits, are both parented by event 867. > > This is badly wrong; either 874 should be parented on 869 (almost > > certainly correct) or 869 and 874 should have different branch fields. > > These numbers are useless. Use git revisions. Those aren't bzr revisions, they're marks from a git stream dump. If they're messed up, then the parent links in the live git repo are messed up too. I ran some auditing code on the first 1100 or so commits. This is what came out: wrong parent links under :417 wrong parent links under :503 wrong parent links under :512 wrong parent links under :520 wrong parent links under :528 wrong parent links under :613 wrong parent links under :620 wrong parent links under :624 wrong parent links under :626 wrong parent links under :629 wrong parent links under :637 wrong parent links under :641 wrong parent links under :646 wrong parent links under :651 wrong parent links under :655 wrong parent links under :862 wrong parent links under :894 wrong parent links under :926 wrong parent links under :934 wrong parent links under :939 wrong parent links under :947 wrong parent links under :966 wrong parent links under :975 wrong parent links under :1011 multiple root commits: set(['commit@:676', 'commit@:1017', 'commit@:75', 'commit@:579', 'commit@:39', 'commit@:2']) Bottom line is, the topology is badly screwed up. I already knew about the multiple root commits; I'm fairly sure they relate to these junk branches 21 commit refs/tags/lost+found/d4cd8d7c34cc79dc4abd0fec33cec74afa33e2d0 1723 commit refs/tags/lost+found/12d398afa4d2b77d606b28fe43a2e5200c863419 3595 commit refs/tags/lost+found/e387e14faeea08877c99ddf798d5a4c9f7999c72 3763 commit refs/tags/lost+found/9a1501510c2a842e8597d695fec05563161a84b7 3773 commit refs/tags/lost+found/5cf718038f760d6dc2e21dee3ce98061a975488a which I was going to delete anyway. They seem to consist entirely of dummy test commits by Glen Morris. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-24 17:07 ` Eric S. Raymond @ 2014-01-24 17:22 ` Andreas Schwab 2014-01-24 18:54 ` Eric S. Raymond 0 siblings, 1 reply; 42+ messages in thread From: Andreas Schwab @ 2014-01-24 17:22 UTC (permalink / raw) To: esr; +Cc: emacs-devel "Eric S. Raymond" <esr@thyrsus.com> writes: > Those aren't bzr revisions, they're marks from a git stream dump. That's why they are useless. Tell me the git revisions so I can tell you what went wrong. > Bottom line is, the topology is badly screwed up. I already knew about the > multiple root commits; I'm fairly sure they relate to these junk branches > > 21 commit refs/tags/lost+found/d4cd8d7c34cc79dc4abd0fec33cec74afa33e2d0 > 1723 commit refs/tags/lost+found/12d398afa4d2b77d606b28fe43a2e5200c863419 > 3595 commit refs/tags/lost+found/e387e14faeea08877c99ddf798d5a4c9f7999c72 > 3763 commit refs/tags/lost+found/9a1501510c2a842e8597d695fec05563161a84b7 > 3773 commit refs/tags/lost+found/5cf718038f760d6dc2e21dee3ce98061a975488a > > which I was going to delete anyway. They seem to consist entirely of dummy > test commits by Glen Morris. They also contains rewritten history. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-24 17:22 ` Andreas Schwab @ 2014-01-24 18:54 ` Eric S. Raymond 2014-01-24 20:03 ` Eric S. Raymond ` (2 more replies) 0 siblings, 3 replies; 42+ messages in thread From: Eric S. Raymond @ 2014-01-24 18:54 UTC (permalink / raw) To: Andreas Schwab; +Cc: emacs-devel Andreas Schwab <schwab@linux-m68k.org>: > "Eric S. Raymond" <esr@thyrsus.com> writes: > > > Those aren't bzr revisions, they're marks from a git stream dump. > > That's why they are useless. Tell me the git revisions so I can tell > you what went wrong. The parent commit is bcf9acba5a440b6e6d0b9877b23365d3e47765d7 I have visualized the neighborhood of this commit in bubble.png, which is attached along with an event listing. These make clear enough what is going on. Four commits following :862 - :864, :867, :869, :871 - form a merge bubble which is closed at :873. The problem is that something in the chain of transmission gave both sides of the bubble the same branch ID, which should not ever happen. I think there are several dozen anomalies like this. > > which I was going to delete anyway. They seem to consist entirely of dummy > > test commits by Glen Morris. > > They also contains rewritten history. History of what? Can you be clearer about what, if anything, you think needs to be salvaged from these? -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-24 18:54 ` Eric S. Raymond @ 2014-01-24 20:03 ` Eric S. Raymond 2014-01-24 21:06 ` Andreas Schwab 2014-01-24 21:27 ` Eli Zaretskii 2 siblings, 0 replies; 42+ messages in thread From: Eric S. Raymond @ 2014-01-24 20:03 UTC (permalink / raw) To: Andreas Schwab; +Cc: emacs-devel Eric S. Raymond <esr@thyrsus.com>: > Four commits following :862 - :864, :867, :869, :871 - form a merge > bubble which is closed at :873. The problem is that something in the > chain of transmission gave both sides of the bubble the same branch ID, > which should not ever happen. Should not ever happen, that is, during import. It wouldn't be unusual in a live repo. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-24 18:54 ` Eric S. Raymond 2014-01-24 20:03 ` Eric S. Raymond @ 2014-01-24 21:06 ` Andreas Schwab 2014-01-24 21:27 ` Eli Zaretskii 2 siblings, 0 replies; 42+ messages in thread From: Andreas Schwab @ 2014-01-24 21:06 UTC (permalink / raw) To: esr; +Cc: emacs-devel "Eric S. Raymond" <esr@thyrsus.com> writes: > The parent commit is bcf9acba5a440b6e6d0b9877b23365d3e47765d7 And what's wrong with it? >> They also contains rewritten history. > > History of what? Of the bzr repository. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-24 18:54 ` Eric S. Raymond 2014-01-24 20:03 ` Eric S. Raymond 2014-01-24 21:06 ` Andreas Schwab @ 2014-01-24 21:27 ` Eli Zaretskii 2014-01-25 6:25 ` Eric S. Raymond 2 siblings, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2014-01-24 21:27 UTC (permalink / raw) To: esr; +Cc: schwab, emacs-devel > Date: Fri, 24 Jan 2014 13:54:30 -0500 > From: "Eric S. Raymond" <esr@thyrsus.com> > Cc: emacs-devel@gnu.org > > Andreas Schwab <schwab@linux-m68k.org>: > > "Eric S. Raymond" <esr@thyrsus.com> writes: > > > > > Those aren't bzr revisions, they're marks from a git stream dump. > > > > That's why they are useless. Tell me the git revisions so I can tell > > you what went wrong. > > The parent commit is bcf9acba5a440b6e6d0b9877b23365d3e47765d7 > > I have visualized the neighborhood of this commit in bubble.png, > which is attached along with an event listing. These make clear > enough what is going on. > > Four commits following :862 - :864, :867, :869, :871 - form a merge > bubble which is closed at :873. The problem is that something in the > chain of transmission gave both sides of the bubble the same branch ID, > which should not ever happen. The commits you cited are from the elpa branch. I don't see why you should worry about that, since elpa already switched to git anyway. Its bzr branch is of no use anymore. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-24 21:27 ` Eli Zaretskii @ 2014-01-25 6:25 ` Eric S. Raymond 2014-01-25 7:44 ` Eli Zaretskii 2014-01-25 21:57 ` The git mirror is *very* badly screwed up Stefan Monnier 0 siblings, 2 replies; 42+ messages in thread From: Eric S. Raymond @ 2014-01-25 6:25 UTC (permalink / raw) To: Eli Zaretskii; +Cc: schwab, emacs-devel Eli Zaretskii <eliz@gnu.org>: > > Four commits following :862 - :864, :867, :869, :871 - form a merge > > bubble which is closed at :873. The problem is that something in the > > chain of transmission gave both sides of the bubble the same branch ID, > > which should not ever happen. > > The commits you cited are from the elpa branch. I don't see why you > should worry about that, since elpa already switched to git anyway. > Its bzr branch is of no use anymore. Andreas says I should do nothing with that branch. But if elpa has its own repo now, probably it should be trimmed out on conversion day. Somebody, definitely not me and probably Stefan, should make a policy decision about that. But nobody needs to decide yet. I have a solid week of work to do, maybe ten days, maybe even two weeks, cleaning up other crap in there. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-25 6:25 ` Eric S. Raymond @ 2014-01-25 7:44 ` Eli Zaretskii 2014-01-25 14:06 ` Goals for repo conversion day Eric S. Raymond 2014-01-25 21:57 ` The git mirror is *very* badly screwed up Stefan Monnier 1 sibling, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2014-01-25 7:44 UTC (permalink / raw) To: esr; +Cc: schwab, emacs-devel > Date: Sat, 25 Jan 2014 01:25:52 -0500 > From: "Eric S. Raymond" <esr@thyrsus.com> > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org > > Eli Zaretskii <eliz@gnu.org>: > > > Four commits following :862 - :864, :867, :869, :871 - form a merge > > > bubble which is closed at :873. The problem is that something in the > > > chain of transmission gave both sides of the bubble the same branch ID, > > > which should not ever happen. > > > > The commits you cited are from the elpa branch. I don't see why you > > should worry about that, since elpa already switched to git anyway. > > Its bzr branch is of no use anymore. > > Andreas says I should do nothing with that branch. Isn't that what I said, too? (I didn't see Andreas's message until after writing mine, so you now have 2 independent opinions that say essentially the same.) > But if elpa has its own repo now, probably it should be trimmed out > on conversion day. What do you mean by "trimmed"? If you mean removed from the repository, then I thought you were converting only select branches anyway, and elpa wasn't one of them. Bazaar repositories are just collections of branches, so converting all of them into a git repo is not necessarily the wisest course of action, to say the least. > Somebody, definitely not me and probably Stefan, should make a policy > decision about that. But nobody needs to decide yet. I have a solid > week of work to do, maybe ten days, maybe even two weeks, cleaning > up other crap in there. I actually don't understand why you are doing a separate new conversion, instead of relying on what Andreas already did. AFAIR, there was no serious discussions of this, and certainly no decision (except, perhaps, by you). ^ permalink raw reply [flat|nested] 42+ messages in thread
* Goals for repo conversion day 2014-01-25 7:44 ` Eli Zaretskii @ 2014-01-25 14:06 ` Eric S. Raymond 2014-01-25 14:42 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 42+ messages in thread From: Eric S. Raymond @ 2014-01-25 14:06 UTC (permalink / raw) To: Eli Zaretskii; +Cc: schwab, emacs-devel Eli Zaretskii <eliz@gnu.org>: > I actually don't understand why you are doing a separate new > conversion, instead of relying on what Andreas already did. AFAIR, > there was no serious discussions of this, and certainly no decision > (except, perhaps, by you). I am in fact relying on what Andreas already did, not re-lifting the CVS or Bazaar histories. But it has some significant problems: 1. Unlifted Bazaar and CVS commit references. 2. CVS commit cliques that should have been coalesced but were not, probably because the time window was defaulted too small when parsecvs was run. (Very often these seem to be a pairs of a change and its ChangeLog description with an empty comment.) 3. Multiple roots. Two of the multiples are emacs and elpa, but others are junk lost+found branches which should be carefully inspected and then (probably) removed. 4. Obsolete tags (very minor problem, unlike the previous three easily fixed in git itself, but I might as well do it while larger cleanups are in progress). 5. Unconverted .bzrignores (and possibly .cvsignores) in the history. Andreas is not to blame for these problems; the tools available to him were deficient in a number of respects (I had not yet written reposurgeon at the time of the move to Bazaar). These are all normal issues which I've seen before in over a dozen large conversions. But I want Emacs to have a really high-quality conversion. It is a project for the ages, one of the great artifacts of hacker culture, and I feel the history deserves the kind of careful cleaning and restoration one would give to an Old Master painting. My quality goals for it include: (a) Seamless history browsing. A person looking at the development of the code should not be distracted by artifacts of VCS changes. This means clean, properly unified changesets all the way back, properly converted ignore files all the way back, and commit references that are not just opaque cookies left over from previous VCSes. (b) Information preservation for any future move to another VCS. The main implication of this goal is not replacing fossil references with git hashes, as these would present the same problems then that Bazaar references do now. (c) Cryptosigning so that future release integrity is protected and historical release reconstructions can be trusted (that is, assuming we don't believe the code history has already been corrupted). (d) Avoidance of metadata representations that are easily stripped or scrambled if someone gets momentarily forgetful in the future. This is why I don't want to rely on lightweight tags or git notes. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 14:06 ` Goals for repo conversion day Eric S. Raymond @ 2014-01-25 14:42 ` Eli Zaretskii 2014-01-25 14:46 ` Eli Zaretskii ` (2 more replies) 2014-01-25 16:09 ` Andreas Schwab 2014-01-25 17:01 ` Thien-Thi Nguyen 2 siblings, 3 replies; 42+ messages in thread From: Eli Zaretskii @ 2014-01-25 14:42 UTC (permalink / raw) To: esr; +Cc: schwab, emacs-devel > Date: Sat, 25 Jan 2014 09:06:38 -0500 > From: "Eric S. Raymond" <esr@thyrsus.com> > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org > > 1. Unlifted Bazaar and CVS commit references. A mapping file would be more than appropriate for that. The number of references is below 200, which is small. This was suggested already, and I don't think anyone objected vociferously enough for us to consider that as a non-option. And, btw, I'm still not sure you have uncovered all of those references, since the numbers you posted were significantly smaller than what I get using simple bzr commands. So it could be that you will be investing a non-trivial effort to do a partial job. > 2. CVS commit cliques that should have been coalesced but were not, > probably because the time window was defaulted too small when parsecvs > was run. (Very often these seem to be a pairs of a change and its > ChangeLog description with an empty comment.) I'd say leave that alone. When Emacs used CVS, it was customary to commit each file as a separate CVS command (RMS actually asked for that), and moreover, have the ChangeLog be committed once for several unrelated changes in the same directory. So you will be unable to fix this without a lot of manual work, and for what? we've been living with this in bzr for several years, with no one complaining. > 3. Multiple roots. Two of the multiples are emacs and elpa, but others > are junk lost+found branches which should be carefully inspected and > then (probably) removed. Leave them alone, they don't bother anyone. Removal can be deferred for later, if we ever feel it to be necessary. > 4. Obsolete tags (very minor problem, unlike the previous three easily > fixed in git itself, but I might as well do it while larger cleanups > are in progress). Since this is minor, it isn't not worth the trouble, IMO. > 5. Unconverted .bzrignores (and possibly .cvsignores) in the history. Why is that a problem? > Andreas is not to blame for these problems; the tools available to him > were deficient in a number of respects (I had not yet written reposurgeon at > the time of the move to Bazaar). These are all normal issues > which I've seen before in over a dozen large conversions. The repository converted by Andreas has one significant advantage: it is being actively used for many months. Personally, I trust that more than any fancy new conversions, especially if we have to switch to git without a prolonged interregnum, during which both bzr and git are used (which is probably highly undesirable, if even possible). > My quality goals for it include: > > (a) Seamless history browsing. A person looking at the development of > the code should not be distracted by artifacts of VCS changes. This > means clean, properly unified changesets all the way back, properly > converted ignore files all the way back, and commit references that > are not just opaque cookies left over from previous VCSes. > > (b) Information preservation for any future move to another VCS. The > main implication of this goal is not replacing fossil references with > git hashes, as these would present the same problems then that Bazaar > references do now. > > (c) Cryptosigning so that future release integrity is protected and > historical release reconstructions can be trusted (that is, assuming > we don't believe the code history has already been corrupted). > > (d) Avoidance of metadata representations that are easily stripped or > scrambled if someone gets momentarily forgetful in the future. This > is why I don't want to rely on lightweight tags or git notes. Noble goals all of them, but I'm skeptical as to whether they can be achieved in practice. What's worse, we won't know whether some issues remained until much later. So with all due respect, I question the need for this elaborate work, especially since you evidently know very little about the VCS related practices around here, certainly during the bzr age. Comments and opinions by others are welcome. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 14:42 ` Eli Zaretskii @ 2014-01-25 14:46 ` Eli Zaretskii 2014-01-25 16:01 ` Eric S. Raymond 2014-01-25 19:32 ` Goals for repo conversion day Glenn Morris 2 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2014-01-25 14:46 UTC (permalink / raw) To: esr; +Cc: schwab, emacs-devel > Date: Sat, 25 Jan 2014 16:42:11 +0200 > From: Eli Zaretskii <eliz@gnu.org> > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org > > > Date: Sat, 25 Jan 2014 09:06:38 -0500 > > From: "Eric S. Raymond" <esr@thyrsus.com> > > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org > > > > 1. Unlifted Bazaar and CVS commit references. > > A mapping file would be more than appropriate for that. The number of > references is below 200, which is small. ^^^^^^^^^ Sorry, that number was wrong. The actual one is slightly above 300, still very small relative to the 116 thousand revisions we have. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 14:42 ` Eli Zaretskii 2014-01-25 14:46 ` Eli Zaretskii @ 2014-01-25 16:01 ` Eric S. Raymond 2014-01-25 16:15 ` Paul Eggert 2014-01-25 17:15 ` Eli Zaretskii 2014-01-25 19:32 ` Goals for repo conversion day Glenn Morris 2 siblings, 2 replies; 42+ messages in thread From: Eric S. Raymond @ 2014-01-25 16:01 UTC (permalink / raw) To: Eli Zaretskii; +Cc: schwab, emacs-devel Eli Zaretskii <eliz@gnu.org>: > > Date: Sat, 25 Jan 2014 09:06:38 -0500 > > From: "Eric S. Raymond" <esr@thyrsus.com> > > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org > > > > 1. Unlifted Bazaar and CVS commit references. > > A mapping file would be more than appropriate for that. The number of > references is below 200, which is small. This was suggested already, > and I don't think anyone objected vociferously enough for us to > consider that as a non-option. *I* object to this. On the grounds that I've been through this dance many times before, and know that such out-of-band representations generally cost more hassle and deliver less than people expect when they think them up. > And, btw, I'm still not sure you have uncovered all of those > references, since the numbers you posted were significantly smaller > than what I get using simple bzr commands. So it could be that you > will be investing a non-trivial effort to do a partial job. I'm not yet certain I have all the CVS references, but I'm pretty sure I have all the Bazaar ones now. Your last feedback led me to improve my search scripts. I'll do another pass before I'm finished. > > 2. CVS commit cliques that should have been coalesced but were not, > > probably because the time window was defaulted too small when parsecvs > > was run. (Very often these seem to be a pairs of a change and its > > ChangeLog description with an empty comment.) > > I'd say leave that alone. When Emacs used CVS, it was customary to > commit each file as a separate CVS command (RMS actually asked for > that), and moreover, have the ChangeLog be committed once for several > unrelated changes in the same directory. So you will be unable to fix > this without a lot of manual work, and for what? we've been living > with this in bzr for several years, with no one complaining. Much less manual work than you think. Reposurgeon was designed with this kind of fixup in mind. While it does take some human judgment to apply the tool properly, the process does not involve grovelling through every commit by hand. It's a tolerable amount of effort even for a repository this large - and if it weren't, I'd add capability to reposurgeon until it became so. As for nobody complaining...this is because your standards are low, and your standards are low because the tools historically used for these conversions were mostly shoddy and badly designed. Windows users don't complain about Notepad, either, because they don't know any better - but that doesn't make Emacs a waste of time. > > 3. Multiple roots. Two of the multiples are emacs and elpa, but others > > are junk lost+found branches which should be carefully inspected and > > then (probably) removed. > > Leave them alone, they don't bother anyone. Removal can be deferred > for later, if we ever feel it to be necessary. See "low standards", above. > > 4. Obsolete tags (very minor problem, unlike the previous three easily > > fixed in git itself, but I might as well do it while larger cleanups > > are in progress). > > Since this is minor, it isn't not worth the trouble, IMO. By itself, no, it wouldn't be. > > 5. Unconverted .bzrignores (and possibly .cvsignores) in the history. > > Why is that a problem? See "seamless history browsing". > > Andreas is not to blame for these problems; the tools available to him > > were deficient in a number of respects (I had not yet written reposurgeon at > > the time of the move to Bazaar). These are all normal issues > > which I've seen before in over a dozen large conversions. > > The repository converted by Andreas has one significant advantage: it > is being actively used for many months. Personally, I trust that more > than any fancy new conversions, especially if we have to switch to git > without a prolonged interregnum, during which both bzr and git are > used (which is probably highly undesirable, if even possible). You appear to have forgotten some important aspects of the plan I posted. Andreas's work isn't going to be thrown away, and there isn't going to be any lengthy interregnum. The way this is working is that I am building a reposurgeon script that expresses a sequence of edits to Andreas's mirror. On conversion day we will apply that script once, after which everyone can re-clone and go on as before. > Noble goals all of them, but I'm skeptical as to whether they can be > achieved in practice. What's worse, we won't know whether some issues > remained until much later. I know they can be achieved in practice because I have achieved them before, many times. Most recently in the conversion of the groff history, but you could check with the maintainers of NUT or Hercules or robotfindskitten or Roundup as well. Or the Blender Foundation - blender is a big reposurgeon conversion done by someone else. If we find any problems afterwards, I have the tools to fix them. Part of my commitment is to do that. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 16:01 ` Eric S. Raymond @ 2014-01-25 16:15 ` Paul Eggert 2014-01-25 17:15 ` Eli Zaretskii 1 sibling, 0 replies; 42+ messages in thread From: Paul Eggert @ 2014-01-25 16:15 UTC (permalink / raw) To: esr; +Cc: emacs-devel Eric S. Raymond wrote: > If we find any problems afterwards, I have the tools to fix them. Part of > my commitment is to do that. Thanks, this part is key. And although I've also suggested shortcuts, if you can do the job more completely, so much the better. It'll be nice to have a repository that's stainless steel instead of earthenware. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 16:01 ` Eric S. Raymond 2014-01-25 16:15 ` Paul Eggert @ 2014-01-25 17:15 ` Eli Zaretskii 2014-01-25 21:01 ` Eric S. Raymond 1 sibling, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2014-01-25 17:15 UTC (permalink / raw) To: esr; +Cc: schwab, emacs-devel > Date: Sat, 25 Jan 2014 11:01:24 -0500 > From: "Eric S. Raymond" <esr@thyrsus.com> > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org > > Eli Zaretskii <eliz@gnu.org>: > > > Date: Sat, 25 Jan 2014 09:06:38 -0500 > > > From: "Eric S. Raymond" <esr@thyrsus.com> > > > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org > > > > > > 1. Unlifted Bazaar and CVS commit references. > > > > A mapping file would be more than appropriate for that. The number of > > references is below 200, which is small. This was suggested already, > > and I don't think anyone objected vociferously enough for us to > > consider that as a non-option. > > *I* object to this. On the grounds that I've been through this dance > many times before, and know that such out-of-band representations > generally cost more hassle and deliver less than people expect when > they think them up. With all due respect, this is not necessarily good enough. You have come to the project offering help, but no one gave you the right to make unilateral decisions about these issues. It won't be you who will need to use this data in the years to come. And whatever the other projects which you converted in the past, I doubt that any of them had as long and complex history as Emacs. > > And, btw, I'm still not sure you have uncovered all of those > > references, since the numbers you posted were significantly smaller > > than what I get using simple bzr commands. So it could be that you > > will be investing a non-trivial effort to do a partial job. > > I'm not yet certain I have all the CVS references, but I'm pretty sure > I have all the Bazaar ones now. Your last feedback led me to improve > my search scripts. I'll do another pass before I'm finished. I'd appreciate if you posted the final list of the references, when you are finished with it, so we could have some QA. > > > 2. CVS commit cliques that should have been coalesced but were not, > > > probably because the time window was defaulted too small when parsecvs > > > was run. (Very often these seem to be a pairs of a change and its > > > ChangeLog description with an empty comment.) > > > > I'd say leave that alone. When Emacs used CVS, it was customary to > > commit each file as a separate CVS command (RMS actually asked for > > that), and moreover, have the ChangeLog be committed once for several > > unrelated changes in the same directory. So you will be unable to fix > > this without a lot of manual work, and for what? we've been living > > with this in bzr for several years, with no one complaining. > > Much less manual work than you think. Reposurgeon was designed with > this kind of fixup in mind. While it does take some human judgment > to apply the tool properly, the process does not involve grovelling > through every commit by hand. It's a tolerable amount of effort > even for a repository this large - and if it weren't, I'd add > capability to reposurgeon until it became so. The problem is not the size of the repository alone. The problem is that different portions of a single changeset were committed many revisions apart. And I don't even understand (and you didn't explain) how will you handle the situation I described above, where a single commit checked in ChangeLog changes for several unrelated commits in the same directory. Which commit clique will you assign the ChangeLog commit to? The devil is in the details, but you haven't provided any details about your plans in this matter. Would you please do that? > As for nobody complaining...this is because your standards are low, > and your standards are low because the tools historically used for these > conversions were mostly shoddy and badly designed. Windows users don't > complain about Notepad, either, because they don't know any better - > but that doesn't make Emacs a waste of time. Let's agree to keep such low-blow arguments out of this discussion. They aren't fair, and aren't constructive. Let's instead assume that each side knows what they are doing and what they are talking about. > > > 3. Multiple roots. Two of the multiples are emacs and elpa, but others > > > are junk lost+found branches which should be carefully inspected and > > > then (probably) removed. > > > > Leave them alone, they don't bother anyone. Removal can be deferred > > for later, if we ever feel it to be necessary. > > See "low standards", above. See my response above. > > > 5. Unconverted .bzrignores (and possibly .cvsignores) in the history. > > > > Why is that a problem? > > See "seamless history browsing". Sorry, I don't understand. Please elaborate: what is the relation between these ignore files and history browsing? > > The repository converted by Andreas has one significant advantage: it > > is being actively used for many months. Personally, I trust that more > > than any fancy new conversions, especially if we have to switch to git > > without a prolonged interregnum, during which both bzr and git are > > used (which is probably highly undesirable, if even possible). > > You appear to have forgotten some important aspects of the plan I > posted. Andreas's work isn't going to be thrown away, and there isn't > going to be any lengthy interregnum. > > The way this is working is that I am building a reposurgeon script that > expresses a sequence of edits to Andreas's mirror. On conversion day > we will apply that script once, after which everyone can re-clone and > go on as before. Sorry, I don't see how this changes anything. You are still going to make deep changes to the existing mirror. > > Noble goals all of them, but I'm skeptical as to whether they can be > > achieved in practice. What's worse, we won't know whether some issues > > remained until much later. > > I know they can be achieved in practice because I have achieved them before, > many times. Most recently in the conversion of the groff history, but > you could check with the maintainers of NUT or Hercules or robotfindskitten > or Roundup as well. Or the Blender Foundation - blender is a big reposurgeon > conversion done by someone else. Sorry, been there done that. The CVS to bzr conversion also seemed flawless until much later. > If we find any problems afterwards, I have the tools to fix them. Part of > my commitment is to do that. I don't think any of us can in good faith give such promises. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 17:15 ` Eli Zaretskii @ 2014-01-25 21:01 ` Eric S. Raymond 2014-01-26 17:32 ` Eli Zaretskii 0 siblings, 1 reply; 42+ messages in thread From: Eric S. Raymond @ 2014-01-25 21:01 UTC (permalink / raw) To: Eli Zaretskii; +Cc: schwab, emacs-devel Eli Zaretskii <eliz@gnu.org>: > > *I* object to this. On the grounds that I've been through this dance > > many times before, and know that such out-of-band representations > > generally cost more hassle and deliver less than people expect when > > they think them up. > > With all due respect, this is not necessarily good enough. You have > come to the project offering help, but no one gave you the right to > make unilateral decisions about these issues. It won't be you who > will need to use this data in the years to come. And whatever the > other projects which you converted in the past, I doubt that any of > them had as long and complex history as Emacs. Your doubt is justified. None of my previous conversions have been quite this complex. The only conversion I have heard of that might have been hairier was that of Blender, which was done by other people using my tools. But as the size and complexity of the repo goes up, so does the value of in-band references actually working. Emacs is an exceptionally *bad* case for relying solely on an external reference map, not an exceptionally good one. > I'd appreciate if you posted the final list of the references, when > you are finished with it, so we could have some QA. Here is the current list. It is not final because I expect to resolve at least a few more of these, and it is still possible more fossil references could turn up in odd places. ChangeLog: revno 108687 -> 2012-06-22T21:17:42Z!eggert@cs.ucla.edu revno:105007 -> 2011-07-07T04:21:49Z!handa@m17n.org r112148 -> 2013-03-26T22:08:58Z!aidalgol@no8wireless.co.nz revno:108936 -> 2012-07-07T10:34:37Z!cyd@gnu.org revision 106831 -> 2012-01-10T08:27:22Z!cyd@gnu.org revision 1.59 CVS-1.61 1.61 in CVS revno:106608 -> 2011-12-04T17:13:01Z!lekktu@gmail.com revno 100789 -> 2010-07-12T05:26:57Z!handa@etlken rev. 110325 -> 2012-10-01T18:10:29Z!cyd@gnu.org r115470 -> 2013-12-11T19:01:44Z!tzz@lifelogs.com of 2012-12-20 (r111276) -> 2012-12-20T11:15:38Z!michael.albinus@gmx.de 2013-12-11 (r115470) -> 2013-12-11T19:01:44Z!tzz@lifelogs.com revno:114543 -> 2013-10-07T01:28:34Z!sdl.web@gmail.com revno:113793 -> 2013-08-11T00:07:48Z!lekktu@gmail.com revno:113117 -> 2013-06-21T12:24:37Z!lekktu@gmail.com r114834 -> 2013-10-29T02:50:24Z!dancol@dancol.org revno:113431 -> 2013-07-16T11:41:06Z!jan.h.d@swipnet.se revno:113147 -> 2013-06-23T20:29:18Z!lekktu@gmail.com revno 101897 -> 2010-10-10T14:43:05Z!dann@ics.uci.edu revno 101876 -> 2010-10-09T18:31:12Z!rgm@gnu.org revno 100306 -> 2010-05-15T21:21:30Z!raeburn@raeburn.org revno 108687 -> 2012-06-22T21:17:42Z!eggert@cs.ucla.edu revision 114614 (commit of 2013-10-10) -> 2013-10-10T19:15:33Z!eggert@cs.ucla.edu revno:113431 -> 2013-07-16T11:41:06Z!jan.h.d@swipnet.se revno 101949 -> 2010-10-13T14:50:06Z!lekktu@gmail.com revno:103013 -> 2011-01-28T22:12:05Z!monnier@iro.umontreal.ca rev 102609 -> 2010-12-08T08:09:27Z!kfogel@red-bean.com revno 101688 -> 2010-09-30T02:53:26Z!lekktu@gmail.com revno 101459 -> 2010-09-17T13:30:30Z!monnier@iro.umontreal.ca revnos 101381 -> 2010-09-08T14:42:54Z!michael.albinus@gmx.de 101422 -> 2010-09-13T15:17:01Z!michael.albinus@gmx.de rev 100010 -> 2010-04-23T16:26:11Z!monnier@iro.umontreal.ca revno:109911 -> 2012-09-07T04:15:56Z!dgutov@yandex.ru 109621 -> 2012-08-15T03:33:55Z!monnier@iro.umontreal.ca revno:88805 -> 2008-06-21T01:38:39Z!monnier@iro.umontreal.ca revno:88864 -> 2008-06-22T13:57:28Z!monnier@iro.umontreal.ca revno:89810 -> 2008-07-31T05:33:56Z!dann@ics.uci.edu revision 106664 -> 2011-12-11T14:49:48Z!vincentb1@users.sourceforge.net revno:105285 -> 2011-07-19T15:01:49Z!larsi@gnus.org revno:104787 (2011-06-30) -> 2011-06-30T01:09:13Z!larsi@gnus.org revno:104988 (2011-07-06) -> 2011-07-06T15:49:19Z!larsi@gnus.org revno:101730 (2010-10-02) -> 2010-10-02T13:21:43Z!michael.albinus@gmx.de revno:103877 (2011-04-09) -> 2011-04-09T20:28:01Z!cyd@stupidchicken.com revno:99634.2.463 (2010-10-09) -> 2010-10-09T04:09:19Z!cyd@stupidchicken.com revno:101913 -> 2010-10-11T23:57:49Z!lekktu@gmail.com revno 95090 dated 2009-03-06 -> 2009-03-06T07:51:52Z!handa@m17n.org revno 101757 -> 2010-10-03T13:59:56Z!dann@ics.uci.edu revno 82799 (2007-11-30) -> 2007-11-30T13:57:21Z!jasonr@gnu.org 2010-07-29 (revno 100939) -> 2010-07-29T16:49:59Z!jan.h.d@swipnet.se revno 100928 -> 2010-07-29T03:25:08Z!dann@ics.uci.edu revnos 100982 -> 2010-08-05T23:15:24Z!dann@ics.uci.edu 100984 -> 2010-08-05T23:34:12Z!dann@ics.uci.edu revno 99854.1.6 -> 2010-04-17T12:33:05Z!eliz@gnu.org revno 99950 -> 2010-04-20T13:31:28Z!eliz@gnu.org revno:100708 -> 2010-07-04T07:50:25Z!dann@ics.uci.edu revno:110851 -> 2012-11-09T04:10:16Z!monnier@iro.umontreal.ca revision 1.1 -> the initial version cvs-1.12.1 Revision 1.694 -> 2004-05-20T23:29:24Z!teirllm@auburn.edu revno 108687 -> 2012-06-22T21:17:42Z!eggert@cs.ucla.edu revno:108521 -> 2012-06-08T08:44:45Z!eliz@gnu.org revno:108341 -> 2012-05-22T16:20:27Z!eggert@cs.ucla.edu 2011-08-30 (revision 105619) -> 2011-08-30T17:32:44Z!eliz@gnu.org 2011-08-30 (revision 105619) -> 2011-08-30T17:32:44Z!eliz@gnu.org revision 84777 on 2008-02-22 -> 2008-02-22T17:42:09Z!monnier@iro.umontreal.ca revno:102982 (2011-01-26) -> 2011-01-26T20:02:07Z!monnier@iro.umontreal.ca revision 104625 -> 2011-06-18T18:49:19Z!cyd@stupidchicken.com revision 104134 -> 2011-05-06T07:13:19Z!eggert@cs.ucla.edu revno:20537 (1998-01-01) -> 1998-01-01T02:27:27Z!rms@gnu.org revno:87605 (2008-05-14) -> 2008-05-14T01:40:23Z!handa@m17n.org revno:50135 (2003-03-16) -> 2003-03-16T20:45:46Z!storm@cua.dk revno:87605 (2008-05-14) -> 2008-05-14T01:40:23Z!handa@m17n.org revno:34925 (2000-12-29) -> 2000-12-29T14:24:09Z!gerd@gnu.org revno:20537 (1998-01-01) -> 1998-01-01T02:27:27Z!rms@gnu.org revno:25013 (1999-07-21) -> 1999-07-21T21:43:52Z!gerd@gnu.org revno:43563.1.17 (2002-03-01) -> 2002-03-01T01:17:24Z!handa@m17n.org revno:84043 (2008-02-1) -> 2008-02-01T16:01:31Z!miles@gnu.org revno:25356 (1999-08-21) -> 1999-08-21T19:30:21Z!gerd@gnu.org revno:20870 (1998-02-08) -> 1998-02-08T21:33:56Z!rms@gnu.org revno:36704 (2001-03-09) -> 2001-03-09T18:41:50Z!gerd@gnu.org revno:32591 (2000-10-17) -> 2000-10-17T16:08:18Z!gerd@gnu.org revno:25013 (1999-07-21) -> 1999-07-21T21:43:52Z!gerd@gnu.org revno:43563.1.32 (2002-03-01) -> 2002-03-01T01:17:24Z!handa@m17n.org revno:14998 (1996-04-12) -> 1996-04-12T06:01:29Z!rms@gnu.org revno:86854 (2008-04-19) -> 2008-04-19T19:30:53Z!monnier@iro.umontreal.ca revno:20569 (1998-01-02) -> 1998-01-02T21:29:48Z!rms@gnu.org revno 103623 -> 2011-03-11T07:24:21Z!eggert@cs.ucla.edu revision 1.32 of saveplace.el -> saveplace.el at 2005-05-29T08:36:26Z!rms@gnu.org revision 1.30 of saveplace.el -> saveplace.el at 2005-04-10T23:32:00Z!rms@gnu.org version 1.100 -> 2007-12-06T19:56:41Z!deego@gnufans.org erc.el 1.39 -> 2007-12-01T03:41:01Z!rgm@gnu.org revision 1.104, made on 2000-05-21 -> 2000-05-21T17:04:47Z!fx@gnu.org 2007-07-18 (revision 1.51) revision 1.90 (commitid mWoPbju3pgNotDps) -> 2007-07-13T18:16:17Z!kfogel@red-bean.com revision 1.117 -> 2008-10-29T17:42:49Z!cyd@stupidchicken.com 1.85 1.878 1.113 1.244 1.34 1.233 rev 1.82 -> 1994-08-03T07:39:00Z!rms@gnu.org 1.70 (Jan 5 changes) -> 1994-01-03T07:21:12Z!rms@gnu.org r99212 -> 2009-12-29T07:22:00Z!nickrob@snap.net.nz rev. 110325 -> 2012-10-01T18:10:29Z!cyd@gnu.org revno r112320 -> 2013-04-18T00:12:33Z!monnier@iro.umontreal.ca Change comments: bzrs 111300 -> 2012-12-22T19:57:35Z!rgm@gnu.org 111840 -> 2013-02-21T02:42:30Z!eggert@cs.ucla.edu revision 111647 -> 2013-02-01T07:23:18Z!dmantipov@yandex.ru revno:11026 -> 1995-03-15T21:55:37Z!kwzh@gnu.org revno:88864 -> 2008-06-22T13:57:28Z!monnier@iro.umontreal.ca revno:88805 -> 2008-06-21T01:38:39Z!monnier@iro.umontreal.ca revno:89810 -> 2008-07-31T05:33:56Z!dann@ics.uci.edu revision 10835 -> 1995-02-25T20:57:45Z!rms@gnu.org revision 106726 -> 2011-12-23T14:51:51Z!eliz@gnu.org revision 87208 -> 2008-05-02T07:12:59Z!esr@snark.thyrsus.com revision 84777 on 2008-02-22 -> 2008-02-22T17:42:09Z!monnier@iro.umontreal.ca revno:99634.2.463 (2010-10-09) -> 2010-10-09T04:09:19Z!cyd@stupidchicken.com revno:101913 (2010-10-12). -> 2010-10-11T23:57:49Z!lekktu@gmail.com revno:20537 (1998-01-01) -> 1998-01-01T02:27:27Z!rms@gnu.org revno:87605 (2008-05-14) -> 2008-05-14T01:40:23Z!handa@m17n.org revno:87605 (2008-05-14) -> 2008-05-14T01:40:23Z!handa@m17n.org revno:34925 (2000-12-29) -> 2000-12-29T14:24:09Z!gerd@gnu.org revno:20537 (1998-01-01) -> 1998-01-01T02:27:27Z!rms@gnu.org revno:25013 (1999-07-21) -> 1999-07-21T21:43:52Z!gerd@gnu.org revno:43563.1.16 (2002-03-01) -> 2002-03-01T01:16:34Z!handa@m17n.org revno:84043 (2008-02-1) -> 2008-02-01T16:01:31Z!miles@gnu.org revno:20870 (1998-02-08) -> 1998-02-08T21:33:56Z!rms@gnu.org revno:36704 (2001-03-09) -> 2001-03-09T18:41:50Z!gerd@gnu.org revno:32591 (2000-10-17) -> 2000-10-17T16:08:18Z!gerd@gnu.org revno:25356 (1999-08-21) -> 1999-08-21T19:30:21Z!gerd@gnu.org revno:14998 (1996-04-12) -> 1996-04-12T06:01:29Z!rms@gnu.org revno:86854 (2008-04-19) -> 2008-04-19T19:30:53Z!monnier@iro.umontreal.ca revno:20569 (1998-01-02) -> 1998-01-02T21:29:48Z!rms@gnu.org r100577 -> 2010-06-10T12:56:11Z!michael.albinus@gmx.de CVS rev 1.49, 2001-09-12 CVS rev 1.47, 2003/01/27 CVS r1.35 revno 95090 dated 2009-03-06 -> 2009-03-06T07:51:52Z!handa@m17n.org 2005-02-15 (revno 60055) -> 2005-02-15T23:19:26Z!jasonr@gnu.org r111320 -> 2012-12-24T15:56:17Z!eliz@gnu.org revno 99854.1.6 -> 2010-04-17T12:33:05Z!eliz@gnu.org revno 99950 -> 2010-04-20T13:31:28Z!eliz@gnu.org revision 99649 -> 2010-03-12T16:34:27Z!eliz@gnu.org rev 99649 -> 2010-03-12T16:34:27Z!eliz@gnu.org rev 99553 -> 2010-02-24T22:07:26Z!bob@gnu.org revno 99212 -> 2009-12-29T07:22:00Z!nickrob@snap.net.nz revision 94343 -> 2009-01-30T13:06:07Z!lekktu@gmail.com revision 1.32 -> 2005-05-29T08:36:26Z!rms@gnu.org revision 1.30 -> 2005-04-10T23:32:00Z!rms@gnu.org version 1.100 -> 2007-12-06T19:56:41Z!deego@gnufans.org r1.135 -> 2009-10-10T21:48:22Z!kfogel@red-bean.com rev 1.114 1.878 revision 1.117 -> 2008-10-29T17:42:49Z!cyd@stupidchicken.com rev 1.14395 revision 1.56 3.85 1.17 revision 1.69 revision 1.1 -> initial revision rev 1.5 revisions 1.40 1.41 1.39-> 2007-12-01T03:41:01Z!rgm@gnu.org revision 1.104 revision 1.51 revision 1.90 (commitid mWoPbju3pgNotDps) -> 2007-07-13T18:16:17Z!kfogel@red-bean.com revision 1.1509 revision 7.8 CVS v1.12.8 and 1.12.9 cvs-1.12.1 1.103 HEAD (1.72) v1.275 1.58 v1.5046 v1.5039 rev 1.82 -> 1994-08-03T07:39:00Z!rms@gnu.org rev. 1.761 revision 1.3831 1.3832 revision 1.12 revision 1.13 revision 1.14 revision 1.15 The ChangeLog references are not attributed to individual files because they moved as the files rotated. Some of the remaining CVS references cannot be reseolved within the Emacs history; they actually point to other projects. One particularly fertile source of these, which I think accounts for this group 1.85 1.878 1.113 1.244 1.34 1.233 in ChangeLogs, is the CVS history of the erc files before they were merged into Emacs. > The problem is not the size of the repository alone. The problem is > that different portions of a single changeset were committed many > revisions apart. And I don't even understand (and you didn't explain) > how will you handle the situation I described above, where a single > commit checked in ChangeLog changes for several unrelated commits in > the same directory. Which commit clique will you assign the ChangeLog > commit to? The devil is in the details, but you haven't provided any > details about your plans in this matter. Would you please do that? I see we are using the term "changeset" slightly differently, and this has produced some confusion. The uncoalesced changesets I am looking for are not defined by "all share the same ChangeLog entry" (though usually that is the case). You are quite right that attempting to coalesce all of those would produce perverse results in cases of several unrelated commits. Fortunately, most of the unresolved cliques are not like this. The usual case, in this conversion as in others I've seen (such as groff) is that an unresolved clique consists of one or several closely related changes and one ChangeLog modification, without intervening commits by others. This is what I think of as a changeset. Normally tools such as parsecvs collect these into single changesets. But these converters have a maximum coalescence window. If such a span of commits took place over a longer period of time than the window, it won't be coalesced. The problem is that the default time windows on these converters are set small in order to avoid false-positive matches. Experience has taught me that this is a mostly imaginary problem; the window would have been better set to infinity in almost every case I have seen. The result of a too-small commit window is that some genuine changesets (not the edge case you are pointing at) do not get coalesced. In your edge case, the least bad thing to do is accept that the ChangeLog entry must remain its own changeset; sometimes you can get partial coalescence in the file changes. When there is CVS in the history, a standard part of my cleanup is basically to run a coalescence pass with a very long window. Semi-automating this operation, so it (a) doesn't have to be done manually, but (b) is easily checked by skilled human judgment, was one of the purposes for which I originally wrote reposurgeon. Fortunately the bad cases aren't actually very common. > > > > 5. Unconverted .bzrignores (and possibly .cvsignores) in the history. > > > > > > Why is that a problem? > > > > See "seamless history browsing". > > Sorry, I don't understand. Please elaborate: what is the relation > between these ignore files and history browsing? In a properly done conversion, file ignores don't abruptly stop working bevcause you browsed back past the point of conversion and what should be .gitignore files are nmow .bzrignores or .cvsignores. > > The way this is working is that I am building a reposurgeon script that > > expresses a sequence of edits to Andreas's mirror. On conversion day > > we will apply that script once, after which everyone can re-clone and > > go on as before. > > Sorry, I don't see how this changes anything. You are still going to > make deep changes to the existing mirror. Yes, for arguable values of "deep". As Paul Eggert (I think) said, I'm after a result that is stainless steel rather than earthenware. With ugly cracks in it. > > > Noble goals all of them, but I'm skeptical as to whether they can be > > > achieved in practice. What's worse, we won't know whether some issues > > > remained until much later. > > > > I know they can be achieved in practice because I have achieved them before, > > many times. Most recently in the conversion of the groff history, but > > you could check with the maintainers of NUT or Hercules or robotfindskitten > > or Roundup as well. Or the Blender Foundation - blender is a big reposurgeon > > conversion done by someone else. > > Sorry, been there done that. The CVS to bzr conversion also seemed > flawless until much later. There are several differences this time. One of the most important is that the state of the art has advanced. My tools do things that would have been impossible or impractical before they existed. I have auditing capabilities you would probably have to work a bit to even imagine. As a relatively trivial example - if Stefan or some other person with policy authority makes the call, I could reliably split elpa out into its own repo with one short command in the reposurgeon DSL. > > If we find any problems afterwards, I have the tools to fix them. Part of > > my commitment is to do that. > > I don't think any of us can in good faith give such promises. The span of my contributions to Emacs is measures in decades. I do not think you need to fear that I will vanish before this job is done. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 21:01 ` Eric S. Raymond @ 2014-01-26 17:32 ` Eli Zaretskii 2014-01-27 0:33 ` Eric S. Raymond 0 siblings, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2014-01-26 17:32 UTC (permalink / raw) To: esr; +Cc: schwab, emacs-devel > Date: Sat, 25 Jan 2014 16:01:32 -0500 > From: "Eric S. Raymond" <esr@thyrsus.com> > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org > > But as the size and complexity of the repo goes up, so does the value > of in-band references actually working. Emacs is an exceptionally *bad* > case for relying solely on an external reference map, not an exceptionally > good one. There's no argument about the higher value of having all the references resolved. What I fear of is the inordinate amount of work that might require, for too little benefit, and the unintended consequences of a too-deep surgery on the history that will be needed. Already the effort to get the list of references right devoured many messages (and I'm sure each message caused a non-trivial amount of work), and we are still not there (see below). In particular, it worries me that you seem to be unable to extract the full list of bzr revno references, after so many attempts. Why this doesn't worry you, and why you still refuse to accept that maybe, just maybe, this is a lot of effort for a relatively small gain, is beyond me. If this is in any way indicative of the other problematic issues of the conversion, then "Houston, we have a problem", indeed. > > I'd appreciate if you posted the final list of the references, when > > you are finished with it, so we could have some QA. > > Here is the current list. It is not final because I expect to resolve > at least a few more of these, and it is still possible more fossil > references could turn up in odd places. > ChangeLog: > [...] I found that at least these ones are missing: lisp/ChangeLog.15 references 103083 lisp/ChangeLog.16 references 103471 and 107149 src/ChangeLog.12 references 104015 and 103913 > Change comments: > [...] This list of 40 references in the commit messages to bzr revisions is definitely incomplete. It misses many references (I counted more than 300 overall, including those you show). Here are just a few that you missed, and only from the trunk branch: r116131 references 116113 r116056 references 116055 r115997 references 115992 r115964 references 115961 r115920 references 115918 r115859 references 115838 r115029 references 112851 r114978 references 114965 r114798 references 114795 r112011 references 112010 r106733.1.27 references 111919 r110764.1.510 references 111040 r110764.1.338 references 111367 and 111368 r110879 references 110857 (from emacs-24 branch) r110306 references 110305 r99375 references 99362 It sounds like the scripts or methods you are using to find such references are not catching some of them. E.g., bare numbers, without any leading "r" or "revno:" etc. are mostly (or maybe completely) missing. Given this quality, I once again question the need for all this work. If we cannot guarantee coverage very close to 100%, what would be the value of such a partial conversion? More importantly, do we have reasonably effective methods of QA for the results? The omissions I discovered are based on simple bzr commands followed by manual inspection (to avoid quite a few false positives); unless we can come up with better ways that don't involve manual labor, the overall quality will not be high enough, as manual labor is inherently error prone. Btw, what about references to repositories of other projects? Here's one example (from trunk): revno: 110764.1.388 committer: Bastien Guerry <bzg@gnu.org> branch nick: emacs-24 timestamp: Tue 2013-01-08 19:49:37 +0100 message: Merge Org up to commit 4cac75153. Some ChangeLog formatting fixes. Are we going to replace the git sha1 here by something more universal? If so, there's much more work around the corner; if not, why does it make sense to insist on doing that for Emacs's own branches? > Some of the remaining CVS references cannot be reseolved within the Emacs > history; they actually point to other projects. One particularly fertile > source of these, which I think accounts for this group > > 1.85 > 1.878 > 1.113 > 1.244 > 1.34 > 1.233 > > in ChangeLogs, is the CVS history of the erc files before they were merged > into Emacs. See above: this is just the tip of the iceberg. I think you will find much more of such references, with Org, CEDET, MH-E, and Gnus being the most frequent ones. Doesn't leaving those out of this conversion undermine the goal? > > The problem is not the size of the repository alone. The problem is > > that different portions of a single changeset were committed many > > revisions apart. And I don't even understand (and you didn't explain) > > how will you handle the situation I described above, where a single > > commit checked in ChangeLog changes for several unrelated commits in > > the same directory. Which commit clique will you assign the ChangeLog > > commit to? The devil is in the details, but you haven't provided any > > details about your plans in this matter. Would you please do that? > > I see we are using the term "changeset" slightly differently, and this has > produced some confusion. > > The uncoalesced changesets I am looking for are not defined by "all > share the same ChangeLog entry" (though usually that is the case). > You are quite right that attempting to coalesce all of those would > produce perverse results in cases of several unrelated commits. > > Fortunately, most of the unresolved cliques are not like this. The > usual case, in this conversion as in others I've seen (such as groff) > is that an unresolved clique consists of one or several closely > related changes and one ChangeLog modification, without intervening > commits by others. This is what I think of as a changeset. I thought a "changeset" was well defined in the context of a VCS. My definition is a set of changes made as part of working on a single isolated issue. IOW, what would have constituted a single indivisible commit with our current procedures. Your definition sounds subtly different, and you didn't define "closely related changes", so it's hard to judge its exact meaning. As for "one ChangeLog modification" and "without intervening commits", see below. > Normally tools such as parsecvs collect these into single changesets. > But these converters have a maximum coalescence window. If such a span > of commits took place over a longer period of time than the window, it > won't be coalesced. From a cursory look I had at the current git mirror, no coalescing was done there. But perhaps I'm missing something; Andreas, can you please comment on this? > When there is CVS in the history, a standard part of my cleanup is > basically to run a coalescence pass with a very long window. > Semi-automating this operation, so it (a) doesn't have to be done > manually, but (b) is easily checked by skilled human judgment, was > one of the purposes for which I originally wrote reposurgeon. > > Fortunately the bad cases aren't actually very common. Can we take a real-life use case, please? Please show the cliques produced by your analysis in this range of bzr revisions on the trunk: 39997..40058. You can see the details with these bzr commands: . This will show a 1-line summary for every revision in the range: bzr log --line -r39997..40058 . This will show the full commit messages and other meta-data of a single revision, 40000 in the example (can also be used with a range -rNNN..MMM): bzr log --long --show-ids -c40000 . This will show the files modified/added/deleted by a single revision (can also be used with a range -rNNN..MMM): bzr status -c40000 The above range of revisions shows a typical routine of commits when Emacs was using CVS; in particular, "*** empty log message ***" are most probably ChangeLog commits which usually followed commits of the files whose log entries are in the ChangeLog change. Note that the commit messages are almost always different (they are actually the ChangeLog entries for the files being committed), although the changes belong to the same changeset. Also note how commits by different people working on separate changesets sometimes overlap, as in revisions 40033..40038. How will these be handled during your proposed conversion? And what will be the commit messages of the coalesced commits? > > > > > 5. Unconverted .bzrignores (and possibly .cvsignores) in the history. > > > > > > > > Why is that a problem? > > > > > > See "seamless history browsing". > > > > Sorry, I don't understand. Please elaborate: what is the relation > > between these ignore files and history browsing? > > In a properly done conversion, file ignores don't abruptly stop working > bevcause you browsed back past the point of conversion and what should > be .gitignore files are nmow .bzrignores or .cvsignores. So you will be adding .gitignore to revisions where there was none? If not, how do you plan on attacking this issue? > > > The way this is working is that I am building a reposurgeon script that > > > expresses a sequence of edits to Andreas's mirror. On conversion day > > > we will apply that script once, after which everyone can re-clone and > > > go on as before. > > > > Sorry, I don't see how this changes anything. You are still going to > > make deep changes to the existing mirror. > > Yes, for arguable values of "deep". As Paul Eggert (I think) said, I'm > after a result that is stainless steel rather than earthenware. With > ugly cracks in it. I have my doubts about the "stainless steel" part, sorry. Unfortunately, nothing you've said so far contributes to my confidence in the outcome. And if the outcome will more like "earthenware" than "stainless steel", then we might as well continue using what we have now in the existing mirror. > > > > Noble goals all of them, but I'm skeptical as to whether they can be > > > > achieved in practice. What's worse, we won't know whether some issues > > > > remained until much later. > > > > > > I know they can be achieved in practice because I have achieved them before, > > > many times. Most recently in the conversion of the groff history, but > > > you could check with the maintainers of NUT or Hercules or robotfindskitten > > > or Roundup as well. Or the Blender Foundation - blender is a big reposurgeon > > > conversion done by someone else. > > > > Sorry, been there done that. The CVS to bzr conversion also seemed > > flawless until much later. > > There are several differences this time. One of the most important is that > the state of the art has advanced. My tools do things that would have been > impossible or impractical before they existed. I have auditing capabilities > you would probably have to work a bit to even imagine. The important question here is "is your best good enough?" I have absolutely no idea what is the answer to that question, and frankly, your way of promoting your tools and techniques doesn't help at all. Neither do the apparent deficiencies in identifying revision references shown above. If you really want to build confidence in your methods and tools, some kind of statistics about the conversion jobs done using them, and the time passed since the conversion would probably be a good start. (Yes, time since conversion is important because the problems are usually subtle and don't stick out until much later.) Detailed description of the planned steps during the conversion and how you intend to control the quality of each step, will also be appreciated. > As a relatively trivial example - if Stefan or some other person with > policy authority makes the call, I could reliably split elpa out into > its own repo with one short command in the reposurgeon DSL. This is great, but doesn't really address the worrisome aspects of the conversion we care about. We no longer care about the elpa branch in the bzr repository. We do care about the few other branches, such as emacs-24. And it is not even clear what will become of those after the conversion; the reposurgeon man page cites a limitation related to that, allegedly stemming from some (imaginary) bzr confusion between branches and repositories, but ends up saying nothing about the branches after the conversion. Will they end up in a single git repository, like any other git branches, or won't they? Will the merges between those branches show up as expected in git DAG? How will merges from external branches (such as Org or MH-E) or from local feature branches be represented? Those are much more important issues than the ability to split elpa. > > > If we find any problems afterwards, I have the tools to fix them. Part of > > > my commitment is to do that. > > > > I don't think any of us can in good faith give such promises. > > The span of my contributions to Emacs is measures in decades. I do not > think you need to fear that I will vanish before this job is done. I was talking about the "problems afterwards" part. I don't question your intentions, but life is not an entirely predictable endeavor. Perhaps you have a way to tell the future, but in that case, I may wish to hire you to help me with my stock investments. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-26 17:32 ` Eli Zaretskii @ 2014-01-27 0:33 ` Eric S. Raymond 2014-01-27 5:16 ` Werner LEMBERG ` (3 more replies) 0 siblings, 4 replies; 42+ messages in thread From: Eric S. Raymond @ 2014-01-27 0:33 UTC (permalink / raw) To: Eli Zaretskii; +Cc: schwab, emacs-devel [-- Attachment #1: Type: text/plain, Size: 17898 bytes --] Eli Zaretskii <eliz@gnu.org>: > Why this doesn't worry you, > and why you still refuse to accept that maybe, just maybe, this is a > lot of effort for a relatively small gain, is beyond me. If this is > in any way indicative of the other problematic issues of the > conversion, then "Houston, we have a problem", indeed. What I refuse to accept is doing a job that is below my standards of quality, if I'm going to do it at all. You cannot argue me out of that by telling me it's too much work, because I simply don't accept that as a valid reason to settle for slipshod results. Instead, I upgrade my tools. > I found that at least these ones are missing: > > lisp/ChangeLog.15 references 103083 > lisp/ChangeLog.16 references 103471 and 107149 > src/ChangeLog.12 references 104015 and 103913 Thank you for finding these. This is a useful bug report. To illustrate my methods, I fixed this by adding those revnos to the ChangeLog section of the map file I enclosed in my last mail (it is the file FOSSILS in my conversion directory). Then I ran a Python script called 'decorate.py' that patched in the corresponding action stamps. The point is that I didn't have to do the lookup by hand; the fixup took less time to do than to describe. The map that decorate.py uses is in turn generated by a second script, bzrlog2map, that filters the putput of bzr log --levels 0 into an association between revnos and action stamps. Here are the first few lines: 116082 2014-01-20T16:55:28Z!eggert@cs.ucla.edu 116081 2014-01-20T16:47:41Z!eggert@cs.ucla.edu 116080 2014-01-20T08:52:44Z!juri@jurta.org 116079 2014-01-20T08:45:56Z!juri@jurta.org 116078 2014-01-20T08:15:16Z!eggert@cs.ucla.edu 116077 2014-01-20T07:56:28Z!eggert@cs.ucla.edu 116076 2014-01-20T01:21:18Z!rgm@gnu.org 116075 2014-01-20T00:54:19Z!rgm@gnu.org 116074 2014-01-19T16:59:51Z!rudalics@gmx.at 116073 2014-01-19T15:42:48Z!eliz@gnu.org 116072 2014-01-19T13:28:16Z!handa@gnu.org 115426.2.11 2014-01-19T13:27:34Z!handa@gnu.org 115426.2.10 2014-01-19T13:26:21Z!handa@gnu.org 115426.2.9 2014-01-19T12:42:37Z!handa@gnu.org 115426.2.8 2014-01-18T00:24:14Z!handa@gnu.org 115426.2.7 2014-01-18T00:24:03Z!handa@gnu.org This is MAP in my conversion directory; I rebuild it occasionally to be sure new revs are included, The point of having two maps rather than one is this: at some point I'm going to mechanically compile FOSSILS into a list of reposurgeon commands. For example, this: ChangeLog: revno 108687 -> 2012-06-22T21:17:42Z!eggert@cs.ucla.edu will become something like this =B & [ChangeLog] filter --replace /\brevno 108687\b/2012-06-22T21:17:42Z!eggert@cs.ucla.edu/ That command translates into English as: Over the set of all blobs in the history with paths containing the string 'ChangeLog', replace 'revno 108687' (preceded and followed by breaking characters) by its corresponding action stamp. I could, in theory, generate a humongous and guaranteed-exhaustive set of these commands directly from MAP. If I did that, though, the conversion day script might would many hours to run, most of that spent on generated commands that are no-ops. There could also be unhappiness related to revision numbers short enough to false-match numeric tokens that are nothing of the kind. Instead, FOSSILS both drives and documents the minimum set of changes required. The cost is that I have to maintain the list of source tokens to be replaced partly by hand. This is normal and acceptable; I often deal with similar issues in Subversion repositories. > It sounds like the scripts or methods you are using to find such > references are not catching some of them. E.g., bare numbers, without > any leading "r" or "revno:" etc. are mostly (or maybe completely) > missing. Looking at bzrlog2map, I see you're right. One of my to-do items was to add to it a scanner that would turn up likely reference-string candidates. I forgot I hadn't actually done that yet. > Given this quality, I once again question the need for all this work. That is incoherent. Whether the work is needed has *nothing* to do with whether it is well implemented yet. > If we cannot guarantee coverage very close to 100%, what would be the > value of such a partial conversion? Exactly proportional to the coverage, of course. Every single reference that is easily chased by human eyeball or indexing tool (e.g. *not* a cookie that is meaningless because its context is gone) increases the utility of the conversion. Complete transparency of reference is best; more is better than less; partial is better than none. The history is too messy for us to get 100% coverage (too many external CVS references), but that is not an argument that we should settle for zero. > More importantly, do we have > reasonably effective methods of QA for the results? The omissions I > discovered are based on simple bzr commands followed by manual > inspection (to avoid quite a few false positives); unless we can come > up with better ways that don't involve manual labor, the overall > quality will not be high enough, as manual labor is inherently error > prone. This is why I explained my workflow. Once a reference has been identified and put in FOSSILS, none of the remaining steps are vulnerable to human error. (My scripts could have bugs, of course. But they're not very complex, so we can have reasonably high confidence in them.) > Btw, what about references to repositories of other projects? Here's > one example (from trunk): > > revno: 110764.1.388 > committer: Bastien Guerry <bzg@gnu.org> > branch nick: emacs-24 > timestamp: Tue 2013-01-08 19:49:37 +0100 > message: > Merge Org up to commit 4cac75153. Some ChangeLog formatting fixes. > > Are we going to replace the git sha1 here by something more universal? No, because there is no notation and no resolution protocol for such references. If there were such a thing, I would be right on top of using it. Actually, if there were such a thing, it would more than likely have been my invention to begin with... > If so, there's much more work around the corner; if not, why does it > make sense to insist on doing that for Emacs's own branches? Because that *can* be done, and every successful internalization adds utility by (a) removing an impediment to browsing and (b) documenting a causal link. > See above: this is just the tip of the iceberg. I think you will find > much more of such references, with Org, CEDET, MH-E, and Gnus being > the most frequent ones. Doesn't leaving those out of this conversion > undermine the goal? Yes, of course it does. Don't let the unachievable perfect be the enemy of the achievable good! (Damn, now you've started me thinking about prefixing action stamps with name lookups to a registry of repositories. If I invent a practical solution to this it's going to be partly your fault...) > I thought a "changeset" was well defined in the context of a VCS. In modern VCSes like Bazaar, hg, and git, yes, it is a well-defined concept. This conversion creates confusing cases for two reasons. One is the vagaries of CVS; the other is ChangeLog entries, which carry some of the semantic freight of VCS changesets without having the atomicity and time-locality properties that they automatically have when the VCS actually implements them. The result is that one Emacs/Zaretskii "changeset" usually corresponds to one modern VCS changeset, but not always. When the correspondence breaks down, one Emacs/Zaretskii "changeset" maps to two or more VCS changesets, one of which is likely to be a Changelog entry that is semantically bound to the others but a singleton changeset that the VCS doesn't know is connected to them. > My definition is a set of changes made as part of working on a single > isolated issue. IOW, what would have constituted a single indivisible > commit with our current procedures. The Bazaar portion of the history isn't the problem, the CVS part is. There are many instances in the CVS part of the Emacs history that look something like this: 1. Eli changes file A and commits it 2. Eli changes file B and commits it with an identical change comment. 3. Eric changes file C and commits it 4. Eli commits a ChangeLog entry describing the A and B changes 5. Eric commits a ChangeLog entry describing the C changes In your terms, there are two changesets here: {1,2,4} and {3,5). But when parsecvs runs, the result will probably look like this: Changeset 1 - {1,2} Changeset 2 - {3} Changeset 3 - {4} Changeset 4 - {5} Changesets 1 and 3 don't get joined because the intervening commit prevented parsecvs from recognizing that they should be coalesced. (Actually the behavior is a little better than this: parsecvs did coalescence by branch, so if commit 3 is on a different branch than 1 and 2 the right thing will happen.) Here's where the vagaries of CVS come in. For various stupid random CVS-is-brain-damaged reasons there may have been enough skew between the recorded commit times of 1 and 2 that *they* don't get coalesced, even though that's what notional-Eli intended. *That* kind of defect (eligible commits that didn't fit inside too small a time window) is what reposurgeon was originally designed to fix. These are very, *very* common in crappy CVS lifts, and reposurgeon can fix them automatically. There is another case common in the Emacs history that can be coalesced. That is: a file modification immediately followed by a ChangeLog change describing it - but with an empty change comment on the ChangeLog change, which parcecvs refuses to consider matching to anything else. These do have to be fixed up by hand. I haven't tried yet. > From a cursory look I had at the current git mirror, no coalescing was > done there. But perhaps I'm missing something; Andreas, can you > please comment on this? Look for commits that predate the Bazaar transition but change multiple files. You'll find parsecvs made those. > Can we take a real-life use case, please? Please show the cliques > produced by your analysis in this range of bzr revisions on the trunk: > 39997..40058. You can see the details with these bzr commands: > > . This will show a 1-line summary for every revision in the range: > > bzr log --line -r39997..40058 > > . This will show the full commit messages and other meta-data of a > single revision, 40000 in the example (can also be used with a > range -rNNN..MMM): > > bzr log --long --show-ids -c40000 > > . This will show the files modified/added/deleted by a single > revision (can also be used with a range -rNNN..MMM): > > bzr status -c40000 > > The above range of revisions shows a typical routine of commits when > Emacs was using CVS; in particular, "*** empty log message ***" are > most probably ChangeLog commits which usually followed commits of the > files whose log entries are in the ChangeLog change. Note that the > commit messages are almost always different (they are actually the > ChangeLog entries for the files being committed), although the changes > belong to the same changeset. Also note how commits by different > people working on separate changesets sometimes overlap, as in > revisions 40033..40038. > > How will these be handled during your proposed conversion? And what > will be the commit messages of the coalesced commits? I think the example I showed above explains most of this. I'd have to grovel through all the timestamps to find out if automatic coalescence would catch any of the cliques in your span, but I can say that (for example) this: 40050: Miles Bader 2001-10-19 *** empty log message *** 40049: Miles Bader 2001-10-19 Exit if we can't find some variable. looks like something the "lint" command in reposurgeon would catch. I would then eyeball it to check that 40050 is the changelog tweak describing 40049 and write something like this into the lift script: <40049>..<40050> squash --pushback The effect would be to merge 40050's Changelog fileop into 40049, which would keep its comment. The children and parents of the sequashed commit would be what you think. And yes, <40049> would be a legal commit reference in reposurgeon. Provided I did this first: read fossils <MAP which is the other use of the MAP file I described previously. > > In a properly done conversion, file ignores don't abruptly stop working > > bevcause you browsed back past the point of conversion and what should > > be .gitignore files are nmow .bzrignores or .cvsignores. > > So you will be adding .gitignore to revisions where there was none? > If not, how do you plan on attacking this issue? By converting .bzrignore files in place to .gitignores. > If you really want to build confidence in your methods and tools, some > kind of statistics about the conversion jobs done using them, and the > time passed since the conversion would probably be a good start. I can tell you the most important statistics. For three years of doing conversions on projects including GPSD, NUT, Hercules, Roundup, Battle For Wesnoth, robotfindskitten, groff, and several others, I can tell you three numbers: 1. Time passed since conversion: tops out at 3 years for GPSD, about 2 years each for NUT and Hercules. 2. Number of defects I found myself after delivering a final conversion: three. (All in Battle For Wesnoth. Two CVS usernames didn't get properly mapped to git-style IDs because the attribution file I was using at conversion time was incomplete.) 3. Number of defects subsequently reported by project dev groups: zero. Yes, *zero*. One of the dev groups (Roundup, for which I did SVN->git) later moved to hg for political reasons. Otherwise those repositories are still in active use by multiple developers, and have been for a cumulative hundreds of thousands of hours. I won't represent that I think none of my finished conversions has ever had an error; that would be highly unlikely. What is true is that any errors they had were so minor that nobody has thought it was worth bugging me about them. As a matter of history, GPSD and Hercules were early test conversions. NUT (Network UPS tools) was reposurgeon's trial by fire; I went into that with a usable beta-grade tool, came out of it with something good enough that the much bigger and nastier Blender conversion could be done by *people who weren't me*. By the time I did groff, late last year, my tools and procedures for normal cases were pretty well routinized and bulletproofed. You can read about them here: DVCS Migration HOWTO: http://www.catb.org/esr/dvcs-migration-guide.html There's even a makefile that semi-automates the conversion steps. That said, Emacs is a bit abnormal. The kind of case I'm used to handling is Subversion repo with a fossil layer of CVS, having on the close order of a decade of history and a commit count in the 3K-30K range (this describes GPSD, NUT, Hercules, Roundup, BfW). The Emacs history is significantly longer and a bit cruftier than these, and I've never dealt with a layer of Bazaar before. Thes differences do complicate things a bit (I don't normally have to write custom scripts) but not unmanageably so. > (Yes, time since conversion is important because the problems are > usually subtle and don't stick out until much later.) Detailed > description of the planned steps during the conversion and how you > intend to control the quality of each step, will also be appreciated. I'm enclosing a current copy of the lift script. I'll add more steps as I verify them. As for how I intend to QA them - my strategy has two prongs. One is automating everything I can so that I have conditional guarantees of the form "if tool X is correct, then my results are correct". The other: historically, I've usually worked in collaboration with a Mr. Inside, a senior project dev, who checked my work in progress from a position of intimate knowledge of the project history. Congratulations, I think you've elected yourself for that job. The reposurgeon manual is here: http://www.catb.org/~esr/reposurgeon/reposurgeon.html > This is great, but doesn't really address the worrisome aspects of the > conversion we care about. We no longer care about the elpa branch in > the bzr repository. We do care about the few other branches, such as > emacs-24. And it is not even clear what will become of those after > the conversion; the reposurgeon man page cites a limitation related to > that, allegedly stemming from some (imaginary) bzr confusion between > branches and repositories, but ends up saying nothing about the > branches after the conversion. Will they end up in a single git > repository, like any other git branches, or won't they? Will the > merges between those branches show up as expected in git DAG? How > will merges from external branches (such as Org or MH-E) or from local > feature branches be represented? Those are much more important issues > than the ability to split elpa. You get to tell me what you want to have happen, Mr. Inside. If reposurgeon isn't powerful enough to do it, I'll up-gun it until it is. Preliminary answer: the git repo after conversion day will, globally speaking, have the same DAG that the git mirror did before. Changes will be localized and consist of (a) commit-clique squashes, and (b) a few junk branch deletions. Bazaar's very real branch/repo confusion is probably not relevant, because my conversion procedure never deals with the Bazaar repository directly. I start from Andreas's git mirror, which is (presumably) replicating the branch structure of the entire Bazaar repo every 15 minutes. If that isn't true, we have some additional problems to solve that have nothing to do with my tools. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> [-- Attachment #2: emacs.lift --] [-- Type: text/plain, Size: 34241 bytes --] # Lift specification for the Emacs conversion # # Remove junk lost+found branches. These contain only dummy commits, # apparently written as tests. branch refs/tags/lost+found/12d398afa4d2b77d606b28fe43a2e5200c863419 delete branch refs/tags/lost+found/5cf718038f760d6dc2e21dee3ce98061a975488a delete branch refs/tags/lost+found/9a1501510c2a842e8597d695fec05563161a84b7 delete branch refs/tags/lost+found/d4cd8d7c34cc79dc4abd0fec33cec74afa33e2d0 delete branch refs/tags/lost+found/e387e14faeea08877c99ddf798d5a4c9f7999c72 delete branch refs/tags/lost+found/b2e45f822e55882dda1bb80ca8b845d062d6d523 delete branch refs/tags/lost+found/c003b5d7e29f2b7c3c340d4aa851a61cfa481ec8 delete # # Fix up some CVS usernames that apparently didn't get converted during # the CVS lift. # authors read <<EOF thomas = Thomas Bushnell <thomas@gnu.ai.mit.edu> monnier = Stefan Monnier <monnier@iro.umontreal.ca> EOF # # Tag cleanup. # All the Emacs tags are lightweight (resets), hence the macro. define tagdelete tag tags/{0} delete define tagrename tag tags/{0} rename tags/{1} do tagdelete 0.1 do tagdelete Boehm-GC-base do tagdelete CEDET_BASE do tagrename EMACS_19_34 emacs-19.34 do tagrename EMACS_20_1 emacs-20.1 do tagrename EMACS_20_2 emacs-20.2 do tagrename EMACS_20_3 emacs-20.3 do tagrename EMACS_20_4 emacs-20.4 do tagrename EMACS_21_1 emacs-21.1 do tagdelete EMACS_21_1_BASE do tagrename EMACS_21_2 emacs-21.2 do tagrename EMACS_21_3 emacs-21.3 do tagrename EMACS_22_1 emacs-22.1 do tagrename EMACS_22_2 emacs-22.2 do tagrename EMACS_22_3 emacs-22.3 do tagdelete EMACS_22_BRANCHPOINT do tagrename EMACS_23_1 emacs-23.1 do tagdelete EMACS_23_1_BASE do tagrename EMACS_23_2 emacs-23.2 do tagrename EMACS_23_3 emacs-23.3 do tagrename EMACS_23_4 emacs-23.4 do tagrename EMACS_PRETEST_21_0_100 emacs-pretest-21.0.100 do tagrename EMACS_PRETEST_21_0_101 emacs-pretest-21.0.101 do tagrename EMACS_PRETEST_21_0_102 emacs-pretest-21.0.102 do tagrename EMACS_PRETEST_21_0_103 emacs-pretest-21.0.103 do tagrename EMACS_PRETEST_21_0_104 emacs-pretest-21.0.104 do tagrename EMACS_PRETEST_21_0_105 emacs-pretest-21.0.105 do tagrename EMACS_PRETEST_21_0_106 emacs-pretest-21.0.106 do tagrename EMACS_PRETEST_21_0_90 emacs-pretest-21.0.90 do tagrename EMACS_PRETEST_21_0_91 emacs-pretest-21.0.91 do tagrename EMACS_PRETEST_21_0_92 emacs-pretest-21.0.92 do tagrename EMACS_PRETEST_21_0_93 emacs-pretest-21.0.93 do tagrename EMACS_PRETEST_21_0_95 emacs-pretest-21.0.95 do tagrename EMACS_PRETEST_21_0_96 emacs-pretest-21.0.96 do tagrename EMACS_PRETEST_21_0_97 emacs-pretest-21.0.97 do tagrename EMACS_PRETEST_21_0_98 emacs-pretest-21.0.98 do tagrename EMACS_PRETEST_21_0_99 emacs-pretest-21.0.99 do tagrename EMACS_PRETEST_21_2_91 emacs-pretest-21.2.91 do tagrename EMACS_PRETEST_21_2_92 emacs-pretest-21.2.92 do tagrename EMACS_PRETEST_21_2_93 emacs-pretest-21.2.93 do tagrename EMACS_PRETEST_21_2_94 emacs-pretest-21.2.94 do tagrename EMACS_PRETEST_21_2_95 emacs-pretest-21.2.95 do tagrename EMACS_PRETEST_22_0_90 emacs-pretest-22.0.90 do tagrename EMACS_PRETEST_22_0_91 emacs-pretest-22.0.91 do tagrename EMACS_PRETEST_22_0_92 emacs-pretest-22.0.92 do tagrename EMACS_PRETEST_22_0_93 emacs-pretest-22.0.93 do tagrename EMACS_PRETEST_22_0_94 emacs-pretest-22.0.94 do tagrename EMACS_PRETEST_22_0_95 emacs-pretest-22.0.95 do tagrename EMACS_PRETEST_22_0_96 emacs-pretest-22.0.96 do tagrename EMACS_PRETEST_22_0_97 emacs-pretest-22.0.97 do tagrename EMACS_PRETEST_22_0_98 emacs-pretest-22.0.98 do tagrename EMACS_PRETEST_22_0_99 emacs-pretest-22.0.99 do tagrename EMACS_PRETEST_22_0_990 emacs-pretest-22.0.990 do tagrename EMACS_PRETEST_22_1_90 emacs-pretest-22.1.90 do tagrename EMACS_PRETEST_22_1_91 emacs-pretest-22.1.91 do tagrename EMACS_PRETEST_22_1_92 emacs-pretest-22.1.92 do tagrename EMACS_PRETEST_22_2_90 emacs-pretest-22.2.90 do tagrename EMACS_PRETEST_22_2_91 emacs-pretest-22.2.91 do tagrename EMACS_PRETEST_22_2_92 emacs-pretest-22.2.92 do tagrename EMACS_PRETEST_23_0_90 emacs-pretest-23.0.90 do tagrename EMACS_PRETEST_23_0_91 emacs-pretest-23.0.91 do tagrename EMACS_PRETEST_23_0_92 emacs-pretest-23.0.92 do tagrename EMACS_PRETEST_23_0_93 emacs-pretest-23.0.93 do tagrename EMACS_PRETEST_23_0_94 emacs-pretest-23.0.94 do tagrename EMACS_PRETEST_23_0_95 emacs-pretest-23.0.95 do tagrename EMACS_PRETEST_23_0_96 emacs-pretest-23.0.96 do tagrename EMACS_PRETEST_23_1_90 emacs-pretest-23.1.90 do tagrename EMACS_PRETEST_23_1_91 emacs-pretest-23.1.91 do tagrename EMACS_PRETEST_23_1_92 emacs-pretest-23.1.92 do tagrename EMACS_PRETEST_23_1_93 emacs-pretest-23.1.93 do tagrename EMACS_PRETEST_23_1_94 emacs-pretest-23.1.94 do tagrename EMACS_PRETEST_23_1_95 emacs-pretest-23.1.95 do tagrename EMACS_PRETEST_23_1_96 emacs-pretest-23.1.96 do tagrename EMACS_PRETEST_23_1_97 emacs-pretest-23.1.97 do tagrename EMACS_PRETEST_23_2_90 emacs-pretest-23.2.90 do tagrename EMACS_PRETEST_23_2_91 emacs-pretest-23.2.91 do tagrename EMACS_PRETEST_23_2_92 emacs-pretest-23.2.92 do tagrename EMACS_PRETEST_23_2_93 emacs-pretest-23.2.93 do tagrename EMACS_PRETEST_23_2_93_1 emacs-pretest-23.2.93.1 do tagrename EMACS_PRETEST_23_2_94 emacs-pretest-23.2.94 do tagrename EMACS_PRETEST_23_3_90 emacs-pretest-23.3.90 do tagrename EMACS_PRETEST_24_0_05 emacs-pretest-24.0.05 do tagrename EMACS_PRETEST_24_0_90 emacs-pretest-24.0.90 do tagrename EMACS_PRETEST_24_0_91 emacs-pretest-24.0.91 do tagrename EMACS_PRETEST_24_0_92 emacs-pretest-24.0.92 do tagrename EMACS_PRETEST_24_0_93 emacs-pretest-24.0.93 do tagrename EMACS_PRETEST_24_0_94 emacs-pretest-24.0.94 do tagrename EMACS_PRETEST_24_0_95 emacs-pretest-24.0.95 do tagdelete Ilya_4_23 do tagdelete Ilya_4_32 do tagdelete Ilya_4_35 do tagdelete Ilya_5_0 do tagdelete Ilya_5_10 do tagdelete Ilya_5_22 do tagdelete Ilya_5_23 do tagdelete Ilya_5_3 do tagdelete Ilya_5_7 do tagdelete NewVC-fileset-BASE do tagdelete RMAIL-MBOX-BASE do tagdelete Release_5_25 do tagdelete URL_2004-04-04_01h16 do tagdelete VENDOR-3_3 do tagdelete VENDOR-3_4 do tagdelete VENDOR-3_5 do tagdelete VENDOR-3_6 do tagdelete XFT_JHD_BRANCH_base do tagdelete after-merge-gnus-5_10 do tagdelete amigados-merge do tagdelete before-merge-emacs-app-to-trunk do tagdelete before-merge-gnus-5_10 do tagdelete before-merge-multi-tty-to-trunk do tagdelete before-merge-unicode-to-trunk do tagdelete before-miles-orphaned-changes do tagdelete before-remove-carbon do tagdelete before-remove-vms do tagdelete before-thomas-posix1996 do tagdelete branchpoint-5_8 do tagdelete custom_themes_branchpoint # keep emacs-19.34 # keep emacs-20.1 # keep emacs-20.2 # keep emacs-20.3 # keep emacs-20.4 # keep emacs-21.1 # keep emacs-21.2 # keep emacs-21.3 # keep emacs-22.1 # keep emacs-22.2 # keep emacs-22.3 # keep emacs-23.1 # keep emacs-23.2 # keep emacs-23.3 # keep emacs-23.4 do tagdelete emacs-23/emacs-23.2 # keep emacs-24.0.96 # keep emacs-24.0.97 # keep emacs-24.1 # keep emacs-24.2 # keep emacs-24.2.90 # keep emacs-24.2.91 # keep emacs-24.2.92 # keep emacs-24.2.93 # keep emacs-24.3 do tagdelete emacs-24.3-base # keep emacs-24.3-rc1 do tagdelete emacs-bidi-base do tagdelete emacs-unicode-2-base do tagdelete emacs-unicode-2-pre-sync do tagdelete emacs-unicode-base do tagdelete font-backend-base do tagdelete gcc-2_8_1-980401 do tagdelete gcc-2_8_1-980402 do tagdelete gcc-2_8_1-980407 do tagdelete gcc-2_8_1-980412 do tagdelete gcc-2_8_1-980413 do tagdelete gcc-2_8_1-980419 do tagdelete gcc-2_8_1-980426 do tagdelete gcc-2_8_1-980502 do tagdelete gcc-2_8_1-980513 do tagdelete gcc-2_8_1-980525 do tagdelete gcc-2_8_1-980529 do tagdelete gcc-2_8_1-980608 do tagdelete gcc-2_8_1-980609 do tagdelete gcc-2_8_1-980627 do tagdelete gcc-2_8_1-980705 do tagdelete gcc-2_8_1-980718 do tagdelete gcc-2_8_1-980811 do tagdelete gcc-2_8_1-980813 do tagdelete gcc-2_8_1-980928 do tagdelete gcc-2_8_1-980929 do tagdelete gcc-2_8_1-RELEASE do tagdelete gcc_2_8_1-980315 do tagdelete gcc_2_8_1-980929 do tagdelete glibc-2_0_2 do tagdelete glibc-2_0_4 do tagdelete gnumach-release-1-1 do tagdelete gnumach-release-1-1-1 do tagdelete gnumach-release-1-1-2 do tagdelete gnumach-release-1-1-3 do tagdelete gnus-5_10-branchpoint do tagdelete gnus-5_10-post-merge-josefsson do tagdelete gnus-5_10-post-merge-yamaoka do tagdelete gnus-5_10-pre-merge-josefsson do tagdelete gnus-5_10-pre-merge-yamaoka do tagdelete handa-temp-tag do tagdelete hurd-release-0-2 do tagdelete jimb-sync-Nov-3-1992 do tagdelete kfs_20030524_post do tagdelete kfs_20030524_pre do tagdelete lexbind-base do tagdelete libc-1-90 do tagdelete libc-1-91 do tagdelete libc-1-92 do tagdelete libc-1-93 do tagdelete libc-950402 do tagdelete libc-950411 do tagdelete libc-950722 do tagdelete libc-950723 do tagdelete libc-950922 do tagdelete libc-951016 do tagdelete libc-951018 do tagdelete libc-951029 do tagdelete libc-951031 do tagdelete libc-951101 do tagdelete libc-951102 do tagdelete libc-951103 do tagdelete libc-951104 do tagdelete libc-951105 do tagdelete libc-951106 do tagdelete libc-951107 do tagdelete libc-951108 do tagdelete libc-951109 do tagdelete libc-951110 do tagdelete libc-951111 do tagdelete libc-951112 do tagdelete libc-951113 do tagdelete libc-951114 do tagdelete libc-951115 do tagdelete libc-951116 do tagdelete libc-951117 do tagdelete libc-951118 do tagdelete libc-951119 do tagdelete libc-951120 do tagdelete libc-951121 do tagdelete libc-951122 do tagdelete libc-951123 do tagdelete libc-951124 do tagdelete libc-951125 do tagdelete libc-951126 do tagdelete libc-951127 do tagdelete libc-951128 do tagdelete libc-951129 do tagdelete libc-951130 do tagdelete libc-951201 do tagdelete libc-951202 do tagdelete libc-951203 do tagdelete libc-951204 do tagdelete libc-951206 do tagdelete libc-951208 do tagdelete libc-951209 do tagdelete libc-951210 do tagdelete libc-951211 do tagdelete libc-951212 do tagdelete libc-951213 do tagdelete libc-951214 do tagdelete libc-951215 do tagdelete libc-951216 do tagdelete libc-951217 do tagdelete libc-951218 do tagdelete libc-951219 do tagdelete libc-951220 do tagdelete libc-951221 do tagdelete libc-951222 do tagdelete libc-951223 do tagdelete libc-951224 do tagdelete libc-951225 do tagdelete libc-951226 do tagdelete libc-951227 do tagdelete libc-951228 do tagdelete libc-951229 do tagdelete libc-951230 do tagdelete libc-951231 do tagdelete libc-960101 do tagdelete libc-960102 do tagdelete libc-960103 do tagdelete libc-960104 do tagdelete libc-960105 do tagdelete libc-960106 do tagdelete libc-960107 do tagdelete libc-960108 do tagdelete libc-960109 do tagdelete libc-960110 do tagdelete libc-960111 do tagdelete libc-960112 do tagdelete libc-960113 do tagdelete libc-960114 do tagdelete libc-960115 do tagdelete libc-960116 do tagdelete libc-960117 do tagdelete libc-960118 do tagdelete libc-960119 do tagdelete libc-960120 do tagdelete libc-960121 do tagdelete libc-960122 do tagdelete libc-960123 do tagdelete libc-960124 do tagdelete libc-960125 do tagdelete libc-960126 do tagdelete libc-960127 do tagdelete libc-960128 do tagdelete libc-960129 do tagdelete libc-960130 do tagdelete libc-960131 do tagdelete libc-960201 do tagdelete libc-960202 do tagdelete libc-960203 do tagdelete libc-960204 do tagdelete libc-960205 do tagdelete libc-960206 do tagdelete libc-960207 do tagdelete libc-960208 do tagdelete libc-960209 do tagdelete libc-960210 do tagdelete libc-960211 do tagdelete libc-960212 do tagdelete libc-960213 do tagdelete libc-960214 do tagdelete libc-960215 do tagdelete libc-960216 do tagdelete libc-960217 do tagdelete libc-960218 do tagdelete libc-960219 do tagdelete libc-960220 do tagdelete libc-960221 do tagdelete libc-960222 do tagdelete libc-960223 do tagdelete libc-960224 do tagdelete libc-960225 do tagdelete libc-960226 do tagdelete libc-960227 do tagdelete libc-960228 do tagdelete libc-960229 do tagdelete libc-960302 do tagdelete libc-960303 do tagdelete libc-960304 do tagdelete libc-960305 do tagdelete libc-960306 do tagdelete libc-960307 do tagdelete libc-960308 do tagdelete libc-960309 do tagdelete libc-960310 do tagdelete libc-960311 do tagdelete libc-960312 do tagdelete libc-960313 do tagdelete libc-960314 do tagdelete libc-960315 do tagdelete libc-960316 do tagdelete libc-960317 do tagdelete libc-960318 do tagdelete libc-960319 do tagdelete libc-960320 do tagdelete libc-960321 do tagdelete libc-960322 do tagdelete libc-960323 do tagdelete libc-960324 do tagdelete libc-960325 do tagdelete libc-960326 do tagdelete libc-960327 do tagdelete libc-960328 do tagdelete libc-960329 do tagdelete libc-960330 do tagdelete libc-960331 do tagdelete libc-960401 do tagdelete libc-960402 do tagdelete libc-960403 do tagdelete libc-960404 do tagdelete libc-960405 do tagdelete libc-960406 do tagdelete libc-960407 do tagdelete libc-960408 do tagdelete libc-960409 do tagdelete libc-960410 do tagdelete libc-960411 do tagdelete libc-960412 do tagdelete libc-960413 do tagdelete libc-960414 do tagdelete libc-960415 do tagdelete libc-960416 do tagdelete libc-960417 do tagdelete libc-960418 do tagdelete libc-960419 do tagdelete libc-960420 do tagdelete libc-960421 do tagdelete libc-960422 do tagdelete libc-960423 do tagdelete libc-960424 do tagdelete libc-960425 do tagdelete libc-960426 do tagdelete libc-960427 do tagdelete libc-960428 do tagdelete libc-960429 do tagdelete libc-960430 do tagdelete libc-960501 do tagdelete libc-960502 do tagdelete libc-960503 do tagdelete libc-960504 do tagdelete libc-960505 do tagdelete libc-960506 do tagdelete libc-960507 do tagdelete libc-960508 do tagdelete libc-960509 do tagdelete libc-960510 do tagdelete libc-960511 do tagdelete libc-960512 do tagdelete libc-960513 do tagdelete libc-960514 do tagdelete libc-960515 do tagdelete libc-960516 do tagdelete libc-960517 do tagdelete libc-960518 do tagdelete libc-960519 do tagdelete libc-960520 do tagdelete libc-960521 do tagdelete libc-960522 do tagdelete libc-960523 do tagdelete libc-960524 do tagdelete libc-960525 do tagdelete libc-960526 do tagdelete libc-960527 do tagdelete libc-960528 do tagdelete libc-960529 do tagdelete libc-960530 do tagdelete libc-960531 do tagdelete libc-960601 do tagdelete libc-960602 do tagdelete libc-960603 do tagdelete libc-960604 do tagdelete libc-960605 do tagdelete libc-960606 do tagdelete libc-960607 do tagdelete libc-960608 do tagdelete libc-960609 do tagdelete libc-960610 do tagdelete libc-960611 do tagdelete libc-960612 do tagdelete libc-960613 do tagdelete libc-960614 do tagdelete libc-960615 do tagdelete libc-960616 do tagdelete libc-960617 do tagdelete libc-960618 do tagdelete libc-960619 do tagdelete libc-960620 do tagdelete libc-960621 do tagdelete libc-960622 do tagdelete libc-960623 do tagdelete libc-960624 do tagdelete libc-960625 do tagdelete libc-960626 do tagdelete libc-960627 do tagdelete libc-960628 do tagdelete libc-960629 do tagdelete libc-960630 do tagdelete libc-960701 do tagdelete libc-960702 do tagdelete libc-960703 do tagdelete libc-960704 do tagdelete libc-960705 do tagdelete libc-960706 do tagdelete libc-960707 do tagdelete libc-960708 do tagdelete libc-960709 do tagdelete libc-960710 do tagdelete libc-960711 do tagdelete libc-960712 do tagdelete libc-960713 do tagdelete libc-960714 do tagdelete libc-960715 do tagdelete libc-960716 do tagdelete libc-960717 do tagdelete libc-960718 do tagdelete libc-960719 do tagdelete libc-960720 do tagdelete libc-960721 do tagdelete libc-960722 do tagdelete libc-960723 do tagdelete libc-960724 do tagdelete libc-960725 do tagdelete libc-960726 do tagdelete libc-960727 do tagdelete libc-960728 do tagdelete libc-960729 do tagdelete libc-960730 do tagdelete libc-960731 do tagdelete libc-960801 do tagdelete libc-960802 do tagdelete libc-960803 do tagdelete libc-960804 do tagdelete libc-960805 do tagdelete libc-960806 do tagdelete libc-960807 do tagdelete libc-960808 do tagdelete libc-960809 do tagdelete libc-960810 do tagdelete libc-960811 do tagdelete libc-960812 do tagdelete libc-960813 do tagdelete libc-960814 do tagdelete libc-960815 do tagdelete libc-960816 do tagdelete libc-960817 do tagdelete libc-960818 do tagdelete libc-960819 do tagdelete libc-960820 do tagdelete libc-960821 do tagdelete libc-960822 do tagdelete libc-960823 do tagdelete libc-960824 do tagdelete libc-960825 do tagdelete libc-960826 do tagdelete libc-960827 do tagdelete libc-960828 do tagdelete libc-960829 do tagdelete libc-960830 do tagdelete libc-960831 do tagdelete libc-960901 do tagdelete libc-960902 do tagdelete libc-960903 do tagdelete libc-960904 do tagdelete libc-960905 do tagdelete libc-960906 do tagdelete libc-960907 do tagdelete libc-960908 do tagdelete libc-960909 do tagdelete libc-960910 do tagdelete libc-960911 do tagdelete libc-960912 do tagdelete libc-960913 do tagdelete libc-960918 do tagdelete libc-960919 do tagdelete libc-960920 do tagdelete libc-960921 do tagdelete libc-960922 do tagdelete libc-960923 do tagdelete libc-960925 do tagdelete libc-960926 do tagdelete libc-960927 do tagdelete libc-960928 do tagdelete libc-960929 do tagdelete libc-961001 do tagdelete libc-961004 do tagdelete libc-961005 do tagdelete libc-961006 do tagdelete libc-961007 do tagdelete libc-961008 do tagdelete libc-961009 do tagdelete libc-961010 do tagdelete libc-961011 do tagdelete libc-961012 do tagdelete libc-961013 do tagdelete libc-961014 do tagdelete libc-961015 do tagdelete libc-961016 do tagdelete libc-961017 do tagdelete libc-961018 do tagdelete libc-961019 do tagdelete libc-961020 do tagdelete libc-961021 do tagdelete libc-961022 do tagdelete libc-961023 do tagdelete libc-961024 do tagdelete libc-961025 do tagdelete libc-961026 do tagdelete libc-961027 do tagdelete libc-961028 do tagdelete libc-961029 do tagdelete libc-961030 do tagdelete libc-961031 do tagdelete libc-961101 do tagdelete libc-961102 do tagdelete libc-961103 do tagdelete libc-961104 do tagdelete libc-961105 do tagdelete libc-961106 do tagdelete libc-961107 do tagdelete libc-961108 do tagdelete libc-961109 do tagdelete libc-961110 do tagdelete libc-961111 do tagdelete libc-961114 do tagdelete libc-961115 do tagdelete libc-961116 do tagdelete libc-961117 do tagdelete libc-961118 do tagdelete libc-961119 do tagdelete libc-961120 do tagdelete libc-961121 do tagdelete libc-961203 do tagdelete libc-961204 do tagdelete libc-961205 do tagdelete libc-961206 do tagdelete libc-961207 do tagdelete libc-961208 do tagdelete libc-961209 do tagdelete libc-961210 do tagdelete libc-961211 do tagdelete libc-961212 do tagdelete libc-961213 do tagdelete libc-961214 do tagdelete libc-961215 do tagdelete libc-961216 do tagdelete libc-961217 do tagdelete libc-961218 do tagdelete libc-961219 do tagdelete libc-961220 do tagdelete libc-961221 do tagdelete libc-961222 do tagdelete libc-961223 do tagdelete libc-961224 do tagdelete libc-961225 do tagdelete libc-961226 do tagdelete libc-961227 do tagdelete libc-961228 do tagdelete libc-961229 do tagdelete libc-961230 do tagdelete libc-961231 do tagdelete libc-970101 do tagdelete libc-970102 do tagdelete libc-970103 do tagdelete libc-970104 do tagdelete libc-970105 do tagdelete libc-970106 do tagdelete libc-970107 do tagdelete libc-970108 do tagdelete libc-970109 do tagdelete libc-970110 do tagdelete libc-970111 do tagdelete libc-970112 do tagdelete libc-970113 do tagdelete libc-970114 do tagdelete libc-970115 do tagdelete libc-970116 do tagdelete libc-970117 do tagdelete libc-970118 do tagdelete libc-970119 do tagdelete libc-970120 do tagdelete libc-970121 do tagdelete libc-970122 do tagdelete libc-970123 do tagdelete libc-970124 do tagdelete libc-970125 do tagdelete libc-970126 do tagdelete libc-970127 do tagdelete libc-970128 do tagdelete libc-970129 do tagdelete libc-970130 do tagdelete libc-970131 do tagdelete libc-970201 do tagdelete libc-970202 do tagdelete libc-970203 do tagdelete libc-970204 do tagdelete libc-970205 do tagdelete libc-970206 do tagdelete libc-970207 do tagdelete libc-970208 do tagdelete libc-970209 do tagdelete libc-970210 do tagdelete libc-970211 do tagdelete libc-970212 do tagdelete libc-970213 do tagdelete libc-970214 do tagdelete libc-970215 do tagdelete libc-970216 do tagdelete libc-970217 do tagdelete libc-970218 do tagdelete libc-970219 do tagdelete libc-970220 do tagdelete libc-970221 do tagdelete libc-970222 do tagdelete libc-970223 do tagdelete libc-970224 do tagdelete libc-970225 do tagdelete libc-970226 do tagdelete libc-970227 do tagdelete libc-970228 do tagdelete libc-970301 do tagdelete libc-970302 do tagdelete libc-970303 do tagdelete libc-970304 do tagdelete libc-970305 do tagdelete libc-970306 do tagdelete libc-970307 do tagdelete libc-970308 do tagdelete libc-970309 do tagdelete libc-970310 do tagdelete libc-970311 do tagdelete libc-970312 do tagdelete libc-970313 do tagdelete libc-970314 do tagdelete libc-970315 do tagdelete libc-970316 do tagdelete libc-970317 do tagdelete libc-970318 do tagdelete libc-970319 do tagdelete libc-970320 do tagdelete libc-970321 do tagdelete libc-970322 do tagdelete libc-970323 do tagdelete libc-970324 do tagdelete libc-970325 do tagdelete libc-970326 do tagdelete libc-970327 do tagdelete libc-970328 do tagdelete libc-970329 do tagdelete libc-970330 do tagdelete libc-970331 do tagdelete libc-970401 do tagdelete libc-970402 do tagdelete libc-970403 do tagdelete libc-970404 do tagdelete libc-970405 do tagdelete libc-970406 do tagdelete libc-970407 do tagdelete libc-970408 do tagdelete libc-970409 do tagdelete libc-970410 do tagdelete libc-970411 do tagdelete libc-970412 do tagdelete libc-970413 do tagdelete libc-970414 do tagdelete libc-970415 do tagdelete libc-970416 do tagdelete libc-970417 do tagdelete libc-970418 do tagdelete libc-970419 do tagdelete libc-970420 do tagdelete libc-970421 do tagdelete libc-970422 do tagdelete libc-970423 do tagdelete libc-970424 do tagdelete libc-970425 do tagdelete libc-970426 do tagdelete libc-970427 do tagdelete libc-970428 do tagdelete libc-970429 do tagdelete libc-970430 do tagdelete libc-970501 do tagdelete libc-970502 do tagdelete libc-970503 do tagdelete libc-970504 do tagdelete libc-970505 do tagdelete libc-970506 do tagdelete libc-970507 do tagdelete libc-970508 do tagdelete libc-970509 do tagdelete libc-970510 do tagdelete libc-970511 do tagdelete libc-970512 do tagdelete libc-970513 do tagdelete libc-970514 do tagdelete libc-970515 do tagdelete libc-970516 do tagdelete libc-970517 do tagdelete libc-970518 do tagdelete libc-970519 do tagdelete libc-970520 do tagdelete libc-970521 do tagdelete libc-970522 do tagdelete libc-970523 do tagdelete libc-970524 do tagdelete libc-970525 do tagdelete libc-970526 do tagdelete libc-970527 do tagdelete libc-970528 do tagdelete libc-970529 do tagdelete libc-970530 do tagdelete libc-970531 do tagdelete libc-970601 do tagdelete libc-970602 do tagdelete libc-970603 do tagdelete libc-970604 do tagdelete libc-970605 do tagdelete libc-970606 do tagdelete libc-970607 do tagdelete libc-970608 do tagdelete libc-970609 do tagdelete libc-970610 do tagdelete libc-970611 do tagdelete libc-970612 do tagdelete libc-970613 do tagdelete libc-970614 do tagdelete libc-970615 do tagdelete libc-970616 do tagdelete libc-970617 do tagdelete libc-970618 do tagdelete libc-970619 do tagdelete libc-970620 do tagdelete libc-970621 do tagdelete libc-970622 do tagdelete libc-970624 do tagdelete libc-970625 do tagdelete libc-970626 do tagdelete libc-970627 do tagdelete libc-970628 do tagdelete libc-970629 do tagdelete libc-970630 do tagdelete libc-970701 do tagdelete libc-970702 do tagdelete libc-970703 do tagdelete libc-970704 do tagdelete libc-970705 do tagdelete libc-970707 do tagdelete libc-970708 do tagdelete libc-970709 do tagdelete libc-970710 do tagdelete libc-970713 do tagdelete libc-970715 do tagdelete libc-970717 do tagdelete libc-970718 do tagdelete libc-970719 do tagdelete libc-970720 do tagdelete libc-970721 do tagdelete libc-970722 do tagdelete libc-970723 do tagdelete libc-970724 do tagdelete libc-970725 do tagdelete libc-970726 do tagdelete libc-970727 do tagdelete libc-970728 do tagdelete libc-970729 do tagdelete libc-970730 do tagdelete libc-970731 do tagdelete libc-970801 do tagdelete libc-970802 do tagdelete libc-970803 do tagdelete libc-970804 do tagdelete libc-970805 do tagdelete libc-970806 do tagdelete libc-970807 do tagdelete libc-970808 do tagdelete libc-970809 do tagdelete libc-970810 do tagdelete libc-970811 do tagdelete libc-970812 do tagdelete libc-970813 do tagdelete libc-970814 do tagdelete libc-970815 do tagdelete libc-970816 do tagdelete libc-970817 do tagdelete libc-970818 do tagdelete libc-970819 do tagdelete libc-970820 do tagdelete libc-970821 do tagdelete libc-970822 do tagdelete libc-970823 do tagdelete libc-970824 do tagdelete libc-970825 do tagdelete libc-970826 do tagdelete libc-970827 do tagdelete libc-970828 do tagdelete libc-970829 do tagdelete libc-970830 do tagdelete libc-970831 do tagdelete libc-970901 do tagdelete libc-970902 do tagdelete libc-970903 do tagdelete libc-970904 do tagdelete libc-970905 do tagdelete libc-970906 do tagdelete libc-970907 do tagdelete libc-970908 do tagdelete libc-970911 do tagdelete libc-970912 do tagdelete libc-970913 do tagdelete libc-970914 do tagdelete libc-970915 do tagdelete libc-970916 do tagdelete libc-970917 do tagdelete libc-970918 do tagdelete libc-970919 do tagdelete libc-970920 do tagdelete libc-970921 do tagdelete libc-970922 do tagdelete libc-970923 do tagdelete libc-970924 do tagdelete libc-970925 do tagdelete libc-970926 do tagdelete libc-970927 do tagdelete libc-970928 do tagdelete libc-970929 do tagdelete libc-970930 do tagdelete libc-971001 do tagdelete libc-971018 do tagdelete libc-971019 do tagdelete libc-971020 do tagdelete libc-971021 do tagdelete libc-971022 do tagdelete libc-971023 do tagdelete libc-971024 do tagdelete libc-971025 do tagdelete libc-971026 do tagdelete libc-971027 do tagdelete libc-971028 do tagdelete libc-971029 do tagdelete libc-971030 do tagdelete libc-971031 do tagdelete libc-971101 do tagdelete libc-971102 do tagdelete libc-971103 do tagdelete libc-971104 do tagdelete libc-971105 do tagdelete libc-971106 do tagdelete libc-971107 do tagdelete libc-971108 do tagdelete libc-971109 do tagdelete libc-971110 do tagdelete libc-971111 do tagdelete libc-971112 do tagdelete libc-971113 do tagdelete libc-971114 do tagdelete libc-971115 do tagdelete libc-971116 do tagdelete libc-971117 do tagdelete libc-971118 do tagdelete libc-971120 do tagdelete libc-971121 do tagdelete libc-971122 do tagdelete libc-971123 do tagdelete libc-971124 do tagdelete libc-971125 do tagdelete libc-971126 do tagdelete libc-971127 do tagdelete libc-971128 do tagdelete libc-971129 do tagdelete libc-971130 do tagdelete libc-971201 do tagdelete libc-971203 do tagdelete libc-971204 do tagdelete libc-971205 do tagdelete libc-971206 do tagdelete libc-971207 do tagdelete libc-971208 do tagdelete libc-971209 do tagdelete libc-971210 do tagdelete libc-971211 do tagdelete libc-971212 do tagdelete libc-971213 do tagdelete libc-971214 do tagdelete libc-971217 do tagdelete libc-971218 do tagdelete libc-971219 do tagdelete libc-971220 do tagdelete libc-971221 do tagdelete libc-971222 do tagdelete libc-971223 do tagdelete libc-971224 do tagdelete libc-971225 do tagdelete libc-971226 do tagdelete libc-971227 do tagdelete libc-971228 do tagdelete libc-971229 do tagdelete libc-971230 do tagdelete libc-971231 do tagdelete libc-980103 do tagdelete libc-980104 do tagdelete libc-980105 do tagdelete libc-980106 do tagdelete libc-980107 do tagdelete libc-980108 do tagdelete libc-980109 do tagdelete libc-980110 do tagdelete libc-980111 do tagdelete libc-980112 do tagdelete libc-980114 do tagdelete libc-980115 do tagdelete libc-980116 do tagdelete libc-980117 do tagdelete libc-980118 do tagdelete libc-980119 do tagdelete libc-980120 do tagdelete libc-980121 do tagdelete libc-980122 do tagdelete libc-980123 do tagdelete libc-980124 do tagdelete libc-980125 do tagdelete libc-980126 do tagdelete libc-980127 do tagdelete libc-980128 do tagdelete libc-980129 do tagdelete libc-980130 do tagdelete libc-980212 do tagdelete libc-980213 do tagdelete libc-980214 do tagdelete libc-980215 do tagdelete libc-980216 do tagdelete libc-980217 do tagdelete libc-980218 do tagdelete libc-980219 do tagdelete libc-980220 do tagdelete libc-980221 do tagdelete libc-980222 do tagdelete libc-980223 do tagdelete libc-980224 do tagdelete libc-980225 do tagdelete libc-980226 do tagdelete libc-980227 do tagdelete libc-980228 do tagdelete libc-980301 do tagdelete libc-980302 do tagdelete libc-980303 do tagdelete libc-980304 do tagdelete libc-980306 do tagdelete libc-980307 do tagdelete libc-980308 do tagdelete libc-980309 do tagdelete libc-980310 do tagdelete libc-980311 do tagdelete libc-980312 do tagdelete libc-980313 do tagdelete libc-980314 do tagdelete libc-980315 do tagdelete libc-980316 do tagdelete libc-980317 do tagdelete libc-980318 do tagdelete libc-980319 do tagdelete libc-980320 do tagdelete libc-980321 do tagdelete libc-980322 do tagdelete libc-980323 do tagdelete libc-980324 do tagdelete libc-980325 do tagdelete libc-980326 do tagdelete libc-980327 do tagdelete libc-980328 do tagdelete libc-980329 do tagdelete libc-980330 do tagdelete libc-980331 do tagdelete libc-980401 do tagdelete libc-980402 do tagdelete libc-980403 do tagdelete libc-980404 do tagdelete libc-980405 do tagdelete libc-980406 do tagdelete libc-980407 do tagdelete libc-980408 do tagdelete libc-980409 do tagdelete libc-980410 do tagdelete libc-980411 do tagdelete libc-980412 do tagdelete libc-980413 do tagdelete libc-980414 do tagdelete libc-980428 do tagdelete libc-980429 do tagdelete libc-980430 do tagdelete libc-980501 do tagdelete libc-980502 do tagdelete libc-980503 do tagdelete libc-980504 do tagdelete libc-980505 do tagdelete libc-980506 do tagdelete libc-980507 do tagdelete libc-980508 do tagdelete libc-980509 do tagdelete libc-980510 do tagdelete libc-980512 do tagdelete libc-980513 do tagdelete libc-980514 do tagdelete libc-980515 do tagdelete libc-980516 do tagdelete libc-980517 do tagdelete libc-980518 do tagdelete libc-980519 do tagdelete libc-980520 do tagdelete libc-980521 do tagdelete libc-980522 do tagdelete libc-980523 do tagdelete libc-980524 do tagdelete libc-980525 do tagdelete libc-980526 do tagdelete libc-980527 do tagdelete libc-980528 do tagdelete libc-980529 do tagdelete libc-980530 do tagdelete libc-980531 do tagdelete libc-980601 do tagdelete libc-980602 do tagdelete libc-980603 do tagdelete libc-980604 do tagdelete libc-980605 do tagdelete libc-980606 do tagdelete libc-980607 do tagdelete libc-980608 do tagdelete libc-980609 do tagdelete libc-980610 do tagdelete libc-980611 do tagdelete libc-980612 do tagdelete libc-980613 do tagdelete libc-980614 do tagdelete libc-980615 do tagdelete libc-980616 do tagdelete libc-980617 do tagdelete libc-980618 do tagdelete libc-980619 do tagdelete libc-980620 do tagdelete libc-980621 do tagdelete libc-980622 do tagdelete libc-980623 do tagdelete libc-980624 do tagdelete libc-980625 do tagdelete libc-980626 do tagdelete libc-980627 do tagdelete libc-980628 do tagdelete libc-980629 do tagdelete libc-980630 do tagdelete libc-980701 do tagdelete libc-980702 do tagdelete libc-980703 do tagdelete libc-980704 do tagdelete libc-980705 do tagdelete libc-980706 do tagdelete libc-980707 do tagdelete libc-980708 do tagdelete libc-980709 do tagdelete libc-980710 do tagdelete libc-980711 do tagdelete libc-980712 do tagdelete libc-980713 do tagdelete libc-980714 do tagdelete libc-980715 do tagdelete libc-980716 do tagdelete libc-980717 do tagdelete libc-980718 do tagdelete libc-980719 do tagdelete libc-980720 do tagdelete libc20x-970306 do tagdelete libc20x-97031 do tagdelete libc20x-970316 do tagdelete libc20x-970318 do tagdelete libc20x-970319 do tagdelete libc20x-970404 do tagdelete libc20x-970417 do tagdelete libc_1_09 do tagdelete lisp-bob do tagdelete make-3-72-10 do tagdelete make-3-72-11 do tagdelete make-3-72-12 do tagdelete make-3-72-13 do tagdelete make-3-72-9 do tagdelete make-3-73 do tagdelete make-3-73-1 do tagdelete make-3-73-2 do tagdelete make-3-73-3 do tagdelete make-3-74 do tagdelete make-3-74-1 do tagdelete make-3-74-2 do tagdelete make-3-74-3 do tagdelete make-3-74-4 do tagdelete make-3-74-5 do tagdelete make-3-74-6 do tagdelete make-3-74-7 do tagdelete make-3-75 do tagdelete make-3-75-1 do tagdelete make-3-75-91 do tagdelete make-3-75-92 do tagdelete make-3-75-93 do tagdelete make-3-76 do tagdelete make-3-76-1 do tagdelete make-3-77 do tagdelete merge-multi-tty-to-trunk do tagdelete merge-unicode-to-trunk do tagdelete mh-e-7_85 do tagdelete mh-e-7_90 do tagdelete mh-e-7_91 do tagdelete mh-e-7_92 do tagdelete mh-e-7_93 do tagdelete mh-e-7_94 do tagdelete mh-e-7_95 do tagdelete mh-e-8.2.90 do tagdelete mh-e-8.2.91 do tagdelete mh-e-8.2.92 do tagdelete mh-e-8.2.93 do tagdelete mh-e-8.3 do tagdelete mh-e-8.3.1 do tagdelete mh-e-8.4 do tagdelete mh-e-8.5 do tagdelete mh-e-8_0 do tagdelete mh-e-8_0_1 do tagdelete mh-e-8_0_2 do tagdelete mh-e-8_0_3 do tagdelete mh-e-8_1 do tagdelete mh-e-8_2 do tagdelete mh-e-doc-7_94 do tagdelete mh-e-doc-8.3 do tagdelete mh-e-doc-8.4 do tagdelete mh-e-doc-8.5 do tagdelete mh-e-doc-8_0 do tagdelete mh-e-doc-8_0_1 do tagdelete mh-e-doc-8_0_3 do tagdelete mh-e-doc-8_1 do tagdelete mh-e-doc-8_2 do tagdelete multi-tty-base do tagdelete patches_21_0_base do tagdelete raeburn-tag-4-for-export do tagdelete raeburn-tag-5-for-export do tagdelete raeburn-tag-6-for-export do tagdelete raeburn-tag-7-for-export do tagdelete release-0-0 do tagdelete release-0-1 do tagdelete release-1-0 do tagdelete remove-carbon do tagdelete remove-vms do tagdelete root-libc-2_0_x-branch do tagdelete small-dump-base do tagdelete sml-mode-6.0 do tagdelete sml-mode-6.1 do tagdelete tmp_pcl_tag_131034C # keep ttn-vms-21-2-B2 # keep ttn-vms-21-2-B3 # keep ttn-vms-21-2-B4 do tagdelete unicode-post-font-backend do tagdelete unicode-pre-font-backend do tagdelete unicode-xft-base do tagdelete v0.1 do tagdelete v0.1.0 do tagdelete v0.1.1 do tagdelete v0.1.2 do tagdelete v0.1.3 do tagdelete v0.2.0 do tagdelete v0.3.0 do tagdelete v1_7i do tagdelete v2007-Sep-10 do tagdelete xwidget-0.2 do tagdelete zsh-merge-ognus-1 do tagdelete zsh-sync-ognus-2 do tagdelete zsh-sync-ognus-3 undefine tagdelete undefine tagrename # # TO DO: drop the elpa branch. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-27 0:33 ` Eric S. Raymond @ 2014-01-27 5:16 ` Werner LEMBERG 2014-01-27 16:31 ` Eli Zaretskii 2014-01-27 10:04 ` Andreas Schwab ` (2 subsequent siblings) 3 siblings, 1 reply; 42+ messages in thread From: Werner LEMBERG @ 2014-01-27 5:16 UTC (permalink / raw) To: esr; +Cc: eliz, schwab, emacs-devel > By the time I did groff, late last year, my tools and procedures for > normal cases were pretty well routinized and bulletproofed. You can > read about them here: Speaking as the (almost former) groff maintainer: The conversion wasn't perfect at the first time – it suffered the *empty ChangeLog* problem due to a too small time window for merging related multiple CVS commits into a single git commit –, but Eric posted the git repository for downloading (or rather, he posted a fast-import dump with instructions how to proceed), and after some improvements I was satisfied with the result, which is now the official git repository. Thanks again for that, Eric! > The other: historically, I've usually worked in collaboration with a > Mr. Inside, a senior project dev, who checked my work in progress > from a position of intimate knowledge of the project history. > > Congratulations, I think you've elected yourself for that job. Hehe :-) Werner ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-27 5:16 ` Werner LEMBERG @ 2014-01-27 16:31 ` Eli Zaretskii 2014-01-27 17:42 ` Werner LEMBERG 0 siblings, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2014-01-27 16:31 UTC (permalink / raw) To: Werner LEMBERG; +Cc: esr, emacs-devel > Date: Mon, 27 Jan 2014 06:16:53 +0100 (CET) > Cc: eliz@gnu.org, schwab@linux-m68k.org, emacs-devel@gnu.org > From: Werner LEMBERG <wl@gnu.org> > > Speaking as the (almost former) groff maintainer: The conversion > wasn't perfect at the first time -- it suffered the *empty ChangeLog* > problem due to a too small time window for merging related multiple > CVS commits into a single git commit --, but Eric posted the git > repository for downloading (or rather, he posted a fast-import dump > with instructions how to proceed), and after some improvements I was > satisfied with the result, which is now the official git repository. With all due respect, Werner, I don't think your experience with Groff is enough to reassure us that the problems are imaginary. With its strictly linear history (not a single branch or merge!), and not even 2300 revisions, Groff's history is almost 2 orders of magnitude smaller than Emacs's. I also don't see any traces of converted references to old revision numbers (apologies if I missed them). And you only switched a month and a half ago, so cannot yet claim a long-term experience. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-27 16:31 ` Eli Zaretskii @ 2014-01-27 17:42 ` Werner LEMBERG 2014-01-27 17:54 ` Eli Zaretskii 0 siblings, 1 reply; 42+ messages in thread From: Werner LEMBERG @ 2014-01-27 17:42 UTC (permalink / raw) To: eliz; +Cc: esr, emacs-devel >> Speaking as the (almost former) groff maintainer: The conversion >> wasn't perfect at the first time -- it suffered the *empty >> ChangeLog* problem due to a too small time window for merging >> related multiple CVS commits into a single git commit --, but Eric >> posted the git repository for downloading (or rather, he posted a >> fast-import dump with instructions how to proceed), and after some >> improvements I was satisfied with the result, which is now the >> official git repository. > > With all due respect, Werner, I don't think your experience with > Groff is enough to reassure us that the problems are imaginary. Oh, you got me wrong. My main statement is rather that the git repository can be easily inspected before it becomes `official'. Werner ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-27 17:42 ` Werner LEMBERG @ 2014-01-27 17:54 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2014-01-27 17:54 UTC (permalink / raw) To: Werner LEMBERG; +Cc: esr, emacs-devel > Date: Mon, 27 Jan 2014 18:42:56 +0100 (CET) > Cc: esr@thyrsus.com, emacs-devel@gnu.org > From: Werner LEMBERG <wl@gnu.org> > > > > With all due respect, Werner, I don't think your experience with > > Groff is enough to reassure us that the problems are imaginary. > > Oh, you got me wrong. My main statement is rather that the git > repository can be easily inspected before it becomes `official'. Sorry about my misunderstanding. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-27 0:33 ` Eric S. Raymond 2014-01-27 5:16 ` Werner LEMBERG @ 2014-01-27 10:04 ` Andreas Schwab 2014-01-27 13:22 ` Eric S. Raymond 2014-01-27 16:25 ` Goals for repo conversion day Eli Zaretskii 2014-01-27 16:28 ` Bzr's "confusion" between branches and repositories Eli Zaretskii 3 siblings, 1 reply; 42+ messages in thread From: Andreas Schwab @ 2014-01-27 10:04 UTC (permalink / raw) To: esr; +Cc: Eli Zaretskii, emacs-devel There is one more thing in the history that may be worth fixing, though it may lead to quite a bit of manual work. Before emacs switched to CVS the sources were kept in RCS, and files were deleted by renaming the RCS file prefixing its name with "=" (to keep the history, since RCS doesn't have the concept of an attic like CVS). The obstacle is that there is no record of this deletion except in the ChangeLog file, and at that time the ChangeLog files weren't kept in RCS (they were versioned by numbered backups only). So in order to find the exact point in time when the file has been deleted for real one would have to grep the ChangeLog file for mentioning the deletion and look up the surrounding text in the commit log. For example, the file lisp/speedbspec.el only exists as lisp/=speedbspec.el in the current history, added in commit 73bf48f. The next mentioning of the string "speedbspec.el" was in commit ab18f00, which corresponds to the point where the file was deleted. The corresponding changelog file (lisp/ChangeLog.7) has this entry: 1998-07-10 Eric M. Ludlam <zappo@ultranet.com> * speedbspec.el: Deleted; now integrated into speedbar.el. * speedbar.el: More commentary. Note that the first line of the entry isn't mentioned in commit ab18f00, but we now know that the file was deleted here. The next commit touching this file is 1c3e7fb with the message "properly mark Attic files as deleted", where the file was finally deleted from the tree. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-27 10:04 ` Andreas Schwab @ 2014-01-27 13:22 ` Eric S. Raymond 2014-01-28 8:14 ` Ulrich Mueller 0 siblings, 1 reply; 42+ messages in thread From: Eric S. Raymond @ 2014-01-27 13:22 UTC (permalink / raw) To: Andreas Schwab; +Cc: Eli Zaretskii, emacs-devel Andreas Schwab <schwab@linux-m68k.org>: > There is one more thing in the history that may be worth fixing, though > it may lead to quite a bit of manual work. Before emacs switched to CVS > the sources were kept in RCS, and files were deleted by renaming the RCS > file prefixing its name with "=" (to keep the history, since RCS doesn't > have the concept of an attic like CVS). The obstacle is that there is > no record of this deletion except in the ChangeLog file, and at that > time the ChangeLog files weren't kept in RCS (they were versioned by > numbered backups only). So in order to find the exact point in time > when the file has been deleted for real one would have to grep the > ChangeLog file for mentioning the deletion and look up the surrounding > text in the commit log. For example, the file lisp/speedbspec.el only > exists as lisp/=speedbspec.el in the current history, added in commit > 73bf48f. The next mentioning of the string "speedbspec.el" was in > commit ab18f00, which corresponds to the point where the file was > deleted. The corresponding changelog file (lisp/ChangeLog.7) has this > entry: > > 1998-07-10 Eric M. Ludlam <zappo@ultranet.com> > > * speedbspec.el: Deleted; now integrated into speedbar.el. > * speedbar.el: More commentary. > > Note that the first line of the entry isn't mentioned in commit ab18f00, > but we now know that the file was deleted here. The next commit > touching this file is 1c3e7fb with the message "properly mark Attic > files as deleted", where the file was finally deleted from the tree. > > Andreas. Yuck. Fortunately, I have a search primitive that will find all these instances. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-27 13:22 ` Eric S. Raymond @ 2014-01-28 8:14 ` Ulrich Mueller 2014-01-28 8:58 ` Andreas Schwab 0 siblings, 1 reply; 42+ messages in thread From: Ulrich Mueller @ 2014-01-28 8:14 UTC (permalink / raw) To: Eric S. Raymond; +Cc: Eli Zaretskii, Andreas Schwab, emacs-devel >>>>> On Mon, 27 Jan 2014, Eric S. Raymond wrote: > Andreas Schwab <schwab@linux-m68k.org>: >> There is one more thing in the history that may be worth fixing, >> though it may lead to quite a bit of manual work. Before emacs >> switched to CVS the sources were kept in RCS, and files were >> deleted by renaming the RCS file prefixing its name with "=" (to >> keep the history, since RCS doesn't have the concept of an attic >> like CVS). The obstacle is that there is no record of this deletion >> except in the ChangeLog file, and at that time the ChangeLog files >> weren't kept in RCS (they were versioned by numbered backups only). >> So in order to find the exact point in time when the file has been >> deleted for real one would have to grep the ChangeLog file for >> mentioning the deletion and look up the surrounding text in the >> commit log. For example, the file lisp/speedbspec.el only exists as >> lisp/=speedbspec.el in the current history, added in commit >> 73bf48f. The next mentioning of the string "speedbspec.el" was in >> commit ab18f00, which corresponds to the point where the file was >> deleted. The corresponding changelog file (lisp/ChangeLog.7) has >> this entry: >> >> 1998-07-10 Eric M. Ludlam <zappo@ultranet.com> >> >> * speedbspec.el: Deleted; now integrated into speedbar.el. >> * speedbar.el: More commentary. >> >> Note that the first line of the entry isn't mentioned in commit >> ab18f00, but we now know that the file was deleted here. The next >> commit touching this file is 1c3e7fb with the message "properly >> mark Attic files as deleted", where the file was finally deleted >> from the tree. > Yuck. > Fortunately, I have a search primitive that will find all these > instances. So, this will take care of deleted files. However, I wonder how renaming of files was handled in pre-CVS times? My guess would be that the RCS file would have been renamed. How could one find out if and when this happened? Ulrich ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-28 8:14 ` Ulrich Mueller @ 2014-01-28 8:58 ` Andreas Schwab 2014-01-28 9:07 ` David Kastrup 2014-01-28 15:40 ` What to do about the attic files Eric S. Raymond 0 siblings, 2 replies; 42+ messages in thread From: Andreas Schwab @ 2014-01-28 8:58 UTC (permalink / raw) To: Ulrich Mueller; +Cc: Eric S. Raymond, Eli Zaretskii, emacs-devel Ulrich Mueller <ulm@gentoo.org> writes: > So, this will take care of deleted files. However, I wonder how > renaming of files was handled in pre-CVS times? My guess would be that > the RCS file would have been renamed. Good point. > How could one find out if and when this happened? Only from the ChangeLog. Especially the files in src/m were frequently renamed. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-28 8:58 ` Andreas Schwab @ 2014-01-28 9:07 ` David Kastrup 2014-01-28 15:40 ` What to do about the attic files Eric S. Raymond 1 sibling, 0 replies; 42+ messages in thread From: David Kastrup @ 2014-01-28 9:07 UTC (permalink / raw) To: emacs-devel Andreas Schwab <schwab@linux-m68k.org> writes: > Ulrich Mueller <ulm@gentoo.org> writes: > >> So, this will take care of deleted files. However, I wonder how >> renaming of files was handled in pre-CVS times? My guess would be that >> the RCS file would have been renamed. > > Good point. > >> How could one find out if and when this happened? > > Only from the ChangeLog. Especially the files in src/m were frequently > renamed. This is getting silly. When "renaming" files in either RCS _or_ CVS, _either_ the file history _or_ the directory state (meaning that an older checkout did no longer compile because files appeared under their new name) was _lost_. Why should we _now_ try rewriting distant history that was good enough when it was still young? -- David Kastrup ^ permalink raw reply [flat|nested] 42+ messages in thread
* What to do about the attic files 2014-01-28 8:58 ` Andreas Schwab 2014-01-28 9:07 ` David Kastrup @ 2014-01-28 15:40 ` Eric S. Raymond 1 sibling, 0 replies; 42+ messages in thread From: Eric S. Raymond @ 2014-01-28 15:40 UTC (permalink / raw) To: Andreas Schwab; +Cc: Ulrich Mueller, Eli Zaretskii, emacs-devel Andreas Schwab <schwab@linux-m68k.org>: > > How could one find out if and when this happened? > > Only from the ChangeLog. Especially the files in src/m were frequently > renamed. I do not hold out much hope that we can reconstruct those renames completely. But I will look into it. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-27 0:33 ` Eric S. Raymond 2014-01-27 5:16 ` Werner LEMBERG 2014-01-27 10:04 ` Andreas Schwab @ 2014-01-27 16:25 ` Eli Zaretskii 2014-01-27 16:28 ` Bzr's "confusion" between branches and repositories Eli Zaretskii 3 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2014-01-27 16:25 UTC (permalink / raw) To: esr; +Cc: schwab, emacs-devel > Date: Sun, 26 Jan 2014 19:33:12 -0500 > From: "Eric S. Raymond" <esr@thyrsus.com> > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org I initially wrote a much longer and detailed response, but eventually decided to scrap it. I doubt that this discussion is going anywhere, since you are determined to do what you think is right, no matter what I say or show. So this is a much shorter version, which only touches on a few issues that I don't yet understand, or where you didn't yet say enough. > To illustrate my methods, I fixed this by adding those revnos to the > ChangeLog section of the map file I enclosed in my last mail (it is > the file FOSSILS in my conversion directory). Then I ran a Python > script called 'decorate.py' that patched in the corresponding action > stamps. The point is that I didn't have to do the lookup by hand; the > fixup took less time to do than to describe. What will the "patched" ChangeLog entries and log messages look like? I think it's important that we see that in advance. > The Bazaar portion of the history isn't the problem, the CVS part is. > There are many instances in the CVS part of the Emacs history that > look something like this: > > 1. Eli changes file A and commits it > 2. Eli changes file B and commits it with an identical change comment. That's where you are wrong: in the CVS part of Emacs history, the change comments for these two commits will usually be different. Here's a typical example: ------------------------------------------------------------ revno: 40047 committer: Eli Zaretskii <eliz@gnu.org> timestamp: Fri 2001-10-19 16:32:49 +0000 message: *** empty log message *** modified: lisp/ChangeLog ------------------------------------------------------------ revno: 40046 committer: Eli Zaretskii <eliz@gnu.org> timestamp: Fri 2001-10-19 16:30:11 +0000 message: (auto-mode-alist): Associate .indent.pro with Fundamental mode. Suggested by Samuel Padgett <spadgett1@nc.rr.com>. modified: lisp/files.el Here's another, more complex one (several commits in different directories, followed by commits of the 2 ChangeLog files describing those changes): ------------------------------------------------------------ revno: 45027 committer: Richard M. Stallman <rms@gnu.org> timestamp: Tue 2002-04-30 17:57:09 +0000 message: *** empty log message *** modified: lisp/ChangeLog src/ChangeLog ------------------------------------------------------------ revno: 45026 committer: Richard M. Stallman <rms@gnu.org> timestamp: Tue 2002-04-30 17:56:19 +0000 message: (display-time-mail-directory, display-time-mail-function): Doc fixes. modified: lisp/time.el ------------------------------------------------------------ revno: 45025 committer: Richard M. Stallman <rms@gnu.org> timestamp: Tue 2002-04-30 17:55:02 +0000 message: (Special Properties): Add index entry and xref for tooltips. modified: lispref/text.texi ------------------------------------------------------------ revno: 45024 committer: Richard M. Stallman <rms@gnu.org> timestamp: Tue 2002-04-30 17:53:39 +0000 message: Comment change. modified: src/eval.c src/fns.c ------------------------------------------------------------ revno: 45023 committer: Richard M. Stallman <rms@gnu.org> timestamp: Tue 2002-04-30 17:48:09 +0000 message: Delete ediff-hook.el page. modified: lisp/loaddefs.el ------------------------------------------------------------ revno: 45022 committer: Richard M. Stallman <rms@gnu.org> timestamp: Tue 2002-04-30 17:46:40 +0000 message: (Frequire): Error if called while preparing to dump. modified: src/fns.c ------------------------------------------------------------ revno: 45021 committer: Richard M. Stallman <rms@gnu.org> timestamp: Tue 2002-04-30 17:46:26 +0000 message: (do_autoload): Error if called while preparing to dump. modified: src/eval.c There probably are multiple commits with the same commit message, but they are a tiny minority. > There is another case common in the Emacs history that can be > coalesced. That is: a file modification immediately followed by a > ChangeLog change describing it What do you mean by "immediately followed"? Is there some time window involved, or some other condition? If so, please spell them out. And please take a good look at the examples I pointed to in my previous message and above: those are very good examples of what most of our CVS history looks like. Instead of talking about hypothetical problems, let's talk about real ones, the ones relevant to _this_ project. > The other: historically, I've usually worked in collaboration with a > Mr. Inside, a senior project dev, who checked my work in progress from > a position of intimate knowledge of the project history. > > Congratulations, I think you've elected yourself for that job. Thanks, but manual QA can only go that far. I was talking about an automated one. There's no way a human, even a genius such as myself, could inspect any significant portion of a 120k commit history. There has to be automated verification of some kind, otherwise the quality of the result is anyone's guess, your record of converting other projects notwithstanding. Besides, I'm very much in doubt that cooperating with me will be a good idea: we see things too differently, and based on this discussion, will be unable to convince each other. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Bzr's "confusion" between branches and repositories 2014-01-27 0:33 ` Eric S. Raymond ` (2 preceding siblings ...) 2014-01-27 16:25 ` Goals for repo conversion day Eli Zaretskii @ 2014-01-27 16:28 ` Eli Zaretskii 2014-01-27 16:47 ` Andreas Schwab 3 siblings, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2014-01-27 16:28 UTC (permalink / raw) To: esr; +Cc: emacs-devel > Date: Sun, 26 Jan 2014 19:33:12 -0500 > From: "Eric S. Raymond" <esr@thyrsus.com> > Cc: schwab@linux-m68k.org, emacs-devel@gnu.org > > Bazaar's very real branch/repo confusion is probably not relevant, Since you are saying this in quite a few of your blogs and articles, let's finish this once and for all: there is no confusion. Bazaar works on branches, period. Bazaar is deeply branch-centric, right down to the level of its DAG topology and the way it handles merges. A bzr repository is just a convenience for storing several related branches in a way that saves disk storage, that's all. With the exception of a handful of commands that make some sense in a repo (such as "bzr branches" and "bzr info"), _all_ of the bzr commands work and are meaningful only in a branch. If you want another evidence that bzr repositories are just containers with little user-level impact, hear this: last versions of bzr support co-located branches, but the result, i.e. several co-located branches that live in a single disk directory, is _not_ a repository, and is not referenced as such. They didn't even agree on a name, before the development went dark. You found the "confusion" in what bzr-fast-import does, but that is an import tool, and has nothing to do with day-to-day bzr ops. It does what it does because you will generally import from a repository of another VCS. So please, stop disseminating this fallacy. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Bzr's "confusion" between branches and repositories 2014-01-27 16:28 ` Bzr's "confusion" between branches and repositories Eli Zaretskii @ 2014-01-27 16:47 ` Andreas Schwab 2014-01-27 16:53 ` Eli Zaretskii 0 siblings, 1 reply; 42+ messages in thread From: Andreas Schwab @ 2014-01-27 16:47 UTC (permalink / raw) To: Eli Zaretskii; +Cc: esr, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > Since you are saying this in quite a few of your blogs and articles, > let's finish this once and for all: there is no confusion. Bazaar > works on branches, period. Bazaar is deeply branch-centric, right > down to the level of its DAG topology and the way it handles merges. > A bzr repository is just a convenience for storing several related > branches in a way that saves disk storage, that's all. This is not true for most repositories. The branches are usually connected together by having a common root. This is also the case of the Emacs repository: *all* branches (except the old elpa branch) have a single root in common. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Bzr's "confusion" between branches and repositories 2014-01-27 16:47 ` Andreas Schwab @ 2014-01-27 16:53 ` Eli Zaretskii 2014-01-27 17:15 ` Eli Zaretskii 0 siblings, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2014-01-27 16:53 UTC (permalink / raw) To: Andreas Schwab; +Cc: esr, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Cc: esr@thyrsus.com, emacs-devel@gnu.org > Date: Mon, 27 Jan 2014 17:47:24 +0100 > > Eli Zaretskii <eliz@gnu.org> writes: > > > A bzr repository is just a convenience for storing several related > > branches in a way that saves disk storage, that's all. > > This is not true for most repositories. The branches are usually > connected together by having a common root. Yes, that's what I meant by "related". Sorry for being inaccurate. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Bzr's "confusion" between branches and repositories 2014-01-27 16:53 ` Eli Zaretskii @ 2014-01-27 17:15 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2014-01-27 17:15 UTC (permalink / raw) To: schwab; +Cc: esr, emacs-devel > Date: Mon, 27 Jan 2014 18:53:37 +0200 > From: Eli Zaretskii <eliz@gnu.org> > Cc: esr@thyrsus.com, emacs-devel@gnu.org > > > From: Andreas Schwab <schwab@linux-m68k.org> > > Cc: esr@thyrsus.com, emacs-devel@gnu.org > > Date: Mon, 27 Jan 2014 17:47:24 +0100 > > > > Eli Zaretskii <eliz@gnu.org> writes: > > > > > A bzr repository is just a convenience for storing several related > > > branches in a way that saves disk storage, that's all. > > > > This is not true for most repositories. The branches are usually > > connected together by having a common root. > > Yes, that's what I meant by "related". Sorry for being inaccurate. Btw, it's possible to have branches without a common root (or any common revisions) in a bzr repo, it just doesn't make sense, because there will be no disk space savings. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 14:42 ` Eli Zaretskii 2014-01-25 14:46 ` Eli Zaretskii 2014-01-25 16:01 ` Eric S. Raymond @ 2014-01-25 19:32 ` Glenn Morris 2 siblings, 0 replies; 42+ messages in thread From: Glenn Morris @ 2014-01-25 19:32 UTC (permalink / raw) To: Eli Zaretskii; +Cc: esr, schwab, emacs-devel Eli Zaretskii wrote: > Comments and opinions by others are welcome. I agree wholeheartedly with basically everything you said. ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 14:06 ` Goals for repo conversion day Eric S. Raymond 2014-01-25 14:42 ` Eli Zaretskii @ 2014-01-25 16:09 ` Andreas Schwab 2014-01-25 17:01 ` Thien-Thi Nguyen 2 siblings, 0 replies; 42+ messages in thread From: Andreas Schwab @ 2014-01-25 16:09 UTC (permalink / raw) To: esr; +Cc: Eli Zaretskii, emacs-devel My goal was to preserve as much history as possible, not to rewrite it. The only editing I introduced were artificial merge commits, since they could be added without altering the actual file contents. (A lot of damage was done to the glibc repository when it was converted. I wanted to avoid that.) Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 14:06 ` Goals for repo conversion day Eric S. Raymond 2014-01-25 14:42 ` Eli Zaretskii 2014-01-25 16:09 ` Andreas Schwab @ 2014-01-25 17:01 ` Thien-Thi Nguyen 2014-01-25 19:54 ` Eric S. Raymond 2 siblings, 1 reply; 42+ messages in thread From: Thien-Thi Nguyen @ 2014-01-25 17:01 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1416 bytes --] () "Eric S. Raymond" <esr@thyrsus.com> () Sat, 25 Jan 2014 09:06:38 -0500 (a) Seamless history browsing. This is false fruit. Archeologists LIKE the seams. Smoothing the repo (possible) but not the external references into the repo (impossible) is at best a half-assed "solution", at worst a ridiculous and never-ending font of WOMBAT laments. I think the best we can hope for is a decent map (and of course nice Emacs-based tools for grokking it in full :-D). (b) Information preservation for any future move to another VCS. (c) Cryptosigning so that future release integrity is protected and historical release reconstructions can be trusted (that is, assuming we don't believe the code history has already been corrupted). (d) Avoidance of metadata representations that are easily stripped or scrambled if someone gets momentarily forgetful in the future. If these can be achieved w/o undue repo futzing, that would be best. We will have a repo that is (permanently) ugly up to the point where (going forward) we begin to maintain it more beautifully, but that's just fine. In the long run, ugly truth is better than pretty lies. -- Thien-Thi Nguyen GPG key: 4C807502 (if you're human and you know it) read my lisp: (responsep (questions 'technical) (not (via 'mailing-list))) => nil [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 17:01 ` Thien-Thi Nguyen @ 2014-01-25 19:54 ` Eric S. Raymond 2014-01-25 22:08 ` Thien-Thi Nguyen 0 siblings, 1 reply; 42+ messages in thread From: Eric S. Raymond @ 2014-01-25 19:54 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1147 bytes --] Thien-Thi Nguyen <ttn@gnu.org>: > (a) Seamless history browsing. > > This is false fruit. Archeologists LIKE the seams. That is true. But beware of misleading analogies! Archeologists like the seams mainly because stratigraphy helps them date things. This is a problem historians looking through a version-control repository won't have. > Smoothing the repo > (possible) but not the external references into the repo (impossible) is > at best a half-assed "solution", at worst a ridiculous and never-ending > font of WOMBAT laments. I think the best we can hope for is a decent > map (and of course nice Emacs-based tools for grokking it in full :-D). We will have a decent map. Whether anyone cares enough to build those tools is another question. > If these can be achieved w/o undue repo futzing, that would be best. I intend to publish the conversion script here for review well before it is applied; you will be able to judge for yourself whether it is "undue", and suggest improvements. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 190 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 19:54 ` Eric S. Raymond @ 2014-01-25 22:08 ` Thien-Thi Nguyen 2014-01-26 3:24 ` Eric S. Raymond 0 siblings, 1 reply; 42+ messages in thread From: Thien-Thi Nguyen @ 2014-01-25 22:08 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1288 bytes --] () "Eric S. Raymond" <esr@thyrsus.com> () Sat, 25 Jan 2014 14:54:01 -0500 That is true. But beware of misleading analogies! Archeologists like the seams mainly because stratigraphy helps them date things. Repo contents is first order information. Higher order is: What are the structures that hold the repo contents (i.e., what is the VCS)?; What are the factors in its choice?; Why are hackers so human?; ... This is a problem historians looking through a version-control repository won't have. Right. They will have this problem from the extra-repo references in mailing list archives (public and private), bug tracker databases, blogs, etc. If you really want to help historians, the maps (and tools) will be what they will thank you for the most, for the insight afforded. (Insert Alan Perlis quote here.) Historians might thank you, anyway, for an "antiseptic" repo, but privately refer to an unsullied copy, for the Real Deal, a place where Free and Hippocratic programs are composed and run (composably :-D). -- Thien-Thi Nguyen GPG key: 4C807502 (if you're human and you know it) read my lisp: (responsep (questions 'technical) (not (via 'mailing-list))) => nil [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: Goals for repo conversion day 2014-01-25 22:08 ` Thien-Thi Nguyen @ 2014-01-26 3:24 ` Eric S. Raymond 0 siblings, 0 replies; 42+ messages in thread From: Eric S. Raymond @ 2014-01-26 3:24 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 721 bytes --] Thien-Thi Nguyen <ttn@gnu.org>: > () "Eric S. Raymond" <esr@thyrsus.com> > () Sat, 25 Jan 2014 14:54:01 -0500 > > That is true. But beware of misleading analogies! Archeologists > like the seams mainly because stratigraphy helps them date things. > > Repo contents is first order information. Higher order is: What are > the structures that hold the repo contents (i.e., what is the VCS)?; > What are the factors in its choice?; Why are hackers so human?; ... I agree that may be of intyerest at some far future time. For that reason, and others, I do recommend theat old repositories be archived rather than deleted out of hand. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 190 bytes --] ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-25 6:25 ` Eric S. Raymond 2014-01-25 7:44 ` Eli Zaretskii @ 2014-01-25 21:57 ` Stefan Monnier 2014-01-25 23:27 ` Eric S. Raymond 1 sibling, 1 reply; 42+ messages in thread From: Stefan Monnier @ 2014-01-25 21:57 UTC (permalink / raw) To: Eric S. Raymond; +Cc: Eli Zaretskii, schwab, emacs-devel > Andreas says I should do nothing with that branch. But if elpa has > its own repo now, probably it should be trimmed out on conversion day. You can drop that branch in the new Git. Stefan ^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: The git mirror is *very* badly screwed up 2014-01-25 21:57 ` The git mirror is *very* badly screwed up Stefan Monnier @ 2014-01-25 23:27 ` Eric S. Raymond 0 siblings, 0 replies; 42+ messages in thread From: Eric S. Raymond @ 2014-01-25 23:27 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, schwab, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca>: > > Andreas says I should do nothing with that branch. But if elpa has > > its own repo now, probably it should be trimmed out on conversion day. > > You can drop that branch in the new Git. Acknowledged. I've added that to-do to a comment in the lift file. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> ^ permalink raw reply [flat|nested] 42+ messages in thread
end of thread, other threads:[~2014-01-28 15:40 UTC | newest] Thread overview: 42+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-24 16:29 The git mirror is *very* badly screwed up Eric S. Raymond 2014-01-24 16:42 ` Andreas Schwab 2014-01-24 17:07 ` Eric S. Raymond 2014-01-24 17:22 ` Andreas Schwab 2014-01-24 18:54 ` Eric S. Raymond 2014-01-24 20:03 ` Eric S. Raymond 2014-01-24 21:06 ` Andreas Schwab 2014-01-24 21:27 ` Eli Zaretskii 2014-01-25 6:25 ` Eric S. Raymond 2014-01-25 7:44 ` Eli Zaretskii 2014-01-25 14:06 ` Goals for repo conversion day Eric S. Raymond 2014-01-25 14:42 ` Eli Zaretskii 2014-01-25 14:46 ` Eli Zaretskii 2014-01-25 16:01 ` Eric S. Raymond 2014-01-25 16:15 ` Paul Eggert 2014-01-25 17:15 ` Eli Zaretskii 2014-01-25 21:01 ` Eric S. Raymond 2014-01-26 17:32 ` Eli Zaretskii 2014-01-27 0:33 ` Eric S. Raymond 2014-01-27 5:16 ` Werner LEMBERG 2014-01-27 16:31 ` Eli Zaretskii 2014-01-27 17:42 ` Werner LEMBERG 2014-01-27 17:54 ` Eli Zaretskii 2014-01-27 10:04 ` Andreas Schwab 2014-01-27 13:22 ` Eric S. Raymond 2014-01-28 8:14 ` Ulrich Mueller 2014-01-28 8:58 ` Andreas Schwab 2014-01-28 9:07 ` David Kastrup 2014-01-28 15:40 ` What to do about the attic files Eric S. Raymond 2014-01-27 16:25 ` Goals for repo conversion day Eli Zaretskii 2014-01-27 16:28 ` Bzr's "confusion" between branches and repositories Eli Zaretskii 2014-01-27 16:47 ` Andreas Schwab 2014-01-27 16:53 ` Eli Zaretskii 2014-01-27 17:15 ` Eli Zaretskii 2014-01-25 19:32 ` Goals for repo conversion day Glenn Morris 2014-01-25 16:09 ` Andreas Schwab 2014-01-25 17:01 ` Thien-Thi Nguyen 2014-01-25 19:54 ` Eric S. Raymond 2014-01-25 22:08 ` Thien-Thi Nguyen 2014-01-26 3:24 ` Eric S. Raymond 2014-01-25 21:57 ` The git mirror is *very* badly screwed up Stefan Monnier 2014-01-25 23:27 ` Eric S. Raymond
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).