* Locks on the Bzr repository @ 2010-08-19 15:40 Stefan Monnier 2010-08-19 15:52 ` Andreas Schwab ` (4 more replies) 0 siblings, 5 replies; 198+ messages in thread From: Stefan Monnier @ 2010-08-19 15:40 UTC (permalink / raw) To: emacs-devel A couple times now, I've had the following kind of message when trying to commit: Unable to obtain lock sftp://bzr.sv.gnu.org/srv/bzr/emacs/trunk/.bzr/branch/lock held by jasonr@gnu.org on host wanchan [process #23356] locked 28 minutes, 51 seconds ago The first time I thought it was a stale lock so I broke it, but then it came right back, so I suspect it might be due to something else. Could it be that bzr grabs the lock when you do "bzr commit" and keep it held for as long as you're editing the commit message? If that's indeed the culprit, I think it's a misfeature of Bzr, but at least we can workaround it by using "bzr commit -m <...>", which I would then *strongly* recommend. Stefan ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 15:40 Locks on the Bzr repository Stefan Monnier @ 2010-08-19 15:52 ` Andreas Schwab 2010-08-19 16:07 ` Jan Djärv 2010-08-19 16:26 ` Eli Zaretskii 2010-08-19 16:12 ` Jason Rumney ` (3 subsequent siblings) 4 siblings, 2 replies; 198+ messages in thread From: Andreas Schwab @ 2010-08-19 15:52 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > If that's indeed the culprit, I think it's a misfeature of Bzr, but at > least we can workaround it by using "bzr commit -m <...>", which I would > then *strongly* recommend. Even better: use an unbound branch. 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 15:52 ` Andreas Schwab @ 2010-08-19 16:07 ` Jan Djärv 2010-08-19 16:36 ` Andreas Schwab 2010-08-19 16:26 ` Eli Zaretskii 1 sibling, 1 reply; 198+ messages in thread From: Jan Djärv @ 2010-08-19 16:07 UTC (permalink / raw) To: Andreas Schwab; +Cc: Stefan Monnier, emacs-devel Andreas Schwab skrev 2010-08-19 17.52: > Stefan Monnier<monnier@iro.umontreal.ca> writes: > >> If that's indeed the culprit, I think it's a misfeature of Bzr, but at >> least we can workaround it by using "bzr commit -m<...>", which I would >> then *strongly* recommend. > > Even better: use an unbound branch. > You have to commit upstream sometime. Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 16:07 ` Jan Djärv @ 2010-08-19 16:36 ` Andreas Schwab 2010-08-19 20:06 ` Jan Djärv 0 siblings, 1 reply; 198+ messages in thread From: Andreas Schwab @ 2010-08-19 16:36 UTC (permalink / raw) To: Jan Djärv; +Cc: Stefan Monnier, emacs-devel Jan Djärv <jan.h.d@swipnet.se> writes: > You have to commit upstream sometime. Why? 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 16:36 ` Andreas Schwab @ 2010-08-19 20:06 ` Jan Djärv 2010-08-19 21:49 ` Andreas Schwab 2010-08-20 4:44 ` Locks on the Bzr repository Miles Bader 0 siblings, 2 replies; 198+ messages in thread From: Jan Djärv @ 2010-08-19 20:06 UTC (permalink / raw) To: Andreas Schwab; +Cc: Stefan Monnier, emacs-devel Andreas Schwab skrev 2010-08-19 18.36: > Jan Djärv<jan.h.d@swipnet.se> writes: > >> You have to commit upstream sometime. > > Why? > It is no fun fixing bugs and adding features and the just keep it to yourself. Push has been discuraged on this list and other places several times. Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 20:06 ` Jan Djärv @ 2010-08-19 21:49 ` Andreas Schwab 2010-08-20 6:22 ` Jan Djärv 2010-08-20 4:44 ` Locks on the Bzr repository Miles Bader 1 sibling, 1 reply; 198+ messages in thread From: Andreas Schwab @ 2010-08-19 21:49 UTC (permalink / raw) To: Jan Djärv; +Cc: Stefan Monnier, emacs-devel Jan Djärv <jan.h.d@swipnet.se> writes: > Push has been discuraged on this list and other places several times. What??? 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 21:49 ` Andreas Schwab @ 2010-08-20 6:22 ` Jan Djärv 2010-08-20 7:40 ` Andreas Schwab 0 siblings, 1 reply; 198+ messages in thread From: Jan Djärv @ 2010-08-20 6:22 UTC (permalink / raw) To: Andreas Schwab; +Cc: Stefan Monnier, emacs-devel Andreas Schwab skrev 2010-08-19 23.49: > Jan Djärv<jan.h.d@swipnet.se> writes: > >> Push has been discuraged on this list and other places several times. > > What??? > We been through this before, search the archives. Anyway, pull is not faster than commit. Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 6:22 ` Jan Djärv @ 2010-08-20 7:40 ` Andreas Schwab 2010-08-20 8:57 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Andreas Schwab @ 2010-08-20 7:40 UTC (permalink / raw) To: Jan Djärv; +Cc: Stefan Monnier, emacs-devel Jan Djärv <jan.h.d@swipnet.se> writes: > We been through this before, search the archives. Anyway, pull is not > faster than commit. A local commit is faster, and the push can then transfer all pending commits in a single transaction. 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 7:40 ` Andreas Schwab @ 2010-08-20 8:57 ` Eli Zaretskii 2010-08-20 9:13 ` Andreas Schwab ` (2 more replies) 0 siblings, 3 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 8:57 UTC (permalink / raw) To: Andreas Schwab; +Cc: jan.h.d, monnier, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Date: Fri, 20 Aug 2010 09:40:43 +0200 > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org > > Jan Djärv <jan.h.d@swipnet.se> writes: > > > We been through this before, search the archives. Anyway, pull is not > > faster than commit. > > A local commit is faster, and the push can then transfer all pending > commits in a single transaction. That's true, but it doesn't necessarily help too much, because pushing many pending commits moves much more stuff through the wire, and you need to wait longer. IOW, the overhead of a small commit is not much larger, relatively to the diffs, than the overhead of a large commit, at least for my connection. Plus, pushing many unrelated commits has a drawback as not showing in "bzr log" unless you also use the --include-merges (or -n0) switch, which makes "bzr log" significantly slower. Worst of all, no progress is being reported regarding turning on bzr+ssh on savannah. It's been 9 months since work on this was supposed to have been started, enough time to deliver a baby, and I have no idea when (or if) this will happen. Could those "in the know" please tell what is holding this back? Given the information about the difficulties, maybe someone, whose connection is not so fast and whose motivation is therefore high, could help. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 8:57 ` Eli Zaretskii @ 2010-08-20 9:13 ` Andreas Schwab 2010-08-20 9:22 ` Eli Zaretskii 2010-08-20 10:15 ` Stephen J. Turnbull 2010-08-20 16:08 ` bzr smart server [was Re: Locks on the Bzr repository] Glenn Morris 2 siblings, 1 reply; 198+ messages in thread From: Andreas Schwab @ 2010-08-20 9:13 UTC (permalink / raw) To: Eli Zaretskii; +Cc: jan.h.d, monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > Plus, pushing many unrelated commits has a drawback as not showing in > "bzr log" unless you also use the --include-merges (or -n0) switch, > which makes "bzr log" significantly slower. This has nothing at all to do with pushing. 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 9:13 ` Andreas Schwab @ 2010-08-20 9:22 ` Eli Zaretskii 2010-08-20 11:35 ` Andreas Schwab 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 9:22 UTC (permalink / raw) To: Andreas Schwab; +Cc: jan.h.d, monnier, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Cc: jan.h.d@swipnet.se, monnier@iro.umontreal.ca, emacs-devel@gnu.org > Date: Fri, 20 Aug 2010 11:13:58 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > > Plus, pushing many unrelated commits has a drawback as not showing in > > "bzr log" unless you also use the --include-merges (or -n0) switch, > > which makes "bzr log" significantly slower. > > This has nothing at all to do with pushing. Of course, it does. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 9:22 ` Eli Zaretskii @ 2010-08-20 11:35 ` Andreas Schwab 2010-08-20 12:24 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Andreas Schwab @ 2010-08-20 11:35 UTC (permalink / raw) To: Eli Zaretskii; +Cc: jan.h.d, monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Andreas Schwab <schwab@linux-m68k.org> >> Cc: jan.h.d@swipnet.se, monnier@iro.umontreal.ca, emacs-devel@gnu.org >> Date: Fri, 20 Aug 2010 11:13:58 +0200 >> >> Eli Zaretskii <eliz@gnu.org> writes: >> >> > Plus, pushing many unrelated commits has a drawback as not showing in >> > "bzr log" unless you also use the --include-merges (or -n0) switch, >> > which makes "bzr log" significantly slower. >> >> This has nothing at all to do with pushing. > > Of course, it does. ???? In which way? 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 11:35 ` Andreas Schwab @ 2010-08-20 12:24 ` Eli Zaretskii 2010-08-20 12:56 ` Óscar Fuentes 2010-08-20 13:29 ` Andreas Schwab 0 siblings, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 12:24 UTC (permalink / raw) To: Andreas Schwab; +Cc: jan.h.d, monnier, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Cc: jan.h.d@swipnet.se, monnier@iro.umontreal.ca, emacs-devel@gnu.org > Date: Fri, 20 Aug 2010 13:35:05 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > >> From: Andreas Schwab <schwab@linux-m68k.org> > >> Cc: jan.h.d@swipnet.se, monnier@iro.umontreal.ca, emacs-devel@gnu.org > >> Date: Fri, 20 Aug 2010 11:13:58 +0200 > >> > >> Eli Zaretskii <eliz@gnu.org> writes: > >> > >> > Plus, pushing many unrelated commits has a drawback as not showing in > >> > "bzr log" unless you also use the --include-merges (or -n0) switch, > >> > which makes "bzr log" significantly slower. > >> > >> This has nothing at all to do with pushing. > > > > Of course, it does. > > ???? In which way? IIUC, if you resync with the master repo with "bzr merge", your local commits will appear on a branch when you push. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 12:24 ` Eli Zaretskii @ 2010-08-20 12:56 ` Óscar Fuentes 2010-08-20 13:29 ` Andreas Schwab 1 sibling, 0 replies; 198+ messages in thread From: Óscar Fuentes @ 2010-08-20 12:56 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > IIUC, if you resync with the master repo with "bzr merge", your local > commits will appear on a branch when you push. No, your local commits will appear on the leftmost side of the DAG. But some commits (precisely those you merged on your local branch) that previously were on the leftmost side of the DAG are displaced to the right, which is very bad. See my other post. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 12:24 ` Eli Zaretskii 2010-08-20 12:56 ` Óscar Fuentes @ 2010-08-20 13:29 ` Andreas Schwab 2010-08-20 14:43 ` Eli Zaretskii 1 sibling, 1 reply; 198+ messages in thread From: Andreas Schwab @ 2010-08-20 13:29 UTC (permalink / raw) To: Eli Zaretskii; +Cc: jan.h.d, monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > IIUC, if you resync with the master repo with "bzr merge", your local > commits will appear on a branch when you push. Did I write "bzr merge" anywhere? 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 13:29 ` Andreas Schwab @ 2010-08-20 14:43 ` Eli Zaretskii 0 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 14:43 UTC (permalink / raw) To: Andreas Schwab; +Cc: jan.h.d, monnier, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Cc: jan.h.d@swipnet.se, monnier@iro.umontreal.ca, emacs-devel@gnu.org > Date: Fri, 20 Aug 2010 15:29:40 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > > IIUC, if you resync with the master repo with "bzr merge", your local > > commits will appear on a branch when you push. > > Did I write "bzr merge" anywhere? No. But if you don't have that workflow in mind, then we will have no common language until you describe in more detail the workflow you have in mind. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 8:57 ` Eli Zaretskii 2010-08-20 9:13 ` Andreas Schwab @ 2010-08-20 10:15 ` Stephen J. Turnbull 2010-08-20 11:39 ` Andreas Schwab 2010-08-20 12:23 ` Eli Zaretskii 2010-08-20 16:08 ` bzr smart server [was Re: Locks on the Bzr repository] Glenn Morris 2 siblings, 2 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-20 10:15 UTC (permalink / raw) To: Eli Zaretskii; +Cc: jan.h.d, Andreas Schwab, monnier, emacs-devel Eli Zaretskii writes: > Plus, pushing many unrelated commits has a drawback as not showing > in "bzr log" unless you also use the --include-merges (or -n0) > switch, which makes "bzr log" significantly slower. No. Push simply synchronizes the histories, and IIRC to push in bzr you must be a superset of the remote repo's history. So what matters to the bzr log view is how you manage your local repo, not whether you push or commit via a bound branch. You may need to rebase if somebody sneaks in a commit before you start your push, but I would imagine you normally need less locking and a lot less time if the push succeeds. It's true that if you only ever use bound branches, all your commits must end up on the mainline, and that may be the best strategy for some people. But other people like to commit more frequently and/or offline. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 10:15 ` Stephen J. Turnbull @ 2010-08-20 11:39 ` Andreas Schwab 2010-08-20 12:42 ` Stephen J. Turnbull 2010-08-20 12:23 ` Eli Zaretskii 1 sibling, 1 reply; 198+ messages in thread From: Andreas Schwab @ 2010-08-20 11:39 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: Eli Zaretskii, jan.h.d, monnier, emacs-devel "Stephen J. Turnbull" <stephen@xemacs.org> writes: > But other people like to commit more frequently and/or offline. That's the whole point of a distriuted VCS anyway. 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 11:39 ` Andreas Schwab @ 2010-08-20 12:42 ` Stephen J. Turnbull 0 siblings, 0 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-20 12:42 UTC (permalink / raw) To: Andreas Schwab; +Cc: Eli Zaretskii, jan.h.d, monnier, emacs-devel Andreas Schwab writes: > "Stephen J. Turnbull" <stephen@xemacs.org> writes: > > But other people like to commit more frequently and/or offline. > That's the whole point of a distriuted VCS anyway. Not quite the whole point, at least compared to CVS. In any case, that point seems to be totally lost on certain influential Emacs developers, so it bears repetition. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 10:15 ` Stephen J. Turnbull 2010-08-20 11:39 ` Andreas Schwab @ 2010-08-20 12:23 ` Eli Zaretskii 2010-08-20 12:52 ` Óscar Fuentes ` (2 more replies) 1 sibling, 3 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 12:23 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: jan.h.d, schwab, monnier, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Cc: Andreas Schwab <schwab@linux-m68k.org>, > jan.h.d@swipnet.se, > monnier@iro.umontreal.ca, > emacs-devel@gnu.org > Date: Fri, 20 Aug 2010 19:15:38 +0900 > > Eli Zaretskii writes: > > > Plus, pushing many unrelated commits has a drawback as not showing > > in "bzr log" unless you also use the --include-merges (or -n0) > > switch, which makes "bzr log" significantly slower. > > No. Push simply synchronizes the histories, and IIRC to push in bzr > you must be a superset of the remote repo's history. So what > matters to the bzr log view is how you manage your local repo If I ever only "bzr merge" from the remote repository, won't my pushes to it cause my local commits appear on a branch, and the point of push appear as a merge to mainline? If so, that's what I meant. > You may need to rebase if somebody sneaks in a commit before you > start your push With the rate of commits to the Emacs repository, the chances that someone "sneaks in a commit before you start your push" are 100%. We have committers in all time zones, so there's no time that you are safe. > but I would imagine you normally need less locking and a lot less > time if the push succeeds. This needs testing and measuring; I won't believe it until I actually see it. The time to push is still governed by network traffic, which takes most of the time, about 90%, of a commit as well. And even if it is true that this is faster, what you describe hints on a much more complex workflow that needs a much more diligent user who knows much more about bzr than most contributors. Any blunder there, and you need to work much harder and at least partially by hand to restore the situation where your branch is "a superset of the remote repo's history". So this workflow still has disadvantages, even if it faster (which I very much doubt). > It's true that if you only ever use bound branches, all your commits > must end up on the mainline, and that may be the best strategy for > some people. But other people like to commit more frequently and/or > offline. Me too, but having a separate local branch and merging locally with a bound branch has all the advantages of the frequent fast commits, and only one disadvantage -- the commits appear on a branch (unless I rebase). The workflow is much simpler, though. That's why this is what I do when I work on something that is not a 5-min job. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 12:23 ` Eli Zaretskii @ 2010-08-20 12:52 ` Óscar Fuentes 2010-08-20 13:33 ` Andreas Schwab 2010-08-20 13:44 ` Stephen J. Turnbull 2 siblings, 0 replies; 198+ messages in thread From: Óscar Fuentes @ 2010-08-20 12:52 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: [snip] > Me too, but having a separate local branch and merging locally with a > bound branch has all the advantages of the frequent fast commits, and > only one disadvantage -- the commits appear on a branch (unless I > rebase). The workflow is much simpler, though. That's why this is > what I do when I work on something that is not a 5-min job. Just to clarify: merge+push has the side effect of twisting the DAG. This means that the left arm becomes the right, and the right the left. As Eli says, you'll need to use `bzr log -n0' for seeing the commits that previously were visible with `bzr log' (sans the -n0) In general, the DAG becomes a mess. But, worse of all, revision numbers change, because revision numbering depends on how far from the left is the branch of the DAG that contains the commit. What now is revision 1000 after a merge+push can be revision 995.3.2, and some time later 998.5.3.2. This would force us to use the awkward bzr revision ids for referring revisions. The Right Thing if you want to accumulate several unrelated local changes and send them upstream on one batch is to rebase+commit, which appends your commits to the tip of upstream's branch. This is not very different from Git. On Git it is not so bad to merge+push for incoporating your feature branch into mainline (it twists the DAG sides too, but Git does not make big differences among them.) However, for sending a series of unrelated commits, the Right Thing on Git is to rebase+push, which is mostly equivalent to bzr's rebase+commit. All this was previously discussed on the list. And we had already some instances of revision renumbering, so the configuration of upstream repo was changed for rejecting the operations that would twist the DAG. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 12:23 ` Eli Zaretskii 2010-08-20 12:52 ` Óscar Fuentes @ 2010-08-20 13:33 ` Andreas Schwab 2010-08-20 14:46 ` Eli Zaretskii 2010-08-20 13:44 ` Stephen J. Turnbull 2 siblings, 1 reply; 198+ messages in thread From: Andreas Schwab @ 2010-08-20 13:33 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Stephen J. Turnbull, jan.h.d, monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > With the rate of commits to the Emacs repository, the chances that > someone "sneaks in a commit before you start your push" are 100%. Is it? I almost never have that problem. Moreover, this has nothing to do with bound vs. unbound, since you are racing with other commiters in any case. 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 13:33 ` Andreas Schwab @ 2010-08-20 14:46 ` Eli Zaretskii 2010-08-20 15:31 ` Andreas Schwab 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 14:46 UTC (permalink / raw) To: Andreas Schwab; +Cc: stephen, jan.h.d, monnier, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Cc: "Stephen J. Turnbull" <stephen@xemacs.org>, jan.h.d@swipnet.se, monnier@iro.umontreal.ca, emacs-devel@gnu.org > Date: Fri, 20 Aug 2010 15:33:31 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > > With the rate of commits to the Emacs repository, the chances that > > someone "sneaks in a commit before you start your push" are 100%. > > Is it? I almost never have that problem. Maybe you are a faster programmer than I am. After "bzr up" that brings new code, I need to build Emacs and see that nothing breaks due to my changes. Sometimes I need to build on more than one platform. It takes time, at least here. > Moreover, this has nothing to do with bound vs. unbound Did I say it had something to do with this? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 14:46 ` Eli Zaretskii @ 2010-08-20 15:31 ` Andreas Schwab 0 siblings, 0 replies; 198+ messages in thread From: Andreas Schwab @ 2010-08-20 15:31 UTC (permalink / raw) To: Eli Zaretskii; +Cc: stephen, jan.h.d, monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > Did I say it had something to do with this? Yes. 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 12:23 ` Eli Zaretskii 2010-08-20 12:52 ` Óscar Fuentes 2010-08-20 13:33 ` Andreas Schwab @ 2010-08-20 13:44 ` Stephen J. Turnbull 2010-08-20 15:19 ` Eli Zaretskii 2 siblings, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-20 13:44 UTC (permalink / raw) To: Eli Zaretskii; +Cc: jan.h.d, schwab, monnier, emacs-devel Eli Zaretskii writes: > If I ever only "bzr merge" from the remote repository, won't my > pushes to it cause my local commits appear on a branch, and the > point of push appear as a merge to mainline? If so, that's what I > meant. Sure. So don't do that. One (probably for values of "one" != "eliz") can pull instead, and rebase when necessary to get that to succeed. Or one can use a separate branch for each task. There are lots of strategies; you don't have to use them if you don't want to. But some people would rather spend 5 minutes fiddling with a rebase once a week (which can be done at your convenience) or so than ever spend 50 minutes waiting for a commit to finish (which blocks you from doing any other commit, if you depend on lightweight checkouts from upstream). > With the rate of commits to the Emacs repository, the chances that > someone "sneaks in a commit before you start your push" are 100%. That's an exaggeration. It might be quite high, but if it's really that high that pushes never succeed, any integration where developers decided asynchronously when to commit to the public repo (including both push and commits in bound branches) is going to run into problems. > We have committers in all time zones, so there's no time that you > are safe. That depends on one's definition of safe. My definition of safe is "my commit is safely in a repository with a known relationship to the upstream", I can commit any time the fit takes me, and I can push when I feel like dealing with the costs of cooperation like merge conflicts. > > but I would imagine you normally need less locking and a lot less > > time if the push succeeds. > This needs testing and measuring; I won't believe it until I > actually see it. The time to push is still governed by network > traffic, which takes most of the time, about 90%, of a commit as > well. Not if you count *time developer is blocked* instead of *time from start of operation to end of operation*. Push is asynchronous; with a DVCS you don't even need to care if it succeeds, you just work on another branch. If it succeeded, you're done. If not, you make adjustments and try again later, at your convenience. (What those adjustments are depends on the exact workflow.) > And even if it is true that this is faster, what you describe hints > on a much more complex workflow that needs a much more diligent > user who knows much more about bzr than most contributors. Sure. So what? I don't need to defend a deprecation of "checkout --lightweight". I don't like it, but I haven't ever suggested that it be forbidden. *You* need to defend your deprecation of "push." > Any blunder there, and you need to work much harder and at least > partially by hand to restore the situation where your branch is "a > superset of the remote repo's history". So this workflow still has > disadvantages, All workflows have disadvantages. Big deal. That's not a reason for a general deprecation of "bzr push". > > It's true that if you only ever use bound branches, all your > > commits must end up on the mainline, and that may be the best > > strategy for some people. But other people like to commit more > > frequently and/or offline. > Me too, but having a separate local branch and merging locally with > a bound branch has all the advantages of the frequent fast commits, > and only one disadvantage -- the commits appear on a branch (unless > I rebase). No, it has another disadvantage, which is that you can hang up on concurrent commits by other developers, just as with the push strategy. Perhaps it's a little less apparent work because you're only blocked on merges with conflicts, but once again you're blocked until your commit succeeds. It's also somewhat dangerous to just merge everything; a diligent developer should treat a merge in such case as "my commit needs review in the new context before committing", really, and what you're doing is short-circuiting that process. (Linus famously flamed Dave Miller for this.) Any merge (which includes rebasing, which is what davem was doing) implies your code is now untested until you rerun the tests. So if you merge into a bound branch, you're automating commits of untested code to the public repo. That may be OK with you (after all, the test results are only a little bit stale, they're probably not growing mold and mushrooms yet), but that is what you're doing. I don't expect this to change your mind about *your* workflows. But there are good arguments for other workflows, there are definite weaknesses in the ones you like as well, and I don't think it's a good idea to deprecate push-based workflows for those who want to use them. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 13:44 ` Stephen J. Turnbull @ 2010-08-20 15:19 ` Eli Zaretskii 2010-08-20 22:41 ` Uday S Reddy 2010-08-21 2:29 ` Stephen J. Turnbull 0 siblings, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 15:19 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: jan.h.d, schwab, monnier, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Cc: jan.h.d@swipnet.se, > schwab@linux-m68k.org, > monnier@iro.umontreal.ca, > emacs-devel@gnu.org > Date: Fri, 20 Aug 2010 22:44:28 +0900 > > Eli Zaretskii writes: > > > If I ever only "bzr merge" from the remote repository, won't my > > pushes to it cause my local commits appear on a branch, and the > > point of push appear as a merge to mainline? If so, that's what I > > meant. > > Sure. So don't do that. One (probably for values of "one" != "eliz") > can pull instead, and rebase when necessary to get that to succeed. Please show this workflow in more detail. Without the details, it's hard to tell what you suggest. You could be thinking about things possible with git, but not with bzr; it happened in the past. And please drop the ad hominem, you are (again) incorrectly assuming that I don't use distributed workflows. You can see that this is not so if you look at my commits in "bzr log" . > Or one can use a separate branch for each task. There are lots of > strategies; you don't have to use them if you don't want to. I do want and do use some of them. Please don't mistake a critical opinion for rejection. Instead, back up your opinions by valid arguments, and maybe I will be able to actually learn something from you. > But some > people would rather spend 5 minutes fiddling with a rebase once a week > (which can be done at your convenience) or so than ever spend 50 > minutes waiting for a commit to finish (which blocks you from doing > any other commit, if you depend on lightweight checkouts from > upstream). I don't use lightweight checkouts. I use one bound branch and 2 or 3 local branches. I have no problems with local commits, which I use a lot. The problem happens when I need to commit to the master repository. I need to do that from time to time, because my local commits are not available to others, so if I fix bugs, my fixes will not be good to anyone until I commit to upstream. And doing so is painfully slow, and there seems to be no way around it. On top of that, sometimes a commit fails, because someone holds a lock or because some other commit was "sneaked" in in the meantime. So I need to watch the commit and make sure it succeeds, or start another one if it doesn't. So please don't tell me this is asynchronous, because it isn't, at least not entirely. > > With the rate of commits to the Emacs repository, the chances that > > someone "sneaks in a commit before you start your push" are 100%. > > That's an exaggeration. How do you know? How frequently do you commit to the Emacs repo? > > > but I would imagine you normally need less locking and a lot less > > > time if the push succeeds. > > > This needs testing and measuring; I won't believe it until I > > actually see it. The time to push is still governed by network > > traffic, which takes most of the time, about 90%, of a commit as > > well. > > Not if you count *time developer is blocked* instead of *time from > start of operation to end of operation*. Push is asynchronous; with a > DVCS you don't even need to care if it succeeds, you just work on > another branch. If it succeeded, you're done. If not, you make > adjustments and try again later, at your convenience. You are talking from the POV of someone who has a lot of time on his hands, or has a fast enough connection to make the delay insignificant. By contrast, I have maybe a few hours during a weekend to work on Emacs, with maybe half an hour on weekdays. Every delay counts, and there's no "at my convenience". > *You* need to defend your deprecation of "push." I don't deprecate "push", so I have nothing to defend. > All workflows have disadvantages. Big deal. No big deal. But the disadvantages of each workflow need to be well understood before making a decision which one to use. And the considerations might well be different given one's personal circumstances and connectivity. Careful examination of the advantages and disadvantages does not constitute deprecation, and should not be treated with derogation. > That's not a reason for a general deprecation of "bzr push". I don't deprecate "push". > > > It's true that if you only ever use bound branches, all your > > > commits must end up on the mainline, and that may be the best > > > strategy for some people. But other people like to commit more > > > frequently and/or offline. > > > Me too, but having a separate local branch and merging locally with > > a bound branch has all the advantages of the frequent fast commits, > > and only one disadvantage -- the commits appear on a branch (unless > > I rebase). > > No, it has another disadvantage, which is that you can hang up on > concurrent commits by other developers, just as with the push > strategy. Perhaps it's a little less apparent work because you're > only blocked on merges with conflicts, but once again you're blocked > until your commit succeeds. As long as you commit to the master repo, you will become blocked sometimes. And if you think that my development is blocked while the commit grinds away, then you are simply wrong, because I have additional branches where I can and do develop in the meantime. But the slow commits that sometimes fail after many seconds if not minutes are an annoyance anyhow, and no amount of preaching the "push" ways can do anything about it. > It's also somewhat dangerous to just merge everything; a diligent > developer should treat a merge in such case as "my commit needs review > in the new context before committing", really Exactly. And as I explained in another mail in this thread, this calls for testing after I merge, which is one factor why the chances are high to have some other commit sneaked in before I commit. > and what you're doing is short-circuiting that process. What am I doing that short-circuits this process? > (Linus famously flamed Dave Miller > for this.) Any merge (which includes rebasing, which is what davem > was doing) implies your code is now untested until you rerun the > tests. So if you merge into a bound branch, you're automating commits > of untested code to the public repo. That may be OK with you (after > all, the test results are only a little bit stale, they're probably > not growing mold and mushrooms yet), but that is what you're doing. Don't ass-u-me that I'm committing without testing after the merge. > I don't expect this to change your mind about *your* workflows. Looks like you have no idea at all what _is_ my mindset regarding the possible workflows. Perhaps you think you are talking to someone else. > But there are good arguments for other workflows, there are definite > weaknesses in the ones you like as well, and I don't think it's a > good idea to deprecate push-based workflows for those who want to > use them. I don't deprecate "push. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 15:19 ` Eli Zaretskii @ 2010-08-20 22:41 ` Uday S Reddy 2010-08-21 8:36 ` Jan Djärv 2010-08-21 9:03 ` Eli Zaretskii 2010-08-21 2:29 ` Stephen J. Turnbull 1 sibling, 2 replies; 198+ messages in thread From: Uday S Reddy @ 2010-08-20 22:41 UTC (permalink / raw) To: emacs-devel Perhaps I can sneak in a few comments while Stephen is offline. I have found this debate quite enlightening and it helped me understand the limits of "distributed" VCS. (I use unbound local branches in working on VM and always wondered why you guys use bound branches. I am beginning to understand a little bit now.) On 8/20/2010 4:19 PM, Eli Zaretskii wrote: >> >> Sure. So don't do that. One (probably for values of "one" != "eliz") >> can pull instead, and rebase when necessary to get that to succeed. > > Please show this workflow in more detail. Without the details, it's > hard to tell what you suggest. You could be thinking about things > possible with git, but not with bzr; it happened in the past. I think one needs to do a pull before each commit, to be safe. (Seems to be the same as update-commit cycle for bound branches.) If you have already done a series of commits and lost the opportunity to pull, then you have to rebase. If even that seems too far out, then you have to make your changes into a separate branch and merge it in later. > I don't use lightweight checkouts. I use one bound branch and 2 or 3 > local branches. I have no problems with local commits, which I use a > lot. The problem happens when I need to commit to the master > repository. I need to do that from time to time, because my local > commits are not available to others, so if I fix bugs, my fixes will > not be good to anyone until I commit to upstream. It seems to me that committing to the bound branch is essentially like push. (Somebody said you were "discouraging" push. I don't see it. Your every commit is a push.) However, we get to use our local mirror of the trunk as if it were a local branch. We can commit to it without affecting anybody else and do a public commit only in the end. We can commit to it as often as we please, keep a careful log, do enough testing etc. And, this local branch can magically turn back into a proper mirror as soon as we do a rebase-push. You can't get this with bound branches. Your local branches have to be necessarily separate branches, whose histories will appear as merges in the mainline. We use separate local branches as well, when they are appropriate. But we are not forced to use them all the time. (Generally, I am happy to use the main branch for a few days worth of work where I can see the end clearly. I use separate branches for things that might take a few weeks, or things of a more open-ended nature.) And doing so is > painfully slow, and there seems to be no way around it. On top of > that, sometimes a commit fails, because someone holds a lock or > because some other commit was "sneaked" in in the meantime. So I need > to watch the commit and make sure it succeeds, or start another one if > it doesn't. So please don't tell me this is asynchronous, because it > isn't, at least not entirely. Seems to me that you are reinforcing Stephen's point. With bound branches, your branch is locked up until the commit goes through. You can't do anything while you have uncommitted changes in your source. With unbound branches, we can continue working on the source even when push is running in the background, because the source tree doesn't have any uncommitted changes. We can also give up on the push if necessary and continue committing to the branch. The advantage seems quite clear to me. > No big deal. But the disadvantages of each workflow need to be well > understood before making a decision which one to use. I can't believe that you guys really understood the disadvantages of your current workflow before settling on it. The most illuminating revelation I found in Stephen's post is that, with bound branches, every commit is a merge. Most of the time, it is untested and unsafe. This is the biggest disadvantage of all, if you ask me. It also occurs to me that, by asking everybody to use bound branches, you have massively increased the contention on your public repo and the server. That is making your problems worse. Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 22:41 ` Uday S Reddy @ 2010-08-21 8:36 ` Jan Djärv 2010-08-21 9:08 ` Eli Zaretskii 2010-08-21 9:38 ` Uday S Reddy 2010-08-21 9:03 ` Eli Zaretskii 1 sibling, 2 replies; 198+ messages in thread From: Jan Djärv @ 2010-08-21 8:36 UTC (permalink / raw) To: Uday S Reddy; +Cc: emacs-devel Uday S Reddy skrev 2010-08-21 00.41: > Seems to me that you are reinforcing Stephen's point. With bound branches, > your branch is locked up until the commit goes through. You can't do anything > while you have uncommitted changes in your source. With unbound branches, we > can continue working on the source even when push is running in the > background, because the source tree doesn't have any uncommitted changes. We > can also give up on the push if necessary and continue committing to the > branch. The advantage seems quite clear to me. You are ignoring the fact that work usually doesn't happen in the bound branch, but in a separate task branch. We can continue to work there while the bound branch commits. I don't see much difference. Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 8:36 ` Jan Djärv @ 2010-08-21 9:08 ` Eli Zaretskii 2010-08-21 10:30 ` Jan Djärv 2010-08-21 9:38 ` Uday S Reddy 1 sibling, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 9:08 UTC (permalink / raw) To: Jan Djärv; +Cc: u.s.reddy, emacs-devel > Date: Sat, 21 Aug 2010 10:36:25 +0200 > From: Jan Djärv <jan.h.d@swipnet.se> > Cc: emacs-devel@gnu.org > > Uday S Reddy skrev 2010-08-21 00.41: > > > Seems to me that you are reinforcing Stephen's point. With bound branches, > > your branch is locked up until the commit goes through. You can't do anything > > while you have uncommitted changes in your source. With unbound branches, we > > can continue working on the source even when push is running in the > > background, because the source tree doesn't have any uncommitted changes. We > > can also give up on the push if necessary and continue committing to the > > branch. The advantage seems quite clear to me. > > You are ignoring the fact that work usually doesn't happen in the bound > branch, but in a separate task branch. We can continue to work there while > the bound branch commits. Actually, I see no reason not to continue working even in the bound branch that is being committed. There's nothing at all to prevent that, since Bazaar takes note of the files it commits and their contents _before_ it sends changes upstream. That is why you cannot make changes after launching "bzr ci" and hope for them to be included in the changeset. (This is unlike CVS, where you could make changes as long as the particular file wasn't sent upstream by "cvs ci".) ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 9:08 ` Eli Zaretskii @ 2010-08-21 10:30 ` Jan Djärv 2010-08-21 10:41 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Jan Djärv @ 2010-08-21 10:30 UTC (permalink / raw) To: Eli Zaretskii; +Cc: u.s.reddy, emacs-devel Eli Zaretskii skrev 2010-08-21 11.08: >> Date: Sat, 21 Aug 2010 10:36:25 +0200 >> From: Jan Djärv<jan.h.d@swipnet.se> >> Cc: emacs-devel@gnu.org >> >> Uday S Reddy skrev 2010-08-21 00.41: >> >>> Seems to me that you are reinforcing Stephen's point. With bound branches, >>> your branch is locked up until the commit goes through. You can't do anything >>> while you have uncommitted changes in your source. With unbound branches, we >>> can continue working on the source even when push is running in the >>> background, because the source tree doesn't have any uncommitted changes. We >>> can also give up on the push if necessary and continue committing to the >>> branch. The advantage seems quite clear to me. >> >> You are ignoring the fact that work usually doesn't happen in the bound >> branch, but in a separate task branch. We can continue to work there while >> the bound branch commits. > > Actually, I see no reason not to continue working even in the bound > branch that is being committed. There's nothing at all to prevent > that, since Bazaar takes note of the files it commits and their > contents _before_ it sends changes upstream. That is why you cannot > make changes after launching "bzr ci" and hope for them to be included > in the changeset. (This is unlike CVS, where you could make changes > as long as the particular file wasn't sent upstream by "cvs ci".) This is correct. However any bzr operation like a simple C-x v = fails because bzr is locked by the commit (it doesn't seem to do read-only locks). That is the main disadvantage that makes me go back to the task branch. Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 10:30 ` Jan Djärv @ 2010-08-21 10:41 ` Eli Zaretskii 2010-08-21 10:47 ` Jan Djärv 2010-08-21 17:04 ` Thien-Thi Nguyen 0 siblings, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 10:41 UTC (permalink / raw) To: Jan Djärv; +Cc: u.s.reddy, emacs-devel > Date: Sat, 21 Aug 2010 12:30:44 +0200 > From: Jan Djärv <jan.h.d@swipnet.se> > CC: u.s.reddy@cs.bham.ac.uk, emacs-devel@gnu.org > > > Actually, I see no reason not to continue working even in the bound > > branch that is being committed. There's nothing at all to prevent > > that, since Bazaar takes note of the files it commits and their > > contents _before_ it sends changes upstream. That is why you cannot > > make changes after launching "bzr ci" and hope for them to be included > > in the changeset. (This is unlike CVS, where you could make changes > > as long as the particular file wasn't sent upstream by "cvs ci".) > > This is correct. However any bzr operation like a simple C-x v = fails > because bzr is locked by the commit (it doesn't seem to do read-only locks). > That is the main disadvantage that makes me go back to the task branch. I agree that this is a disadvantage, but is it really that significant? How much do you use bzr operations while developing? Most of development is not about bzr, it's about editing, compiling, and testing. I only need bzr operations when I'm almost done with development, like to see what files are changed or compare them with some other version. No matter how slow is "bzr ci" upstream, the development cycle is much slower, at least for me. It can only be faster if you fix very simple bugs, like typos. YMMV, but this disadvantage doesn't sound a reason good enough to make a cardinal decision to do all the work from a task branch. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 10:41 ` Eli Zaretskii @ 2010-08-21 10:47 ` Jan Djärv 2010-08-21 17:04 ` Thien-Thi Nguyen 1 sibling, 0 replies; 198+ messages in thread From: Jan Djärv @ 2010-08-21 10:47 UTC (permalink / raw) To: Eli Zaretskii; +Cc: u.s.reddy, emacs-devel Eli Zaretskii skrev 2010-08-21 12.41: >> Date: Sat, 21 Aug 2010 12:30:44 +0200 >> From: Jan Djärv<jan.h.d@swipnet.se> >> This is correct. However any bzr operation like a simple C-x v = fails >> because bzr is locked by the commit (it doesn't seem to do read-only locks). >> That is the main disadvantage that makes me go back to the task branch. > > I agree that this is a disadvantage, but is it really that > significant? How much do you use bzr operations while developing? > Most of development is not about bzr, it's about editing, compiling, > and testing. I only need bzr operations when I'm almost done with > development, like to see what files are changed or compare them with > some other version. No matter how slow is "bzr ci" upstream, the > development cycle is much slower, at least for me. It can only be > faster if you fix very simple bugs, like typos. > > YMMV, but this disadvantage doesn't sound a reason good enough to make > a cardinal decision to do all the work from a task branch. It depends on your mode of programming I think. Most of the time it doesn't matter. But sometimes while searching for a bug, I put debug messages in several files (more often so when I am in an area I have little knowledge of). Or I make what I think are the correct changes, but then it turns out I was mistaken. So I want to remove some of the changes. C-x v = or C-x v d helps me find them. For new stuff I don't use bzr that much, if at all. Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 10:41 ` Eli Zaretskii 2010-08-21 10:47 ` Jan Djärv @ 2010-08-21 17:04 ` Thien-Thi Nguyen 2010-08-22 7:39 ` Stephen J. Turnbull 1 sibling, 1 reply; 198+ messages in thread From: Thien-Thi Nguyen @ 2010-08-21 17:04 UTC (permalink / raw) To: Eli Zaretskii; +Cc: u.s.reddy, Jan Djärv, emacs-devel () Eli Zaretskii <eliz@gnu.org> () Sat, 21 Aug 2010 13:41:02 +0300 Most of development is not about bzr, it's about editing, compiling, and testing. Depends on the area of development. When in janitor mode, it seems to me most development is about about understanding previous development. (Too bad there is no M-x empathize RET j.r.hacker RET 1995 RET.) ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 17:04 ` Thien-Thi Nguyen @ 2010-08-22 7:39 ` Stephen J. Turnbull 2010-08-23 3:15 ` Thien-Thi Nguyen 0 siblings, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 7:39 UTC (permalink / raw) To: Thien-Thi Nguyen; +Cc: u.s.reddy, Eli Zaretskii, Jan Djärv, emacs-devel Thien-Thi Nguyen writes: > () Eli Zaretskii <eliz@gnu.org> > () Sat, 21 Aug 2010 13:41:02 +0300 > > Most of development is not about bzr, it's about editing, > compiling, and testing. > Depends on the area of development. When in janitor mode, it seems > to me most development is about about understanding previous > development. (Too bad there is no M-x empathize RET j.r.hacker RET > 1995 RET.) bzr alias empathize annotate ? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 7:39 ` Stephen J. Turnbull @ 2010-08-23 3:15 ` Thien-Thi Nguyen 0 siblings, 0 replies; 198+ messages in thread From: Thien-Thi Nguyen @ 2010-08-23 3:15 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: emacs-devel () "Stephen J. Turnbull" <stephen@xemacs.org> () Sun, 22 Aug 2010 16:39:46 +0900 bzr alias empathize annotate ? I suppose incomplete information is better than none. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 8:36 ` Jan Djärv 2010-08-21 9:08 ` Eli Zaretskii @ 2010-08-21 9:38 ` Uday S Reddy 2010-08-21 10:30 ` Eli Zaretskii 2010-08-21 10:37 ` Jan Djärv 1 sibling, 2 replies; 198+ messages in thread From: Uday S Reddy @ 2010-08-21 9:38 UTC (permalink / raw) To: Jan Djärv; +Cc: Uday S Reddy, emacs-devel Jan Djärv writes: > You are ignoring the fact that work usually doesn't happen in the bound > branch, but in a separate task branch. We can continue to work there while > the bound branch commits. I don't see much difference. If there isn't "much difference" then why is push being discouraged? You are arguing both ways, it seems to me. If you use separate task branches then, yes, it doesn't make any difference whether you use a bound branch or unbound. So, there is no reason to prefer one over the other. If you want to work on the main branch rather than task branches, then it does make an important difference, as Stephen and I have pointed out. Here, an unbound main branch is a lot more flexible and it will reduce the contention on the central repo. But this part of the thread is in reponse to Eli's post on the 20th, especially his comment: Eli Zaretskii writes: > Plus, pushing many unrelated commits has a drawback as not showing in > "bzr log" unless you also use the --include-merges (or -n0) switch, > which makes "bzr log" significantly slower. If Eli is trying to avoid levels in histories, then he *must be* working on the main branch. And, he is stung by the bound main branch. Using an unbound main branch will immediately improve things. Note that he also raised a logical problem. If you open a separate branch for your work, then you don't want to put many unrelated commits in it. That will make it appear as if they were related commits at the top level. Using bound branches will encourage people to put unrelated commits in task branches. Whichever way I look at it, I don't see any upside to using bound branches, but plenty of downside. So, I am surprised that emacs-devs choose this mode of operation. Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 9:38 ` Uday S Reddy @ 2010-08-21 10:30 ` Eli Zaretskii 2010-08-21 10:37 ` Jan Djärv 1 sibling, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 10:30 UTC (permalink / raw) To: Uday S Reddy; +Cc: jan.h.d, emacs-devel > Date: Sat, 21 Aug 2010 10:38:46 +0100 > From: Uday S Reddy <u.s.reddy@cs.bham.ac.uk> > Cc: Uday S Reddy <u.s.reddy@cs.bham.ac.uk>, emacs-devel@gnu.org > > Jan Djärv writes: > > > You are ignoring the fact that work usually doesn't happen in the bound > > branch, but in a separate task branch. We can continue to work there while > > the bound branch commits. I don't see much difference. > > If there isn't "much difference" then why is push being discouraged? The only place on the wiki which could be considered as "discouraging" push is this: It might occur to you to save some effort by just doing bzr push directly to the upstream master from inside the TASKNAME branch: cd $DEVHOME/emacs/TASKNAME bzr push sftp://USERNAME@bzr.savannah.gnu.org/srv/bzr/emacs/trunk/ *Do not do this* -- it can cause history to be displayed in a strange way in the upstream master, any mirrors or branches of it, and your own branch later. Search for the word “hidden” in http://lists.gnu.org/archive/html/emacs-devel/2009-11/msg01021.html for more details. IIRC, this was written by Stephen and Karl, and I don't see anything wrong with this warning. Do you? > If you want to work on the main branch rather than task branches, then > it does make an important difference, as Stephen and I have pointed > out. Here, an unbound main branch is a lot more flexible and it will > reduce the contention on the central repo. As I wrote in an earlier post, I don't see the extra flexibility. I'm awaiting your response to that. > > Plus, pushing many unrelated commits has a drawback as not showing in > > "bzr log" unless you also use the --include-merges (or -n0) switch, > > which makes "bzr log" significantly slower. > > If Eli is trying to avoid levels in histories, then he *must be* > working on the main branch. I'm trying to keep the history linear whenever possible, yes. If you think this is not a good idea on its own right, please tell why. > And, he is stung by the bound main branch. Using an unbound main > branch will immediately improve things. Again, I don't see how am I "stung" and how an unbound branch will improve things. > Note that he also raised a logical problem. If you open a separate > branch for your work, then you don't want to put many unrelated > commits in it. That will make it appear as if they were related > commits at the top level. Using bound branches will encourage people > to put unrelated commits in task branches. If you do ALL of the work in a task branch, yes. But I don't think that's the right workflow, and that's not what I use. I use task branches for 2 kinds of jobs: . prolonged development of features . forensics: debugging some issue that needs switching to earlier versions, e.g. with "bzr bisect" or "bzr revert -rNNN" (later I get rid of all the traces of these revert commands by pulling from the main branch with "bzr pull --overwrite") > Whichever way I look at it, I don't see any upside to using bound > branches, but plenty of downside. Well, would you please list those downsides together? They must have been lost in the argument, because I don't see them. At most I've seen a single downside you cited -- that further development is somehow stuck until the commit from the bound branch finishes. As I wrote, I think this claim is simply false. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 9:38 ` Uday S Reddy 2010-08-21 10:30 ` Eli Zaretskii @ 2010-08-21 10:37 ` Jan Djärv 2010-08-21 10:56 ` Eli Zaretskii ` (2 more replies) 1 sibling, 3 replies; 198+ messages in thread From: Jan Djärv @ 2010-08-21 10:37 UTC (permalink / raw) To: Uday S Reddy; +Cc: emacs-devel Uday S Reddy skrev 2010-08-21 11.38: > Jan Djärv writes: > >> You are ignoring the fact that work usually doesn't happen in the bound >> branch, but in a separate task branch. We can continue to work there while >> the bound branch commits. I don't see much difference. > > If there isn't "much difference" then why is push being discouraged? Something about history I think. > You are arguing both ways, it seems to me. I'm arguing that push doesn't buy you anything w.r.t. to speed when sending changes to Savannah. If by both ways you mean "push is slow" and "commit is slow" you are correct. We can just say "bzr is slow" and be done with it. > > Whichever way I look at it, I don't see any upside to using bound > branches, but plenty of downside. So, I am surprised that emacs-devs > choose this mode of operation. > It was recommended here: http://www.emacswiki.org/emacs/BzrForEmacsDevs. Nobody has stepped up and explained in this detail a better way. Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 10:37 ` Jan Djärv @ 2010-08-21 10:56 ` Eli Zaretskii 2010-08-21 12:51 ` Uday S Reddy 2010-08-21 17:10 ` Stephen J. Turnbull 2 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 10:56 UTC (permalink / raw) To: Jan Djärv; +Cc: u.s.reddy, emacs-devel > Date: Sat, 21 Aug 2010 12:37:45 +0200 > From: Jan Djärv <jan.h.d@swipnet.se> > Cc: emacs-devel@gnu.org > > I'm arguing that push doesn't buy you anything w.r.t. to speed when sending > changes to Savannah. If by both ways you mean "push is slow" and "commit is > slow" you are correct. We can just say "bzr is slow" and be done with it. 100% agreement. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 10:37 ` Jan Djärv 2010-08-21 10:56 ` Eli Zaretskii @ 2010-08-21 12:51 ` Uday S Reddy 2010-08-21 13:02 ` Jan Djärv 2010-08-21 15:36 ` Eli Zaretskii 2010-08-21 17:10 ` Stephen J. Turnbull 2 siblings, 2 replies; 198+ messages in thread From: Uday S Reddy @ 2010-08-21 12:51 UTC (permalink / raw) To: Jan Djärv; +Cc: Uday S Reddy, emacs-devel Jan Djärv writes: > > You are arguing both ways, it seems to me. > > I'm arguing that push doesn't buy you anything w.r.t. to speed when sending > changes to Savannah. If by both ways you mean "push is slow" and "commit is > slow" you are correct. We can just say "bzr is slow" and be done with it. If you use unbound branches, push is slow but commit is not slow. Separating push from commit helps you in that, you can do push less often. With bound branches, push = commit. So, you are stuck with the slowness. By arguing "both ways", I mean that you want to argue that bound branches are better. But, when pushed, the best you can say is that they are no worse. Nobody has pointed out anything that makes them better. And the "no worse" argument only holds if you exclusively work on separate task branches. If you want to work on the main branch and commit it frequently, like Eli wants to do for bug fixes, then bound branches are worse because they force you to synchronize for each commit. Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 12:51 ` Uday S Reddy @ 2010-08-21 13:02 ` Jan Djärv 2010-08-21 15:36 ` Eli Zaretskii 1 sibling, 0 replies; 198+ messages in thread From: Jan Djärv @ 2010-08-21 13:02 UTC (permalink / raw) To: Uday S Reddy; +Cc: emacs-devel Uday S Reddy skrev 2010-08-21 14.51: > Jan Djärv writes: > >>> You are arguing both ways, it seems to me. >> >> I'm arguing that push doesn't buy you anything w.r.t. to speed when sending >> changes to Savannah. If by both ways you mean "push is slow" and "commit is >> slow" you are correct. We can just say "bzr is slow" and be done with it. > > If you use unbound branches, push is slow but commit is not slow. Duh. I'm only talking about when stuff goes to Savannah. I know committing locally is much faster, I do it all the time. > Separating push from commit helps you in that, you can do push less > often. No it don't. When a bug fix is done, or a feature is done, I want it to go to Savannah. Push doesn't help here, when it is time, it is time. > By arguing "both ways", I mean that you want to argue that bound > branches are better. You are putting words in my mouth. I only said for the same amount of data to be sent upstream, push and commit is equally slow. Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 12:51 ` Uday S Reddy 2010-08-21 13:02 ` Jan Djärv @ 2010-08-21 15:36 ` Eli Zaretskii 2010-08-22 7:39 ` Stephen J. Turnbull 1 sibling, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 15:36 UTC (permalink / raw) To: Uday S Reddy; +Cc: u.s.reddy, jan.h.d, emacs-devel > Date: Sat, 21 Aug 2010 13:51:38 +0100 > From: Uday S Reddy <u.s.reddy@cs.bham.ac.uk> > Cc: Uday S Reddy <u.s.reddy@cs.bham.ac.uk>, emacs-devel@gnu.org > > By arguing "both ways", I mean that you want to argue that bound > branches are better. But, when pushed, the best you can say is that > they are no worse. Nobody has pointed out anything that makes them > better. The only advantage of a bound branch is that the workflow is simpler. > If you want to work on the main branch and commit it frequently, > like Eli wants to do for bug fixes, then bound branches are worse > because they force you to synchronize for each commit. You cannot push without synchronizing anyway, or else you will mess up the upstream history. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 15:36 ` Eli Zaretskii @ 2010-08-22 7:39 ` Stephen J. Turnbull 0 siblings, 0 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 7:39 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Uday S Reddy, jan.h.d, emacs-devel Eli Zaretskii writes: > > If you want to work on the main branch and commit it frequently, > > like Eli wants to do for bug fixes, then bound branches are worse > > because they force you to synchronize for each commit. > You cannot push without synchronizing anyway, or else you will mess > up the upstream history. Sure, but as long as you have arranged your local branch so that its mainline commits all belong on the upstream mainline, you synchronize once *per push* rather than once *per commit*. Synchronization (done correctly) is expensive because it involves a build-and-test cycle. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 10:37 ` Jan Djärv 2010-08-21 10:56 ` Eli Zaretskii 2010-08-21 12:51 ` Uday S Reddy @ 2010-08-21 17:10 ` Stephen J. Turnbull 2 siblings, 0 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-21 17:10 UTC (permalink / raw) To: Jan Djärv; +Cc: Uday S Reddy, emacs-devel Jan Djärv writes: > > Whichever way I look at it, I don't see any upside to using bound > > branches, but plenty of downside. So, I am surprised that > > emacs-devs choose this mode of operation. > > It was recommended here: > http://www.emacswiki.org/emacs/BzrForEmacsDevs. Nobody has stepped > up and explained in this detail a better way. I'm beginning to remember what the discussion was. (Stefan's right, life would be a lot easier if Emacs just switches to git.) The basic problem of distributed development is that there is no physical mainline (this is *why* conflicts can occur; even with a centralized VCS, for this purpose we can consider multiple workspaces as virtual -- unrecorded -- branches). However, most projects are organized around a mainline (or a small number of mainlines), and of course for products with a warrantee, the supported versions implicitly define a mainline in practice. Darcs completely ignores the concept of mainline, by viewing a version as a set (not a sequence or even DAG) of abstract patches, and adding only minimal dependencies. git, hg, and bzr view versions as nodes in a graph, the history DAG. Traversing the DAG (for example, to produce a log) requires choices in the presence of branching and merging (if there are no merges, AFAIK all DVCSes ignore off-current-branch commits in log and other branch-tracing operations like annotate). git and hg of course must choose a traversal algorithm (or more abstractly a way of converting the DAG to a total order), but this is considered an arbitrary choice (more or less). Aside from arbitrary ordering decisions with respect to parallel branches in the DAG, they only distinguish between merge nodes (ie, those with multiple parents) and non-merge nodes. bzr, OTOH, made a deliberate decision to have a distinguished mainline, actually, a hierarchy of them, indicated by the order of parents of each node. Another important design decision in bzr (similar to hg and darcs) is that the basic model is workspace == branch == repository. (git denied this model from the get-go. git was always designed to manage a general DAG and from the very beginning allowed different workspaces to share an object database.) The idea is to simplify life for the user by having one active head per workspace, and the user switches branches by cd'ing to the workspace with the appropriate version checked out. However, having only one active head interacts with the distinguished mainline in, IMO, an unfortunate way: every new commit is automatically on the mainline! That is, the mainline is *workspace [1]relative*. Having each workspace contain a mainline means that a decision has to be made in the case of a non-trivial merge. Which branch's unique commits are on the mainline?[2] bzr's design decision is that the *target* of the merge ("merge source into target") is the new mainline. This is consistent with the workspace-relative notion of mainline that bzr was forced to adopt.[3] In a hierarchical workflow like the Linux kernel[4] where changes always flow from contributors "up" a hierarchy of lieutenants (each with their own "local" mainline) to the master integrator of "the" mainline, the workspace-relative notion *implemented* by bzr corresponds closely to the *socially effective* mainline of the project. Unfortunately, this idealized workflow can only be realized if integration is fast enough that contributors can resync to "the" mainline after their "old" work is committed to "the" mainline, but before committing new work to the local branch. (Alternatively, they can commit whenever they like, but use rebase to ensure that their workspace DAGs are compatible with the mainline DAG.) What happens in practice is that contributors are impatient to get new content from "the" mainline (and perhaps from other "more central" branches). So they merge "the" mainline back into their local branches and start work again. In bzr, this is *fundamentally wrong*. For Emacs, socially, the Savannah trunk is the mainline, and contributors think of it that way. *But bzr doesn't.* bzr thinks that this branch labelled "trunk" is just another branch to be merged into the mainline, *which by design lives in the local branch*. The social mainline and the bzr mainline *must* be different! (Except in the case of a project run by a benevolent dictator, and even then, they only coincide for the dictator.) So here is the primary role of the bound branch in the workflow recommended by BzrForEmacsDevs. It always has the socially-determined mainline as its bzr mainline. If you commit something there, it automatically is committed to the trunk repo as well. If the trunk repo has advanced, you can't commit in your bound branch. You need to update the workspace and remerge your changes, first. (The remerge is automatic unless the update creates conflicts. Note that you still need to commit your changes.) You can achieve the same effect by pulling from trunk into your unbound integration branch (the branch from which you push) before doing the merge-commit-push dance there. The bound branch does not do an implicit update before merge or commit, although it does do an implicit push after commit. So the BzrForEmacsDevs bound branch workflow might save you some typing, and since it always tries to commit to the master branch first, you can't screw up the mainline.[5] Footnotes: [1] In git, OTOH, a record is kept of the source of a branch, and for remote branches a tracking branch is established to represent the mainline of that branch. "The" project mainline is conventionally called "master" (and of course in workspaces has a tracking branch). In practice, this works well with a bit of discipline for most people. [2] In a DAG-based VCS, it doesn't really make sense to build a mainline out of some commits from one branch and some from the other, because that requires breaking the parent-child relationships. [3] It's not quite true that there was no alternative. An alternative would be that commits in a branch are off-mainline, and the user makes an explicit decision as to which of the branches being merged is the mainline at the time of the merge. git actually had a UI like this (all parents had to be explicitly stated in a merge command), but it was quickly abandoned. (Now HEAD is implicitly the leftmost parent in all git merges). [4] As generally understood; in fact it really needs to work quite differently. [5] In the current configuration of the Savannah trunk, you can't screw up the mainline anyway. Your push won't be accepted if it would cause the trunk mainline to be subordinated to your mainline. However, this is likely to confuse users; the bound branch is easier to understand. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 22:41 ` Uday S Reddy 2010-08-21 8:36 ` Jan Djärv @ 2010-08-21 9:03 ` Eli Zaretskii 2010-08-21 12:31 ` Uday S Reddy 2010-08-21 18:59 ` Stephen J. Turnbull 1 sibling, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 9:03 UTC (permalink / raw) To: Uday S Reddy; +Cc: emacs-devel > From: Uday S Reddy <u.s.reddy@cs.bham.ac.uk> > Date: Fri, 20 Aug 2010 23:41:13 +0100 > > >> Sure. So don't do that. One (probably for values of "one" != "eliz") > >> can pull instead, and rebase when necessary to get that to succeed. > > > > Please show this workflow in more detail. Without the details, it's > > hard to tell what you suggest. You could be thinking about things > > possible with git, but not with bzr; it happened in the past. > > I think one needs to do a pull before each commit, to be safe. (Seems to be > the same as update-commit cycle for bound branches.) > > If you have already done a series of commits and lost the opportunity to pull, > then you have to rebase. > > If even that seems too far out, then you have to make your changes into a > separate branch and merge it in later. Well, Stephen refused to tell more, citing my imaginary unwillingness to know. (Since when asking a question means you don't want to know the answer?) So I guess we will never know what Stephen was talking about. Btw, pull is only possible when the branch didn't diverge from upstream, which means it is not suited well for a branch where you do development. At least AFAIU. I'm not even sure it will agree to do its job if you have uncommitted local changes. Merging into a local branch is what I had in mind, and the disadvantage with the "bzr log" output I talked about applies to that workflow. To me, it is a significant disadvantage: I use "bzr log" a lot, and it is painfully slow with the -n0 switch. As for rebase, I don't really understand what you suggest, and how it will help with an unbound branch where you develop. Perhaps you could elaborate. (I know what's a rebase and how to do it with Bazaar.) > However, we get to use our local mirror of the trunk as if it were a local > branch. We can commit to it without affecting anybody else and do a public > commit only in the end. We can commit to it as often as we please, keep a > careful log, do enough testing etc. And, this local branch can magically turn > back into a proper mirror as soon as we do a rebase-push. You can't get this > with bound branches. Your local branches have to be necessarily separate > branches, whose histories will appear as merges in the mainline. Sure. But that's in theory. In practice, you also need to consider what kind of changes you make locally. At least for me, there are 2 main kinds: bug-fixes and development of significant new features. (There's a third kind as well: when I need to make changes for the MS-DOS build, but I don't think this part will be interesting for anyone but myself.) For the first kind, it is IMO not very good to have the changes uncommitted upstream for prolonged periods of time, because people are using the development code, and the bugs annoy them. So you'd like to commit those to upstream frequently. And if you commit frequently, the proposed rebase-push workflow (IIUC) is not a real improvement, perhaps even a nuisance, because it adds the overhead of the rebase and does not save me from frequent slow commits to the master repository. And if your local commits have bug-fixes and new features interspersed, and you want to commit just the bug-fixes, won't the workflow you need for such cherry-picking become even more complicated? For the second kind of changes, I don't see how doing that on an unbound "mirror" branch is different from a separate branch whose purpose is development. A separate branch has the advantage of keeping the development separate from mainline, so I cannot by mistake commit unfinished code to upstream. It also lowers the mental burden on my mind, by keeping things spatially separated. Merges are painless either way; I generally find bzr doing its job very well when I merge. So bottom line, I see no advantages to using an unbound branch which mixes changes of different types. I agree it's probably possible to do all that with an unbound branch, but I don't see how it would relieve the pain of slow commits and slow updates/merges from upstream, which both are slow due to network traffic bzr incurs when it uses SFTP. > We use separate local branches as well, when they are appropriate. But we are > not forced to use them all the time. (Generally, I am happy to use the main > branch for a few days worth of work where I can see the end clearly. I use > separate branches for things that might take a few weeks, or things of a more > open-ended nature.) Well, you see, for me, "a few days worth of work" means in practice a few weekends of work, because I have almost no time on weekdays for any significant work. A week's worth of commits to upstream by others is most of the time significant enough to make it a PITA when you have local changes, because there isn't a week that I don't find some small bug I want to fix and commit almost immediately, to let others enjoy the fix. > With bound branches, your branch is locked up until the commit goes > through. You can't do anything while you have uncommitted changes > in your source. Why would you say that? That's not true. Nothing prevents me from editing while "bzr ci" churns away. The system is not locked, only (some) bzr operations will fail. But most of the development is not about bzr ops, its about using the editor, the compiler, and other development tools, none of which are locked up when "bzr ci" runs. > With unbound branches, we can continue working on the source even > when push is running in the background, because the source tree > doesn't have any uncommitted changes. We can also give up on the > push if necessary and continue committing to the branch. The > advantage seems quite clear to me. Seems you think that when I'm done with developing one feature or bug-fix, I immediately proceed to committing the next one. But that's not so, at least not here. Before I'm ready for the next commit, either locally or to upstream, I need to develop and test it. And that part, which is what I do most of the time, is not blocked by a running commit. > > No big deal. But the disadvantages of each workflow need to be well > > understood before making a decision which one to use. > > I can't believe that you guys really understood the disadvantages of your > current workflow before settling on it. Not entirely, which is why I constantly revise it and make amendments. But that doesn't mean I shouldn't consider the merits and demerits beforehand. After all, most bzr commands are common to all workflows, and so getting experience with them makes you smarter when making decisions about workflows you didn't yet try. > The most illuminating revelation I found in Stephen's post is that, > with bound branches, every commit is a merge. Most of the time, it > is untested and unsafe. This is the biggest disadvantage of all, if > you ask me. I don't understand this argument at all. In fact, I think it's plain false. My workflow in a bound branch is this: brz up [build the current upstream] [some minimal sanity checks to make sure upsteam works] [make changes] [build and test the modified binary] [repeat the sanity checks, fix anything that became broken] [bzr up] [if there are any changes upstream, build and test again] [repeat last two steps until "bzr up" brings no changes] bzr ci Now please tell me how can I commit code that is "untested and unsafe" with this workflow? What am I missing? > It also occurs to me that, by asking everybody to use bound > branches, you have massively increased the contention on your public > repo and the server. That is making your problems worse. For the record, I didn't write the recommended workflow (I don't even use it to the letter). It was written by 2 people who know a lot about Bazaar and dVCSs. So I trust them to have weighed the merits and demerits when they decided on that workflow. Having said that, the Emacs wiki is free for anyone to suggest alternative workflows, so if you think there are better alternatives, feel free to advertise them. There's already one such alternative there, I see no reason why there shouldn't be more of them. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 9:03 ` Eli Zaretskii @ 2010-08-21 12:31 ` Uday S Reddy 2010-08-21 13:45 ` Óscar Fuentes ` (2 more replies) 2010-08-21 18:59 ` Stephen J. Turnbull 1 sibling, 3 replies; 198+ messages in thread From: Uday S Reddy @ 2010-08-21 12:31 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Uday S Reddy, emacs-devel Eli Zaretskii writes: > Well, Stephen refused to tell more, citing my imaginary unwillingness > to know. (Since when asking a question means you don't want to know > the answer?) So I guess we will never know what Stephen was talking > about. Well, the strategies I mentioned are common knowledge. If Stephen has some other sophisticated tricks he knows about, I am sure he will tell us. > Btw, pull is only possible when the branch didn't diverge from > upstream, which means it is not suited well for a branch where you do > development. At least AFAIU. I'm not even sure it will agree to do > its job if you have uncommitted local changes. Pull works before you commit. It is the same as update, just a difference in terminology. If you commit wihout pulling first, then your branch may begin to diverge from the public repo. A bound branch won't allow you to do this. It will force you to update first. So, I can see a reason why the Stefan and Yidong might recommend bound branches. But the reasoning is weak. If I do commit push and the push fails because the branch has diverged, then my strategy is to uncommit pull commit push So, for a single commit, you can get the same effect as bound branches. If I do multiple commits to my branch and it has diverged significantly from the public repo, then I do rebase ... resolve conflicts ... test push (Even though you said you understand how rebase works, here is a quick summary. If you originally pulled at revision 500, and made commits 501..505 while the central repo moved up to revision 510 in the interim, then doing a rebase will import revisions 501..510 from the central repo and move your commits to 511..515. This has a significant advantage over bound branches. I am able to use my main branch as if it were a task branch, keep all the related commits together, test all of the commits together, push at my own convenience, reduce the time wasted in synchronization and ensure that all the commits are at the top level of the history. (Bound branches do the opposite. They intersperse your commits with others. You might end up publishing your commits before they are fully tested. And, they force you to synchronize with the central repo for each commit. In essence, bound branches are not distributed. They are centralized.) > Merging into a local branch is what I had in mind, and the > disadvantage with the "bzr log" output I talked about applies to that > workflow. To me, it is a significant disadvantage: I use "bzr log" a > lot, and it is painfully slow with the -n0 switch. I understand. If you use unbound branches, you don't have to do this. > For the first kind, it is IMO not very good to have the changes > uncommitted upstream for prolonged periods of time, because people are > using the development code, and the bugs annoy them. So you'd like to > commit those to upstream frequently. And if you commit frequently, > the proposed rebase-push workflow (IIUC) is not a real improvement, > perhaps even a nuisance, because it adds the overhead of the rebase > and does not save me from frequent slow commits to the master > repository. And if your local commits have bug-fixes and new features > interspersed, and you want to commit just the bug-fixes, won't the > workflow you need for such cherry-picking become even more > complicated? Commiting/sychronizing "frequently" is still better than commiting instantly. It gives you a choice as to how frequently you synchronize. That might depend on the urgency of the fixes and server contention levels. Bound branches remove that choice. The overhead of rebase is also part of the choice. In cases where the overhead is significant, you might push more frequently. In cases where it isn't, you might push less frequently. As for interspersing bug-fixes and new features, I would pick and choose depending on the situation. A half-finished new feature sitting in the trunk doesn't hurt anybody. I might leave it in. (People are expected to use the new feature only after it gets into the NEWS file.) Or, if I don't feel comfortable about it, I would probably push my current main branch as a task branch, reset the main branch to the old state (using uncommit), and attend to the urgent bug fix in the main branch. Or, I might do the urgent bug fix in a new mirror of the central repo and push it. It will then reappear as part of rebase in my main branch. So, there are lots of ways of doing it. As I said, for big new features, I would use separate task branches. > For the second kind of changes, I don't see how doing that on an > unbound "mirror" branch is different from a separate branch whose > purpose is development. A separate branch has the advantage of > keeping the development separate from mainline, so I cannot by mistake > commit unfinished code to upstream. It also lowers the mental burden > on my mind, by keeping things spatially separated. Merges are > painless either way; I generally find bzr doing its job very well when > I merge. Agreed. > So bottom line, I see no advantages to using an unbound branch which > mixes changes of different types. I agree it's probably possible to > do all that with an unbound branch, but I don't see how it would > relieve the pain of slow commits and slow updates/merges from > upstream, which both are slow due to network traffic bzr incurs when > it uses SFTP. Ok, here, once again are the advantages: 1. Allows you to synchronize with central repo less frequently. 2. Allows you to choose when to synchronize. 3. Keeps your related commits to the mainline together. 4. Allows you to go from bug-fixing mode to (small) development mode and back, without much pain. 5. Allows you to choose between many different workflows, and even to switch from one to the other on the fly, whereas bound branches seem to allow only one workflow. > Well, you see, for me, "a few days worth of work" means in practice a > few weekends of work, because I have almost no time on weekdays for > any significant work. A week's worth of commits to upstream by others > is most of the time significant enough to make it a PITA when you have > local changes, because there isn't a week that I don't find some small > bug I want to fix and commit almost immediately, to let others enjoy > the fix. Ok, I understand. Most of my work is done during weekends as well. If I am in a bug fixing mode, I might work on several of them in a day, but perhaps synchonize only once in the day. > Why would you say that? That's not true. Nothing prevents me from > editing while "bzr ci" churns away. The system is not locked, only > (some) bzr operations will fail. But most of the development is not > about bzr ops, its about using the editor, the compiler, and other > development tools, none of which are locked up when "bzr ci" runs. Ok, I stand corrected. I don't have experience with long-running commits. > Seems you think that when I'm done with developing one feature or > bug-fix, I immediately proceed to committing the next one. But that's > not so, at least not here. Before I'm ready for the next commit, > either locally or to upstream, I need to develop and test it. And > that part, which is what I do most of the time, is not blocked by a > running commit. Agreed. It is not that the synchronization itself might be blocking you for further commits (although Jason might be in a situation where that happens as well). But, when you want to synchronize, you need to resolve conflicts which you may not be ready to do at that time. You can then postpone synchronization and continue working on other commits. > I don't understand this argument at all. In fact, I think it's plain > false. My workflow in a bound branch is this: > > brz up > [build the current upstream] > [some minimal sanity checks to make sure upsteam works] > [make changes] > [build and test the modified binary] > [repeat the sanity checks, fix anything that became broken] > [bzr up] > [if there are any changes upstream, build and test again] > [repeat last two steps until "bzr up" brings no changes] > bzr ci > > Now please tell me how can I commit code that is "untested and unsafe" > with this workflow? What am I missing? I agree that you are being very disciplined here. But, most of us think of update/pull/rebase as just a chore to get through before we can push/commit. Only if it gives rise to merge conflicts would we think there is need for further testing. So, the more update/pull/rebase we have to do, the more unsafe the code is. But, how much this is a problem in reality will probably depend on the project and the nature of changes being made. I don't have a lot of experience here. But it is a concern, and it got raised for me only after reading Stephen's message. > For the record, I didn't write the recommended workflow (I don't even > use it to the letter). It was written by 2 people who know a lot > about Bazaar and dVCSs. So I trust them to have weighed the merits > and demerits when they decided on that workflow. Ok, for the record, I don't mean you by saying "you". I mean the emacs-developer team in general. It seems to me that the closeness to the previous workflow using CVS was perhaps the overriding criterion for the authors of the recommended workflow. The technical merits and demerits were probably not at the top of the scale. Having always used unbounded branches, I came into this discussion wanting to learn why bound branches are being used by you guys. I still don't know why. But I can see that it makes you feel a lot more comfortable. Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 12:31 ` Uday S Reddy @ 2010-08-21 13:45 ` Óscar Fuentes 2010-08-21 14:56 ` Uday S Reddy 2010-08-21 15:48 ` Eli Zaretskii 2010-08-21 19:10 ` Stephen J. Turnbull 2 siblings, 1 reply; 198+ messages in thread From: Óscar Fuentes @ 2010-08-21 13:45 UTC (permalink / raw) To: emacs-devel Uday S Reddy <u.s.reddy@cs.bham.ac.uk> writes: [snip] > It seems to me that the closeness to the previous workflow using CVS > was perhaps the overriding criterion for the authors of the > recommended workflow. The technical merits and demerits were probably > not at the top of the scale. Not really (for the workflow advertised by Stephen and Karl.) At the time (and possibly still now) rebasing was not the soundest part of bzr. So the remaining workflows were "merge+push" and "pull". "merge+push" have the serious inconveniences described on my other post on this thread. So Stephen went for the remaining one: "pull", which is simulated with bound branches. When a developer does "merge+commit" on his local branch bound to upstream, it is the equivalent of `pull' on the remote branch. > Having always used unbounded branches, I came into this discussion > wanting to learn why bound branches are being used by you guys. I > still don't know why. But I can see that it makes you feel a lot more > comfortable. It is not about confort, but about the lesser evil while working with bzr. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 13:45 ` Óscar Fuentes @ 2010-08-21 14:56 ` Uday S Reddy 2010-08-21 17:32 ` Óscar Fuentes 2010-08-22 7:45 ` Stephen J. Turnbull 0 siblings, 2 replies; 198+ messages in thread From: Uday S Reddy @ 2010-08-21 14:56 UTC (permalink / raw) To: emacs-devel On 8/21/2010 2:45 PM, Óscar Fuentes wrote: > Not really (for the workflow advertised by Stephen and Karl.) "Stephen" is Stephen Turnbull? But he is arguing for unbound branches now. > At the time (and possibly still now) rebasing was not the soundest part > of bzr. So the remaining workflows were "merge+push" and > "pull". "merge+push" have the serious inconveniences described on my > other post on this thread. So Stephen went for the remaining one: > "pull", which is simulated with bound branches. When a developer does > "merge+commit" on his local branch bound to upstream, it is the > equivalent of `pull' on the remote branch. Thank you very much. This makes perfect sense. If you don't trust rebase, and there are good reasons not to, then the current workflow is probably the best way of doing things. And, given the workflow, bound branches serve the purpose perfectly fine. I get it now. Given the situation, moving to git would seem like a good idea, because its rebase is trustworthy and should improve matters enormously. Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 14:56 ` Uday S Reddy @ 2010-08-21 17:32 ` Óscar Fuentes 2010-08-22 7:45 ` Stephen J. Turnbull 1 sibling, 0 replies; 198+ messages in thread From: Óscar Fuentes @ 2010-08-21 17:32 UTC (permalink / raw) To: emacs-devel; +Cc: Uday S Reddy Uday S Reddy <u.s.reddy@cs.bham.ac.uk> writes: >> Not really (for the workflow advertised by Stephen and Karl.) > > "Stephen" is Stephen Turnbull? Yes. > But he is arguing for unbound branches now. I'm not sure what he is arguing for, because I didn't follow the thread. The workflow he described on the wiki page makes lots of sense and was great to know before too much people learned the hard way why other apparently reasonable workflows are flawed. [snip] > Given the situation, moving to git would seem like a good idea, > because its rebase is trustworthy and should improve matters > enormously. Bzr was chosen not because technical merits, but because political reasons (it is a GNU project.) I don't see Emacs moving to Git anytime soon, no matter how much bzr sucks. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 14:56 ` Uday S Reddy 2010-08-21 17:32 ` Óscar Fuentes @ 2010-08-22 7:45 ` Stephen J. Turnbull 1 sibling, 0 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 7:45 UTC (permalink / raw) To: Uday S Reddy; +Cc: emacs-devel Uday S Reddy writes: > On 8/21/2010 2:45 PM, Óscar Fuentes wrote: > > > Not really (for the workflow advertised by Stephen and Karl.) > "Stephen" is Stephen Turnbull? But he is arguing for unbound > branches now. Only in that sense that somebody (Jan?) claimed that "push" was deprecated, and I mistook Eli as supporting that position. I don't have a problem with use of a bound branch, although I recommend against doing work in it. (This may be idiosyncratic; mostly I like to ensure I always have a pristine copy of upstream around.) ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 12:31 ` Uday S Reddy 2010-08-21 13:45 ` Óscar Fuentes @ 2010-08-21 15:48 ` Eli Zaretskii 2010-08-21 19:10 ` Stephen J. Turnbull 2 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 15:48 UTC (permalink / raw) To: Uday S Reddy; +Cc: u.s.reddy, emacs-devel > Date: Sat, 21 Aug 2010 13:31:29 +0100 > From: Uday S Reddy <u.s.reddy@cs.bham.ac.uk> > Cc: Uday S Reddy <u.s.reddy@cs.bham.ac.uk>, > emacs-devel@gnu.org > > Commiting/sychronizing "frequently" is still better than commiting > instantly. It gives you a choice as to how frequently you > synchronize. That might depend on the urgency of the fixes and server > contention levels. Bound branches remove that choice. Strictly speaking, they don't. There's still "ci --local". Anyway, I don't care much about this choice, because I always choose to sync and commit. I already explained the reasons. > As for interspersing bug-fixes and new features, I would pick and > choose depending on the situation. A half-finished new feature > sitting in the trunk doesn't hurt anybody. I might leave it in. Really?? I doubt many developers will do the same. I certainly won't, not as long as the development code is used by many people. > (People are expected to use the new feature only after it gets into > the NEWS file.) I actually read the ChangeLog files each time I resync. I won't be surprised if many others did the same to learn about news. There's also the emacs-diffs mailing list which is great for watching new developments; all commits go there, so NEWS don't count. > Or, if I don't feel comfortable about it, I would > probably push my current main branch as a task branch, reset the main > branch to the old state (using uncommit), and attend to the urgent bug > fix in the main branch. Or, I might do the urgent bug fix in a new > mirror of the central repo and push it. It will then reappear as part > of rebase in my main branch. So, there are lots of ways of doing it. Yes; and all of them are quite complicated and more error-prone than the simple ones. To me that means they should be used only when necessary (which I do), not as a matter of routine. > 1. Allows you to synchronize with central repo less frequently. > > 2. Allows you to choose when to synchronize. These two are the same. > 3. Keeps your related commits to the mainline together. This one is unrelated to boundness of the branch. I can do the same in a bound branch -- I just need to wait with committing until all the "related" changes are ready to go. > 4. Allows you to go from bug-fixing mode to (small) development mode > and back, without much pain. Not without some pain. > 5. Allows you to choose between many different workflows, and even to > switch from one to the other on the fly, whereas bound branches seem > to allow only one workflow. Since I have local unbound branches anyway, this is not an advantage at all. Whenever I need this, I simply switch to one of the local branches. There are bzr tricks to move all your uncommitted changes to a different branch, and I use them in that case. > Having always used unbounded branches, I came into this discussion > wanting to learn why bound branches are being used by you guys. I > still don't know why. But I can see that it makes you feel a lot more > comfortable. As I wrote elsewhere, the only real advantage is the simplicity of the workflow. To me, that is important, as is the fact that simplicity makes my work less error-prone. With the little time I have, any errors on my side could take days to be fixed, and I don't like to cause long-term breakage. YMMV. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 12:31 ` Uday S Reddy 2010-08-21 13:45 ` Óscar Fuentes 2010-08-21 15:48 ` Eli Zaretskii @ 2010-08-21 19:10 ` Stephen J. Turnbull 2 siblings, 0 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-21 19:10 UTC (permalink / raw) To: Uday S Reddy; +Cc: Eli Zaretskii, emacs-devel Uday S Reddy writes: > Pull works before you commit. It is the same as update, just a > difference in terminology. Unfortunately, that's apparently not so. Not only is there a gross difference (update will do a merge of incommitted work in the workspace with the new changes from upstream, pull never merges), but there are subtle differences: pull involves communication between branches, and updates the workspace as a side effect, while update involves communication between a branch and a workspace (and as a side effect, updates the branch from its master if bound). > Ok, for the record, I don't mean you by saying "you". I mean the > emacs-developer team in general. It seems to me that the closeness > to the previous workflow using CVS was perhaps the overriding > criterion for the authors of the recommended workflow. The > technical merits and demerits were probably not at the top of the > scale. Simplicity was important. The option of suggesting a full-bore distributed workflow was discarded early. However, the suggested workflow obviously is quite different from CVS. A CVS-like workflow is easy to achieve simply by using a lightweight checkout. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 9:03 ` Eli Zaretskii 2010-08-21 12:31 ` Uday S Reddy @ 2010-08-21 18:59 ` Stephen J. Turnbull 2010-08-21 19:50 ` Leo ` (2 more replies) 1 sibling, 3 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-21 18:59 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Uday S Reddy, emacs-devel Eli Zaretskii writes: > Well, Stephen refused to tell more, citing my imaginary > unwillingness to know. (Since when asking a question means you > don't want to know the answer?) When you consistently ask for details before you have enough understanding of the theory, or at least the pragmatic constraints. Anyway, I don't use bzr in anger so my actual workflows aren't going to be particularly useful. > So I guess we will never know what Stephen was talking about. No, I changed my mind about posting to the thread since Jan mentioned BzrForEmacsDevs and the recommendation for binding the mirror branch. > Btw, pull is only possible when the branch didn't diverge from > upstream, which means it is not suited well for a branch where you > do development. D'oh. You just don't ever want to do development in your mirror branch (unless it's bound). The reason this is a problem in bzr (and to some extent hg) is that branches are heavyweight; you don't want scads of them being made automatically for internal operations. So the user has to make mirror branches explicitly when needed. git makes branching extremely lightweight, and therefore need not hesitate to use mirror ("tracking") branches which are read-only to the user, and hardly visible. > Merging into a local branch is what I had in mind, Really, I'm coming to believe that bzr is fundamentally unsuited to radically distributed development (which Emacs approximates, since it has a fairly large group of committers and no required synchronization protocol). Merging into a local branch should not require thought! > As for rebase, I don't really understand what you suggest, and how > it will help with an unbound branch where you develop. Perhaps you > could elaborate. (I know what's a rebase and how to do it with > Bazaar.) The workflow should be something like 0. work in "work", a branch of "mirror" (local) which is in turn a branch of "trunk" (on Savannah) 1. pull from "trunk" into "mirror" 2. rebase "work" on "mirror" 3. repeat 0-2 until done 4. cd to mirror & pull from "work" into "mirror" (this will always succeed!) 5. push from "mirror" to "trunk" 6. if 5 succeeds, you're done (for now, go to 0 to start the next change) 7. else pull --overwrite from "trunk" into "mirror" 8. goto 2 > Sure. But that's in theory. In practice, you also need to > consider what kind of changes you make locally. At least for me, > there are 2 main kinds: bug-fixes and development of significant > new features. (There's a third kind as well: when I need to make > changes for the MS-DOS build, but I don't think this part will be > interesting for anyone but myself.) That's interesting in itself for anybody maintaining an optional feature or different platform, I should think. The other thing is that you have multiple development branches. This is where the rebase-based workflow is attractive to me. The reason is that I generally want to have an easy way to diff against the branch parent (so I don't want to merge into the local branch and have mixed sequences of trunk and local commits, even if the VCS could theoretically handle it) but I do want my branch to incorporate the latest trunk commits. I guess this could also work with the mirror being a branch bound to "trunk", but it makes me nervous because of the incompleteness of bzr documentation; often it's not obvious what checkouts (lightweight or heavyweight) will do in any given situation. Also, you could have a script that will do the rebase step in several related branches with one pull, avoiding unnecessary network traffic. > For the first kind, it is IMO not very good to have the changes > uncommitted upstream for prolonged periods of time, What's your definition of "prolonged"? I'm thinking in terms of simply committing all changes locally until the end of the work session, then doing the merge to mirror and push to upstream in a batch at the end of the session. > because people are using the development code, and the bugs annoy > them. So you'd like to commit those to upstream frequently. And > if you commit frequently, the proposed rebase-push workflow (IIUC) > is not a real improvement, perhaps even a nuisance, because it adds > the overhead of the rebase and does not save me from frequent slow > commits to the master repository. How frequently do you commit? How finely do you divide changesets? I will often make 5 to 10 commits in a session when I'm working on minor bugs. I really would not like it if I had to wait even one minute for a commit of a typo fix. (I always separate typo fixes from "real bug" fixes, and although I do batch typo fixes when I make them one after another, I don't rebase just so that I can group all typo fixes in a single commit.) At least when I push to my launchpad branch of Mailman, there are many seconds of setup cost, which is only incurred once per push. And then I go for coffee or dinner or read mail. (Of course, I don't have a race condition since it's a private branch. But I do have to check for success.) > And if your local commits have bug-fixes and new features > interspersed, and you want to commit just the bug-fixes, won't the > workflow you need for such cherry-picking become even more > complicated? Yes. I don't do that in bzr. (It's no big deal in git because of the interactive rebase feature.) > > With bound branches, your branch is locked up until the commit > > goes through. You can't do anything while you have uncommitted > > changes in your source. > Why would you say that? That's not true. Nothing prevents me from > editing while "bzr ci" churns away. The system is not locked, only > (some) bzr operations will fail. But most of the development is > not about bzr ops, its about using the editor, the compiler, and > other development tools, none of which are locked up when "bzr ci" > runs. No, but if you do a typo fix, commit, then find another typo, 50 minutes (according to the recent report) is a very long time to wait.... I imagine it would also be a bad idea to continue to work on any of the files currently being committed, as if the commit fails you need to disentangle the changes by hand. bzr is no help because it has no record of which changes are part of the intended commit, and which ones aren't. You could avoid saving your post-bzr-ci work, and use the difference between the buffer and the file, but that seems a bit fragile. > I don't understand this argument at all. In fact, I think it's > plain false. My workflow in a bound branch is this: > > brz up > [build the current upstream] > [some minimal sanity checks to make sure upsteam works] > [make changes] > [build and test the modified binary] > [repeat the sanity checks, fix anything that became broken] > [bzr up] > [if there are any changes upstream, build and test again] > [repeat last two steps until "bzr up" brings no changes] > bzr ci > Now please tell me how can I commit code that is "untested and > unsafe" with this workflow? What am I missing? That workflow is safe, because the last thing you do before committing is test (the very last bzr up is a no-op, of course). That is what is required for a safe workflow. But it's very tempting to not do tests after bzr up succeeds without conflicts, and experience in many projects is that it is a common practice to omit testing after a merge. > > It also occurs to me that, by asking everybody to use bound > > branches, you have massively increased the contention on your > > public repo and the server. That is making your problems worse. That is definitely not true. The recommended workflow (at least as Karl and I wrote it) assumed that "one-commit changes" would be performed in a separate branch, and merged into the mirror (bound branch) in batches. Thus it's equivalent to a pull/rebase/push workflow for the purpose of hits on the public repo. It was others who insisted on recommending work *in* the bound branch, which could increase the burden on the server (but I don't know how much). IIRC, however, that is documented in a separate wiki page, and not as part of the BzrForEmacsDevs recommended workflow. However, I doubt that's really a big problem. The real problem is abysmal administration at Savannah (at least for this purpose), and maybe bzr's inherent slowness. I don't understand the stale locks problem; at least it's not frequently reported on the bazaar list. (That may be because so few people use dumb servers for the trunk repository, if it's a bug restricted to dumb servers.) ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 18:59 ` Stephen J. Turnbull @ 2010-08-21 19:50 ` Leo 2010-08-21 19:59 ` Eli Zaretskii 2010-08-21 19:56 ` Eli Zaretskii 2010-08-22 11:13 ` Jan Djärv 2 siblings, 1 reply; 198+ messages in thread From: Leo @ 2010-08-21 19:50 UTC (permalink / raw) To: emacs-devel On 2010-08-21 19:59 +0100, Stephen J. Turnbull wrote: > D'oh. You just don't ever want to do development in your mirror branch > (unless it's bound). The reason this is a problem in bzr (and to some > extent hg) is that branches are heavyweight; you don't want scads of > them being made automatically for internal operations. So the user has > to make mirror branches explicitly when needed. git makes branching > extremely lightweight, and therefore need not hesitate to use mirror > ("tracking") branches which are read-only to the user, and hardly > visible. Branching in git is as fast as: echo 7adb0b64823cbdcfbbcac9a9e32c6b435f57d889 > .git/refs/heads/mybranch basically writing a 40-char string to a file. Because it is so cheap it completely change many people's workflow. Even for my occasional hacking of emacs, I have: * Ferrari emacs-server emacs-trunk git-send-email ido ido-old leo mac-port master processes It is extremely difficult to lose data in git. So rebase is as safe as commit. Knowing that I can easily reorganise my private history (it takes ~ 5 seconds) I also use commit as a way of backup. Using git really gives you the feeling of using the right tool that is as intelligent as human being as far as content tracking is concerned. Leo ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 19:50 ` Leo @ 2010-08-21 19:59 ` Eli Zaretskii 2010-08-21 20:17 ` Leo ` (2 more replies) 0 siblings, 3 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 19:59 UTC (permalink / raw) To: Leo; +Cc: emacs-devel > From: Leo <sdl.web@gmail.com> > Date: Sat, 21 Aug 2010 20:50:35 +0100 > > Branching in git is as fast as: > > echo 7adb0b64823cbdcfbbcac9a9e32c6b435f57d889 > .git/refs/heads/mybranch > > basically writing a 40-char string to a file. Are all the branches co-located? If not, how do you cope with the bootstrap of a new branch, which takes much longer than writing a string to a file? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 19:59 ` Eli Zaretskii @ 2010-08-21 20:17 ` Leo 2010-08-21 20:31 ` Leo 2010-08-22 1:41 ` Tom Tromey 2010-08-22 6:52 ` Stephen J. Turnbull 2 siblings, 1 reply; 198+ messages in thread From: Leo @ 2010-08-21 20:17 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel On 2010-08-21 20:59 +0100, Eli Zaretskii wrote: >> Branching in git is as fast as: >> >> echo 7adb0b64823cbdcfbbcac9a9e32c6b435f57d889 > .git/refs/heads/mybranch >> >> basically writing a 40-char string to a file. > > Are all the branches co-located? If not, how do you cope with the > bootstrap of a new branch, which takes much longer than writing a > string to a file? There's no bootstrap of a new branch. Branch is a 'symbolic-link' and it is updated to always point to the most recent commit. You check out a branch by setting HEAD to that commit contained in .git/refs/heads/mybranch and if it is a working (non-bare) directory the contents are updated to the tree object contained in the commit. 1. get the commit id /Users/Shared/sources/emacs23.2 $ git rev-parse Ferrari ddb950a3e08e3501c223bea9c1086abce4e13cbb which is the same as /Users/Shared/sources/emacs23.2 $ git rev-parse HEAD ddb950a3e08e3501c223bea9c1086abce4e13cbb 2. show the contents of a commit /Users/Shared/sources/emacs23.2 $ git cat-file -p ddb950a tree d1395168668604b1cb603e32c1d999043add1ece parent ef9134cc92f8ebb266c750629fac7360ba5b75d2 parent 59549342ff44c4d431f52a3baf5e6a7ae0a88759 parent 7f3be0b47a1fa5cc73d45c3d9ed30107749b80f0 author Leo <sdl.web@gmail.com> 1282321429 +0100 committer Leo <sdl.web@gmail.com> 1282321429 +0100 Merge branches 'git-send-email', 'emacs-server' and 'ido' into Ferrari 3. show the tree object in the commit. /Users/Shared/sources/emacs23.2 $ git cat-file -p d13951 100644 blob a53a5ca2fa970cff2342b8d33da8f22647297da0 .dir-locals.el 100644 blob 32b44ceb0a3628af22d790e5d3442addbec85e2f BUGS 100644 blob 94a9ed024d3859793618152ea559a168bbcbb5e2 COPYING 100644 blob c51dced40ef1f656df1228e4905a947730469d7d ChangeLog 100644 blob 005aac08d87f82248da9ac00091d15bed83eb7cc INSTALL 100644 blob 8f8367518de9ac12d99c242582455e02093a9801 Makefile.in 100644 blob d41304b2f2c62462e8e41926bf50425340e553cb README 100644 blob f2eb0262e6029a824a20eeb76791a2d4e6e5a0ef config.bat 100755 blob e792aac60807bae3d8ef9f48c2a66e56fa4a4477 config.guess 100755 blob 5ecc18b6ada024c4aef5941a5667a3855849e057 config.sub 100755 blob 12b34f54a0049750bb92436ab410b4de6256d11a configure 100644 blob 156ec2773a322be8bab14b2520a35437c277f5c5 configure.in 040000 tree 5c479520810300c1ab592d1faf953e27eeab32f1 doc 040000 tree de14492ef9724818b455cc93e2a4b065e5332d7c etc 040000 tree 4a8f090a5d9fb6408e3bffb84ac380e6db8bccd2 info 100755 blob 058b26c82d24335834ad0472109d0cbc1c829084 install-sh 040000 tree 4398aef6800173aa3e602149219e60af1a13e96e leim 040000 tree 012e4b3be3dc8d63632a6555a93917f113eb2dee lib-src 040000 tree c56fd64ede1aafd8e0342ff992deee52623a45bc lisp 040000 tree b318762d0a2386129fb9f8d4fab53513bc2daf9c lwlib 040000 tree 043be1085f76b65bb7917e59f67e540f27e3d405 m4 040000 tree 65ff8af4fbf924bc4bb8b0074a4fe61cc97fd392 mac 100755 blob a5c600ab37e2bf22b8e0d19df38056ccb66ea9ed make-dist 100755 blob be98de6be01a1ec467902370b497291cb5d89596 mkinstalldirs 100755 blob ee9e355e3e61d569f9102f4387b108c3cf6dfa04 move-if-change 040000 tree b6b6e11664b383023fea78e202f66da3e57567c3 msdos 040000 tree 66ac1c24a91c5992a967721bec7d967045f03bb9 nextstep 040000 tree 0b835e8cd2c8612be7ba09237d5d1829d5dbf26e nt 040000 tree 2c6e1bbc971437f32599eff8e301d619ac02fa8e oldXMenu 040000 tree a57e3c9600ef9fd302d20605a776d63a22089e88 src 100755 blob 26853455e2e0ebd3b5bb3c664a0bd7ad564c6599 update-subdirs 100644 blob 0eb98cc82980c42bb6940d2ab5eab95ac9b5907f vpath.sed Leo ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 20:17 ` Leo @ 2010-08-21 20:31 ` Leo 0 siblings, 0 replies; 198+ messages in thread From: Leo @ 2010-08-21 20:31 UTC (permalink / raw) To: emacs-devel On 2010-08-21 21:17 +0100, Leo wrote: > There's no bootstrap of a new branch. Branch is a 'symbolic-link' and > it is updated to always point to the most recent commit. You check out > a branch by setting HEAD to that commit contained in > .git/refs/heads/mybranch and if it is a working (non-bare) directory > the contents are updated to the tree object contained in the commit. The following are two excellent references on git: 1. http://www.gitcasts.com/posts/railsconf-git-talk (video, 1h) 2. http://www.newartisans.com/2008/04/git-from-the-bottom-up.html (pdf) Leo ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 19:59 ` Eli Zaretskii 2010-08-21 20:17 ` Leo @ 2010-08-22 1:41 ` Tom Tromey 2010-08-22 1:47 ` Leo 2010-08-22 6:52 ` Stephen J. Turnbull 2 siblings, 1 reply; 198+ messages in thread From: Tom Tromey @ 2010-08-22 1:41 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Leo, emacs-devel >>>>> "Eli" == Eli Zaretskii <eliz@gnu.org> writes: Eli> Are all the branches co-located? If not, how do you cope with the Eli> bootstrap of a new branch, which takes much longer than writing a Eli> string to a file? There are multiple options for having multiple workspaces sharing a repository, e.g., "git new-workdir". Tom ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 1:41 ` Tom Tromey @ 2010-08-22 1:47 ` Leo 2010-08-22 13:47 ` David De La Harpe Golden 0 siblings, 1 reply; 198+ messages in thread From: Leo @ 2010-08-22 1:47 UTC (permalink / raw) To: Tom Tromey; +Cc: Eli Zaretskii, emacs-devel On 2010-08-22 02:41 +0100, Tom Tromey wrote: > There are multiple options for having multiple workspaces sharing a > repository, e.g., "git new-workdir". "git new-workdir"? Leo ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 1:47 ` Leo @ 2010-08-22 13:47 ` David De La Harpe Golden 2010-08-22 13:53 ` Andreas Schwab 0 siblings, 1 reply; 198+ messages in thread From: David De La Harpe Golden @ 2010-08-22 13:47 UTC (permalink / raw) To: Leo; +Cc: Tom Tromey, Eli Zaretskii, emacs-devel On 22/08/10 02:47, Leo wrote: > On 2010-08-22 02:41 +0100, Tom Tromey wrote: >> There are multiple options for having multiple workspaces sharing a >> repository, e.g., "git new-workdir". > > "git new-workdir"? > Maybe the git-new-workdir contrib has been blessed into a command? Actually, I guess Tom meant the contrib, though I'm not running the latest git. If you're using the debian git packages, see /usr/share/doc/git/contrib/workdir/git-new-workdir (or see the contrib dir in the git sources). That's also (straying wildly ontopic) near where the git-bundled git.el and git-blame.el for emacs can be found, see /usr/share/doc/git/contrib/emacs/ I try to have my bzr experience close to git, so I use a "shared no-trees repository" that I make branches from launchpad and then savannah emacs into. I branch locally as I see fit within that shared repository. I then use bzr checkout --lightweight to make working tree(s) from those branches, "bzr switch" to switch a working tree between them. Using such a shared repo, doing bzr branch --no-tree trunk/ blah/ cd .. bzr checkout --lightweight emacs-repo/blah/ emacs-blah/ takes about 10-15 secs on my system, with most of the time in doing the new lightweight checkout construction rather than the branch. "bzr switch" allows use of the same dir for different branches (one at a given time) in git-like fashion and is a bit faster. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 13:47 ` David De La Harpe Golden @ 2010-08-22 13:53 ` Andreas Schwab 0 siblings, 0 replies; 198+ messages in thread From: Andreas Schwab @ 2010-08-22 13:53 UTC (permalink / raw) To: David De La Harpe Golden; +Cc: Tom Tromey, Eli Zaretskii, Leo, emacs-devel David De La Harpe Golden <david@harpegolden.net> writes: > On 22/08/10 02:47, Leo wrote: >> On 2010-08-22 02:41 +0100, Tom Tromey wrote: >>> There are multiple options for having multiple workspaces sharing a >>> repository, e.g., "git new-workdir". >> >> "git new-workdir"? >> > > Maybe the git-new-workdir contrib has been blessed into a command? The git command will happily execute any git-foo in your path if you type "git foo". 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 19:59 ` Eli Zaretskii 2010-08-21 20:17 ` Leo 2010-08-22 1:41 ` Tom Tromey @ 2010-08-22 6:52 ` Stephen J. Turnbull 2010-08-22 7:56 ` Eli Zaretskii 2 siblings, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 6:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Leo, emacs-devel Eli Zaretskii writes: > > From: Leo <sdl.web@gmail.com> > > Date: Sat, 21 Aug 2010 20:50:35 +0100 > > > > Branching in git is as fast as: > > > > echo 7adb0b64823cbdcfbbcac9a9e32c6b435f57d889 > > > .git/refs/heads/mybranch > > > > basically writing a 40-char string to a file. > > Are all the branches co-located? I can't speak for Leo, but in my case all my git branches are colocated by project. If I had any upstreams that used git, my integration branches would have repos separate from my working branches, but the working branches would all share objects (see below). I even tried colocating Emacs and XEmacs, which worked (eg, for cherry-picking changes) but wasn't worth the effort (because I didn't update Emacs that often, and then XEmacs decided on hg which didn't do colocated branches at all well at that time). > If not, how do you cope with the bootstrap of a new branch, which > takes much longer than writing a string to a file? It doesn't take very long to create a new branch in a separate workspace. It takes the time it takes to unpack a source tarball if you do it sanely. # get the original, maintain it as a mirror # takes me less than 2 minutes IIRC; Linus's branch of kernel < 15 min. $ git clone ssh://scm.kernel.org/git/git.git pristine # make a new working branch the least efficient usual way # creates new .git with metadata by copying (a few kB), symlinks to # object database (probably many MB, a few files), then checks out # working tree $ git clone pristine working # switch HEAD to branch named "working" $ git checkout -b working # make a new working branch very efficiently, but somewhat fragile # shares the object database $ export GIT_OBJECT_DIRECTORY=`pwd`/pristine/.git/objects $ mkdir yowsa $ cd yowsa # assume we want to start this branch from "master" (git-ese for "trunk") $ git checkout -b yowsa master I just don't hesitate to do these operations in git or hg. I hesitate to even think about them in bzr or darcs. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 6:52 ` Stephen J. Turnbull @ 2010-08-22 7:56 ` Eli Zaretskii 2010-08-22 8:28 ` Stephen J. Turnbull 2010-08-22 8:57 ` Leo 0 siblings, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-22 7:56 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: sdl.web, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Cc: Leo <sdl.web@gmail.com>, > emacs-devel@gnu.org > Date: Sun, 22 Aug 2010 15:52:44 +0900 > > > If not, how do you cope with the bootstrap of a new branch, which > > takes much longer than writing a string to a file? > > It doesn't take very long to create a new branch in a separate > workspace. It takes the time it takes to unpack a source tarball if > you do it sanely. I was talking about bootstrapping, not about branch creation. > I just don't hesitate to do these operations in git or hg. I hesitate > to even think about them in bzr or darcs. I just tried to make a local branch out of the Emacs trunk mirror. It took 22 seconds on x86_64 GNU/Linux. Probably not as fast as git, but fast enough to be a non-issue. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 7:56 ` Eli Zaretskii @ 2010-08-22 8:28 ` Stephen J. Turnbull 2010-08-22 8:57 ` Leo 1 sibling, 0 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 8:28 UTC (permalink / raw) To: Eli Zaretskii; +Cc: sdl.web, emacs-devel Eli Zaretskii writes: > > From: "Stephen J. Turnbull" <stephen@xemacs.org> > > Cc: Leo <sdl.web@gmail.com>, > > emacs-devel@gnu.org > > Date: Sun, 22 Aug 2010 15:52:44 +0900 > > > > > If not, how do you cope with the bootstrap of a new branch, > > > which takes much longer than writing a string to a file? > > It doesn't take very long to create a new branch in a separate > > workspace. It takes the time it takes to unpack a source tarball > > if you do it sanely. > > I was talking about bootstrapping, not about branch creation. Oh, you mean "make bootstrap"? The answer is (a) don't do it very often (mostly use colocated branches, even for typos vs. feature branches), (b) plan well enough that I start the "git clone x y; cd y; make bootstrap; make check" process before starting something else that takes 20 minutes or so, and (c) work on XEmacs, where 80% of the Lisp is not in the main tree (most especially not calc or Gnus!) so a bootstrap and test can be accomplished in less than 20 minutes even on a 5-year-old iBook G4. > I just tried to make a local branch out of the Emacs trunk mirror. > It took 22 seconds on x86_64 GNU/Linux. Probably not as fast as > git, but fast enough to be a non-issue. That's much better than it used to be, and as you say a non-issue. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 7:56 ` Eli Zaretskii 2010-08-22 8:28 ` Stephen J. Turnbull @ 2010-08-22 8:57 ` Leo 2010-08-22 15:11 ` Eli Zaretskii 1 sibling, 1 reply; 198+ messages in thread From: Leo @ 2010-08-22 8:57 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Stephen J. Turnbull, emacs-devel On 2010-08-22 08:56 +0100, Eli Zaretskii wrote: >> It doesn't take very long to create a new branch in a separate >> workspace. It takes the time it takes to unpack a source tarball if >> you do it sanely. > > I was talking about bootstrapping, not about branch creation. Sorry I might have missed the point since I didn't follow through the discussion. Only got interested for 'git'. Are you talking about the overhead of branch creation? I have no idea what bootstrapping means in this context. Leo ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 8:57 ` Leo @ 2010-08-22 15:11 ` Eli Zaretskii 0 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-22 15:11 UTC (permalink / raw) To: Leo; +Cc: stephen, emacs-devel > From: Leo <sdl.web@gmail.com> > Cc: "Stephen J. Turnbull" <stephen@xemacs.org>, emacs-devel@gnu.org > Date: Sun, 22 Aug 2010 09:57:54 +0100 > > On 2010-08-22 08:56 +0100, Eli Zaretskii wrote: > >> It doesn't take very long to create a new branch in a separate > >> workspace. It takes the time it takes to unpack a source tarball if > >> you do it sanely. > > > > I was talking about bootstrapping, not about branch creation. > > Sorry I might have missed the point since I didn't follow through the > discussion. Only got interested for 'git'. Are you talking about the > overhead of branch creation? I have no idea what bootstrapping means in > this context. It means "make bnootstrap" that you need to run in each fresh work tree before it is usable. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 18:59 ` Stephen J. Turnbull 2010-08-21 19:50 ` Leo @ 2010-08-21 19:56 ` Eli Zaretskii 2010-08-21 21:51 ` Uday S Reddy 2010-08-22 7:36 ` Stephen J. Turnbull 2010-08-22 11:13 ` Jan Djärv 2 siblings, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 19:56 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: u.s.reddy, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Cc: Uday S Reddy <u.s.reddy@cs.bham.ac.uk>, > emacs-devel@gnu.org > Date: Sun, 22 Aug 2010 03:59:10 +0900 > > > For the first kind, it is IMO not very good to have the changes > > uncommitted upstream for prolonged periods of time, > > What's your definition of "prolonged"? Never thought about quantifying that. It seems like a moot point anyway, since there's a request not to lump unrelated changes in the same commit. (What would you write as a commit message for such a commit, anyway?) So I normally commit a change as soon as it's ready and tested, and if that's in a bound branch, it goes upstream. In practice, this tends to happen every hour or two, when the changes are quick and simple (for the other kind I do it in a separate branch). I could use "ci --local", but that would cause my changes appear on a branch when I finally commit upstream, and require the -n0 switch to "bzr log", so I try to avoid that. > I'm thinking in terms of > simply committing all changes locally until the end of the work > session, then doing the merge to mirror and push to upstream in a > batch at the end of the session. That'd be against the "not lumping together unrelated changes" request. Maybe I interpret it too strictly, but it will take Stefan's or Chong's word to make me change this. > How frequently do you commit? Very frequently, see above. > How finely do you divide changesets? Each changeset deals with a separate feature or bug-fix. That is how I understand the rules. > I will often make 5 to 10 commits in a session when I'm working on > minor bugs. Same here, although it's more close to 5 than to 10. > I really would not like it if I had to wait even one minute for a > commit of a typo fix. Well, you cannot make a changeset of a typo fix with anything else, unless it's another typo. The problem is that one rarely finds many typos in one go, except by luck. So yes, I need to wait before the next commit. I do other things, like reading mail or work on some other problem in the meantime. > > > With bound branches, your branch is locked up until the commit > > > goes through. You can't do anything while you have uncommitted > > > changes in your source. > > > Why would you say that? That's not true. Nothing prevents me from > > editing while "bzr ci" churns away. The system is not locked, only > > (some) bzr operations will fail. But most of the development is > > not about bzr ops, its about using the editor, the compiler, and > > other development tools, none of which are locked up when "bzr ci" > > runs. > > No, but if you do a typo fix, commit, then find another typo, 50 > minutes (according to the recent report) is a very long time to > wait.... Well, 50 minutes _is_ long. It's more like 3 to 5 here, which is also long, but barely endurable. > I imagine it would also be a bad idea to continue to work on > any of the files currently being committed, as if the commit fails you > need to disentangle the changes by hand. Right, you need to refrain from saving. But if I have a long series of changes to the same files, it generally means they belong to some larger feature, so I should do it in a local branch anyway. > The recommended workflow (at least as Karl and I wrote it) assumed > that "one-commit changes" would be performed in a separate branch, > and merged into the mirror (bound branch) in batches. This would again fly in the face of the "don't lump together..." request, AFAIU. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 19:56 ` Eli Zaretskii @ 2010-08-21 21:51 ` Uday S Reddy 2010-08-21 22:38 ` Stefan Monnier 2010-08-22 7:36 ` Stephen J. Turnbull 1 sibling, 1 reply; 198+ messages in thread From: Uday S Reddy @ 2010-08-21 21:51 UTC (permalink / raw) To: emacs-devel On 8/21/2010 8:56 PM, Eli Zaretskii wrote: >> I'm thinking in terms of >> simply committing all changes locally until the end of the work >> session, then doing the merge to mirror and push to upstream in a >> batch at the end of the session. > > That'd be against the "not lumping together unrelated changes" > request. Maybe I interpret it too strictly, but it will take Stefan's > or Chong's word to make me change this. If you use an unbound branch with commit-rebase-push cycle, then commits won't be lumped together. They will appear as independent commits in the central repo. Lumping happens if you use bound branches and try to do local commits. >> The recommended workflow (at least as Karl and I wrote it) assumed >> that "one-commit changes" would be performed in a separate branch, >> and merged into the mirror (bound branch) in batches. > > This would again fly in the face of the "don't lump together..." > request, AFAIU. Exactly. There is no upside to bound branches. You could try the rebase-based workflow that Stephen outlined in his message. That won't lump the commits together. Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 21:51 ` Uday S Reddy @ 2010-08-21 22:38 ` Stefan Monnier 2010-08-22 9:03 ` Uday S Reddy 0 siblings, 1 reply; 198+ messages in thread From: Stefan Monnier @ 2010-08-21 22:38 UTC (permalink / raw) To: Uday S Reddy; +Cc: emacs-devel > You could try the rebase-based workflow that Stephen outlined in his > message. That won't lump the commits together. The problem with it, is that I've found Bzr's rebase to be unreliable. Stefan ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 22:38 ` Stefan Monnier @ 2010-08-22 9:03 ` Uday S Reddy 2010-08-22 9:36 ` Teemu Likonen ` (3 more replies) 0 siblings, 4 replies; 198+ messages in thread From: Uday S Reddy @ 2010-08-22 9:03 UTC (permalink / raw) To: Stefan Monnier; +Cc: Uday S Reddy, emacs-devel Stefan Monnier writes: > The problem with it, is that I've found Bzr's rebase to be unreliable. Well, what can I say? A "distributed" VCS without rebase is an oxymoron. But there you have it. If Bazaar is a "gnu project", can FSF lean on them to produce a proper integrated rebase? Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 9:03 ` Uday S Reddy @ 2010-08-22 9:36 ` Teemu Likonen 2010-08-22 9:44 ` Eli Zaretskii ` (2 subsequent siblings) 3 siblings, 0 replies; 198+ messages in thread From: Teemu Likonen @ 2010-08-22 9:36 UTC (permalink / raw) To: Uday S. Reddy; +Cc: Stefan Monnier, emacs-devel * 2010-08-22 10:03 (+0100), Uday S. Reddy wrote: > If Bazaar is a "gnu project", can FSF lean on them to produce a proper > integrated rebase? Bazaar is a GNU project but more strongly and in practice it's a Canonical Ltd. project with a couple of paid developers (and few others). Obviously it's free software (as in the GPL v2) so anyone who cares about Bazaar can work on improving it. For code contribution there is some kind of policy for assigning copyrights to Canonical Ltd. but I don't know the details. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 9:03 ` Uday S Reddy 2010-08-22 9:36 ` Teemu Likonen @ 2010-08-22 9:44 ` Eli Zaretskii 2010-08-22 11:25 ` Stephen J. Turnbull 2010-08-23 4:24 ` Richard Stallman 3 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-22 9:44 UTC (permalink / raw) To: Uday S Reddy; +Cc: monnier, emacs-devel > Date: Sun, 22 Aug 2010 10:03:17 +0100 > From: Uday S Reddy <u.s.reddy@cs.bham.ac.uk> > Cc: Uday S Reddy <u.s.reddy@cs.bham.ac.uk>, emacs-devel@gnu.org > > If Bazaar is a "gnu project", can FSF lean on them to produce a > proper integrated rebase? They could try. However, several of the Bazaar developers think that rebase is a "bad thing", you can find it in the archives. So... ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 9:03 ` Uday S Reddy 2010-08-22 9:36 ` Teemu Likonen 2010-08-22 9:44 ` Eli Zaretskii @ 2010-08-22 11:25 ` Stephen J. Turnbull 2010-08-23 4:24 ` Richard Stallman 2010-08-23 4:24 ` Richard Stallman 3 siblings, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 11:25 UTC (permalink / raw) To: Uday S Reddy; +Cc: Stefan Monnier, emacs-devel Uday S Reddy writes: > If Bazaar is a "gnu project", can FSF lean on them to produce a > proper integrated rebase? Unlikely. The FSF won't even "lean" on Savannah to properly support the "official" GNU VCS. I believe that RMS has suggested that if this is "really" a problem for (some) Emacs developers, then the (affected) Emacs developers might want to contribute actively to the Bazaar project. My impression is that the active Bazaar developers are much less opposed to a proper rebase than they once were, but Bazaar itself doesn't need it because of their pqm-based workflow, and the Bazaar developers most interested in this feature are concentrating on other work (ie, they're not that interested). So I think a third-party contribution would receive proper review and some mentoring (mostly focused on winkling the patch through the Bazaar contribution process, but some technical help as well). That's probably the best way. Caveat: you probably won't get "integrated" rebase, but having a robust plugin should be good enough (and fits better with the Bazaar philosophy, both about VCS, and about good development process). ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 11:25 ` Stephen J. Turnbull @ 2010-08-23 4:24 ` Richard Stallman 2010-08-23 4:54 ` Eli Zaretskii 2010-08-23 9:55 ` Stephen J. Turnbull 0 siblings, 2 replies; 198+ messages in thread From: Richard Stallman @ 2010-08-23 4:24 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: u.s.reddy, monnier, emacs-devel Unlikely. The FSF won't even "lean" on Savannah to properly support the "official" GNU VCS. You're quite mistaken. It is not a matter of will, or "leaning". Savannah is run by few volunteers. It needs more help. I asked them two weeks ago to support the bzr protocol. I got a response, which somehow I failed to see then. I just saw it now. Two people said they would work on this. So I wrote to them. Would anyone here like to help work on Savannah? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 4:24 ` Richard Stallman @ 2010-08-23 4:54 ` Eli Zaretskii 2010-08-23 7:52 ` Glenn Morris 2010-08-24 4:32 ` Richard Stallman 2010-08-23 9:55 ` Stephen J. Turnbull 1 sibling, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-23 4:54 UTC (permalink / raw) To: rms; +Cc: u.s.reddy, stephen, monnier, emacs-devel > From: Richard Stallman <rms@gnu.org> > Date: Mon, 23 Aug 2010 00:24:53 -0400 > Cc: u.s.reddy@cs.bham.ac.uk, monnier@iro.umontreal.ca, emacs-devel@gnu.org > Reply-To: rms@gnu.org > > I asked them two weeks ago to support the bzr protocol. > I got a response, which somehow I failed to see then. > I just saw it now. Two people said they would work on this. > So I wrote to them. > > Would anyone here like to help work on Savannah? What kind of help is needed? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 4:54 ` Eli Zaretskii @ 2010-08-23 7:52 ` Glenn Morris 2010-08-23 13:55 ` Eli Zaretskii 2010-08-24 4:32 ` Richard Stallman 1 sibling, 1 reply; 198+ messages in thread From: Glenn Morris @ 2010-08-23 7:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: u.s.reddy, stephen, emacs-devel, rms, monnier Eli Zaretskii wrote: >> Would anyone here like to help work on Savannah? > > What kind of help is needed? If you're talking about Bazaar specifically, the Savannah thread is instructive, IMO. Eg: http://lists.gnu.org/archive/html/savannah-hackers-public/2010-06/msg00011.html ...the inital setup, [is] the easy part - what we're looking for here is somebody willing to _maintain_ the service, including handling user requests. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 7:52 ` Glenn Morris @ 2010-08-23 13:55 ` Eli Zaretskii 2010-08-24 4:32 ` Richard Stallman 2010-08-24 13:30 ` Karl Fogel 0 siblings, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-23 13:55 UTC (permalink / raw) To: Glenn Morris; +Cc: rms, emacs-devel > Cc: rms@gnu.org, u.s.reddy@cs.bham.ac.uk, stephen@xemacs.org, > monnier@iro.umontreal.ca, emacs-devel@gnu.org > From: Glenn Morris <rgm@gnu.org> > Date: Mon, 23 Aug 2010 03:52:57 -0400 > > Eli Zaretskii wrote: > > >> Would anyone here like to help work on Savannah? > > > > What kind of help is needed? > > If you're talking about Bazaar specifically, the Savannah thread is > instructive, IMO. Eg: > > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-06/msg00011.html > > ...the inital setup, [is] the easy part - what we're looking for > here is somebody willing to _maintain_ the service, including > handling user requests. Thanks. However, what exactly constitute the maintenance part seems not to be explained anywhere. The only thing I found was a list of task for the initial setup. Maybe I just missed it: after all, it's hard to read a thread that has been dragging on for 2 months. AFAIU, they are currently looking for volunteers to make the initial setup happen. In particular, Karl was near the end of doing that when he resigned. Again, I'm not sure I understood it all. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 13:55 ` Eli Zaretskii @ 2010-08-24 4:32 ` Richard Stallman 2010-08-24 13:30 ` Karl Fogel 1 sibling, 0 replies; 198+ messages in thread From: Richard Stallman @ 2010-08-24 4:32 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel AFAIU, they are currently looking for volunteers to make the initial setup happen. In particular, Karl was near the end of doing that when he resigned. Again, I'm not sure I understood it all. If it isn't clear what they need, how about writing to savannah-hackers and asking for whatever information you would like? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 13:55 ` Eli Zaretskii 2010-08-24 4:32 ` Richard Stallman @ 2010-08-24 13:30 ` Karl Fogel 1 sibling, 0 replies; 198+ messages in thread From: Karl Fogel @ 2010-08-24 13:30 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rms, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >AFAIU, they are currently looking for volunteers to make the initial >setup happen. In particular, Karl was near the end of doing that when >he resigned. Again, I'm not sure I understood it all. It wasn't at all clear to me whether I was near the end of the bzr+ssh setup or not -- that's one of the reasons I had to stop. I believe this post, and the thread in which it is embedded, contains all the information I could pass on to someone else picking this up: http://lists.gnu.org/archive/html/savannah-hackers-public/2010-05/msg00024.html The start of the thread is here, and contains an rough overview of the plan: http://lists.gnu.org/archive/html/savannah-hackers-public/2010-05/msg00001.html -Karl ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 4:54 ` Eli Zaretskii 2010-08-23 7:52 ` Glenn Morris @ 2010-08-24 4:32 ` Richard Stallman 1 sibling, 0 replies; 198+ messages in thread From: Richard Stallman @ 2010-08-24 4:32 UTC (permalink / raw) To: Eli Zaretskii; +Cc: u.s.reddy, stephen, monnier, emacs-devel > Would anyone here like to help work on Savannah? What kind of help is needed? The only specific help I know is needed is this job, making bzr+ssh work. However, I am sure a lot of other things are needed. savannah-hackers@gnu.org could tell you what. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 4:24 ` Richard Stallman 2010-08-23 4:54 ` Eli Zaretskii @ 2010-08-23 9:55 ` Stephen J. Turnbull 1 sibling, 0 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-23 9:55 UTC (permalink / raw) To: rms; +Cc: u.s.reddy, monnier, emacs-devel Richard Stallman writes: > Unlikely. The FSF won't even "lean" on Savannah to properly > support the "official" GNU VCS. > > You're quite mistaken. It is not a matter of will, or "leaning". I don't care what you call it. I just think the Emacs project deserves the benefit of whatever influence it was that caused Emacs to choose a VCS ill-suited to its needs, against the advice of the majority of those well-informed about VCS, and against the strong preferences of most Emacs developers with substantial experience with distributed VCS. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 9:03 ` Uday S Reddy ` (2 preceding siblings ...) 2010-08-22 11:25 ` Stephen J. Turnbull @ 2010-08-23 4:24 ` Richard Stallman 2010-08-23 5:06 ` Eli Zaretskii 2010-08-23 7:58 ` Uday S Reddy 3 siblings, 2 replies; 198+ messages in thread From: Richard Stallman @ 2010-08-23 4:24 UTC (permalink / raw) To: Uday S Reddy; +Cc: u.s.reddy, monnier, emacs-devel If Bazaar is a "gnu project", can FSF lean on them to produce a proper integrated rebase? I can try -- but first I need a clear and self-contained description of the problem. Is the problem solely one of occasional unpredictable failures? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 4:24 ` Richard Stallman @ 2010-08-23 5:06 ` Eli Zaretskii 2010-08-23 7:58 ` Uday S Reddy 1 sibling, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-23 5:06 UTC (permalink / raw) To: rms; +Cc: emacs-devel > From: Richard Stallman <rms@gnu.org> > Date: Mon, 23 Aug 2010 00:24:49 -0400 > Cc: u.s.reddy@cs.bham.ac.uk, monnier@iro.umontreal.ca, emacs-devel@gnu.org > Reply-To: rms@gnu.org > > If Bazaar is a "gnu project", can FSF lean on them to produce a > proper integrated rebase? > > I can try -- but first I need a clear and self-contained description > of the problem. Is the problem solely one of occasional unpredictable > failures? No. The problem is that the SFTP protocol we use to access the repository on Savannah needs a very high network throughput to be reasonably fast. When I work on fencepost.gnu.org (a rare situation these days), it takes between 5 and 30 seconds to either update the tree from the master repository or commit a set of changes, which is reasonably fast. But when I'm doing that from home, where I have a 3.5Mb link, it takes 3 to 5 _minutes_, which is terribly slow for such a fast link. The occasional failures due to locks are on top of that; coupled with the generally very slow operation, it makes the situation just barely bearable. Others had even worse experiences. For example, Jason reported that a commit of a few lines worth of changes took around 30 minutes. We are told that switching to the bzr+ssh protocol should make things much better. So making this switch is the highest priority now, I think. If that is not good enough, either, we could take it up with the Bazaar maintainers, but as long as we use SFTP, they continue to claim that the protocol is to blame for the slow operation. See the on-going discussion re: "Setting up bzr+ssh on Savannah" on savannah-hackers-public mailing list for similar problems experienced by other GNU projects that use bzr. Some of the package maintainers recently threatened in that discussion to take their repositories elsewhere or switch to some other VCS, because bzr support on Savannah seems to be abysmally inadequate. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 4:24 ` Richard Stallman 2010-08-23 5:06 ` Eli Zaretskii @ 2010-08-23 7:58 ` Uday S Reddy 2010-08-23 10:31 ` Stephen J. Turnbull 2010-08-25 13:03 ` Richard Stallman 1 sibling, 2 replies; 198+ messages in thread From: Uday S Reddy @ 2010-08-23 7:58 UTC (permalink / raw) To: rms; +Cc: Uday S Reddy, monnier, emacs-devel Richard Stallman writes: > I can try -- but first I need a clear and self-contained description > of the problem. Is the problem solely one of occasional unpredictable > failures? Well, first of all, Bazaar itself does not have rebase. Somebody added a plug-in and this has been distributed with Bazaar. My version of Bazaar (2.1.0) came bundled with rebase 0.5.5. The version number below 1 doesn't inspire much confidence. And, it has been reported that it silently drops merges in the branch that is being rebased. A really serious bug, if you ask me. I don't know what other bugs might be lurking. Other people that have tried it can perhaps share their experience. There are reports that the Bazaar team doesn't regard rebase as a good technique at all. So, it is unlikely that they will provide any better support for it. On the other hand, distributed maintenance with a clean management of history necessarily involves rebase. If 10 people work on bug fixes independently, we need to be able to arrange those fixes in some linear order when the fixes come back. Bazaar's solution is to provide merge, which lumps each batch of fixes together into a subhistory without concern for any logical coherence among the changes. Such lumping is discouraged by Emacs development team, understably, because, if the lumps don't have any logical coherence, it is as if they don't exist at all. Whoever is looking through the history will have to look through every lump to find what he/she is looking for. In the absence of rebase, the Emacs developers are forced to synchronize with the mainline for each commit they want to do. This wastes time. It can also be unreliable in the long run, because developers tend to think of the synchronization steps as being more or less automatic rather than logical changes that they really are, which involve review and testing. If Bazaar is going to be the favoured VCS for all gnu projects because of its membership in the gnu family, then it has to think about what the rest of gnu needs. I understand that they want to provide safe solutions that novices can use, but they are also tying the hands of experienced developers from using the best possible solutions. It would be best if they provide rebase and provide sufficient warning, and leave it to the project managers to use them wisely. Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 7:58 ` Uday S Reddy @ 2010-08-23 10:31 ` Stephen J. Turnbull 2010-08-23 12:41 ` Uday S Reddy 2010-08-25 13:03 ` Richard Stallman 1 sibling, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-23 10:31 UTC (permalink / raw) To: Uday S Reddy; +Cc: emacs-devel, rms, monnier Uday S Reddy writes: > On the other hand, distributed maintenance with a clean management > of history necessarily involves rebase. This is not true in general. In particular, the workflow suggested in BzrForEmacsDevs can produce a "clean history"[1] without rebase, although it may require remerging branches before pushing because of the race condition. Other alternatives include the pull workflow (ie, synchronization by the maintainers -- you can quibble about whether that's "really distributed", if you like, and I sympathize, but it is an option for a project), and an automated patch queue as used by the Bazaar project itself. > Bazaar's solution is to provide merge, which lumps each batch of > fixes together into a subhistory without concern for any logical > coherence among the changes. That is not a problem of merge. All VCSes provide merge. It is a problem of the workflow and a matter of taste. Specifically, whether you care if even single commits (off mainline) are "covered" by a merge commit (on mainline). The Bazaar developers consider this a natural consequence of distributed development, and have adapted the log command to normally display only the mainline. (git and Mercurial have options to do this, or to display only merge commits, which has a similar effect.) There remains a small problem of coming up with an appropriate log message for the merge commit, but in the specific case of a single commit, you just copy the commit message into the merge log message. Some people consider such a history unsightly, and strongly prefer to rebase. But this is a matter of taste. > In the absence of rebase, the Emacs developers are forced to > synchronize with the mainline for each commit they want to do. This is only true if you insist that every commit (or every commit on mainline) in the public repo be tested. But in that case, rebase doesn't save you any synchronization compared to non-rebase. There is are at least two alternatives to rebase. The first is to use multiple workspaces, one per task, even trivial tasks. The second is to use bzr send for each logical changeset, save the bundles to disk, and then merge them one after another. If it is acceptable for the mainline to be temporarily untested, then the developer can test each commit after merging and pushing. Then of course they need to fix any problems discovered in a timely fashion. An alternative is that only the result of the last merge must pass the tests; then it's reasonable to test before pushing (although not from "make bootstrap" probably). > It would be best if they provide rebase and provide sufficient > warning, and leave it to the project managers to use them wisely. If a project is going to use rebase, git is *strongly* recommended, as it not only provides rebase, but several other features for creating "nice" histories such as filter-branch. Footnotes: [1] AIUI in Emacs practice a "clean history" means that each conceptual change, whether it is a single typo fix or integration of a new garbage collector or internal character coding, is represented by one commit on the mainline. A large feature like a new garbage collector might involve many commits on a branch, however. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 10:31 ` Stephen J. Turnbull @ 2010-08-23 12:41 ` Uday S Reddy 2010-08-24 6:31 ` Stephen J. Turnbull 0 siblings, 1 reply; 198+ messages in thread From: Uday S Reddy @ 2010-08-23 12:41 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: Uday S Reddy, emacs-devel, rms, monnier Stephen J. Turnbull writes: > This is not true in general. In particular, the workflow suggested in > BzrForEmacsDevs can produce a "clean history"[1] without rebase, > although it may require remerging branches before pushing because of > the race condition. Yes, the current workflow does achieve clean history, but at the cost of removing any gestation period for fixes that the developers might want. I am surprised that many emacs developers are ok with it, but my own experience is that a few days of testing through daily use is necessary for me to develop confidence in some of my fixes. I would feel very exposed if I can't commit fixes to my branch without publishing them at the same time. > > Bazaar's solution is to provide merge, which lumps each batch of > > fixes together into a subhistory without concern for any logical > > coherence among the changes. > > That is not a problem of merge. All VCSes provide merge. No, I don't mean to say that merge itself is a problem. But, Bazaar's recommendation to use merge *instead of* rebase is a problem. Bazaar developers do seem to understand that merges doesn't give you a clean history (at least in Bazaar's way of presenting history), but they underrate its importance. I am actually happy with Bazaar's presentation of history. A straightline history is good for doing bisection when you need to. The practice of hiding merge histories from the top-level is also nice for ignoring unnecessary detail. Moreover, I think that even normal merged branches would benefit from rebasing. Otherwise, they involve a backwards time travel for the initial commit, which is confusing during review and even worse when you have to bisect for a change later. Maybe I am one of those "users coming from central VCS tools with poor merge tracking". But I don't see the new ways being necessarily superior. Cheers, Uday PS I am trying to keep this part of the thread focused so that Richard has a coherent story to deal with. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 12:41 ` Uday S Reddy @ 2010-08-24 6:31 ` Stephen J. Turnbull 2010-08-24 12:37 ` Lluís ` (2 more replies) 0 siblings, 3 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-24 6:31 UTC (permalink / raw) To: Uday S Reddy; +Cc: rms, monnier, emacs-devel Uday S Reddy writes: > Stephen J. Turnbull writes: > > > This is not true in general. In particular, the workflow > > suggested in BzrForEmacsDevs can produce a "clean history"[1] > > without rebase, although it may require remerging branches before > > pushing because of the race condition. > Yes, the current workflow does achieve clean history, but at the > cost of removing any gestation period for fixes that the developers > might want. Not at all. I'm not sure if Eli would do a "one-commit" patch in a separate workspace, and then merge, but he's said several times now that he uses multiple workspaces, at least for feature branches. It's certainly possible to have a "feature branch" for a one-line patch. So you put your change in a separate workspace and test it there. You merge when you're happy with it. This is nicer with rebase, I admit, but it's not impossible without it. > Bazaar developers do seem to understand that merges doesn't give > you a clean history (at least in Bazaar's way of presenting > history), but they underrate its importance. I don't understand. Especially since you say you're happy with bzr's presentation of history. > Moreover, I think that even normal merged branches would benefit > from rebasing. Otherwise, they involve a backwards time travel for > the initial commit, which is confusing during review and even worse > when you have to bisect for a change later. There are multiple schools of thought about this. Specifically, bisecting on A1 -- ... -- An / \ 0 1 \ / B1 -- ... -- Bm vs. bisecting on 0 = A1 -- ... -- An -- B1 -- ... -- Bm = 1 will indeed identify a particular Bi commit as the source of the problem. However, many developers feel that understanding that A1 and B1 were both designed in the context of commit 0 is important for understanding the evolution of A and B. This information is lost by the rebase. And in fact, it may be that the design of B is cleaner or more central to future development, so that you really want to fix A, and leave B alone. So bisecting may lead to poor selection of fixes. > But I don't see the new ways being necessarily superior. I'm not sure what you mean by "necessarily" superior. They are not globally superior; indeed, to take advantage of their features requires at least minimal investment in learning new patterns (even for bzr, which takes pains to provide commands to emulate "traditional" workflows), and taking substantial advantage normally requires change in workflows. In the projects I've seen make the change, there is almost always a division, with the most productive contributors (by patch or LOC count; of course there are other important measures of productivity) strongly in favor of more distributed practices and willing to make some investment, and less productive ones happy with the status quo, and opposing the "unnecessary" change. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 6:31 ` Stephen J. Turnbull @ 2010-08-24 12:37 ` Lluís 2010-08-24 13:05 ` Lluís ` (2 more replies) 2010-08-24 14:05 ` Uday S Reddy 2010-08-24 16:48 ` Eli Zaretskii 2 siblings, 3 replies; 198+ messages in thread From: Lluís @ 2010-08-24 12:37 UTC (permalink / raw) To: emacs-devel Stephen J Turnbull writes: > Uday S Reddy writes: >> Stephen J. Turnbull writes: >> >> > This is not true in general. In particular, the workflow >> > suggested in BzrForEmacsDevs can produce a "clean history"[1] >> > without rebase, although it may require remerging branches before >> > pushing because of the race condition. >> Yes, the current workflow does achieve clean history, but at the >> cost of removing any gestation period for fixes that the developers >> might want. > Not at all. I'm not sure if Eli would do a "one-commit" patch in a > separate workspace, and then merge, but he's said several times now > that he uses multiple workspaces, at least for feature branches. It's > certainly possible to have a "feature branch" for a one-line patch. > So you put your change in a separate workspace and test it there. You > merge when you're happy with it. This is nicer with rebase, I admit, > but it's not impossible without it. Just to make sure I understand it. Suppose I'm working on a branch with a fairly large set of changes and it has been merged back to trunk. After a while a bug is found on my code, which was not thoroughly tested, or a new relatively minor functionality is added related to the code on my branch. Should this be committed on my branch and then followed with a merge to trunk? Or should this live in a completely new branch that will be merged back to trunk once it's well tested? Now that I think of it, I think I start to see the reason for nested history and the suggestion of not using rebase. Even for the smallest bug fix or feature addition, a full branch should be created, and every change should be thoroughly tested in there. Then, trunk would be composed of just merge messages like "add subsystem Y", "add feature X to subsystem Y", "fix bug N on Y". This would produce a log in trunk that would very closely resemble the contents of a NEWS file, but at the expense of a strict branch/test/merge discipline, which is not bad per-se. Lluis -- "And it's much the same thing with knowledge, for whenever you learn something new, the whole world becomes that much richer." -- The Princess of Pure Reason, as told by Norton Juster in The Phantom Tollbooth ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 12:37 ` Lluís @ 2010-08-24 13:05 ` Lluís 2010-08-24 13:25 ` Óscar Fuentes 2010-08-24 14:18 ` Stephen J. Turnbull 2010-08-24 14:10 ` Stephen J. Turnbull 2010-08-24 16:42 ` Uday S Reddy 2 siblings, 2 replies; 198+ messages in thread From: Lluís @ 2010-08-24 13:05 UTC (permalink / raw) To: emacs-devel Lluís writes: > Just to make sure I understand it. Suppose I'm working on a branch with a fairly > large set of changes and it has been merged back to trunk. After a while a bug > is found on my code, which was not thoroughly tested, or a new relatively minor > functionality is added related to the code on my branch. Should this be > committed on my branch and then followed with a merge to trunk? Or should this > live in a completely new branch that will be merged back to trunk once it's well > tested? And now that I think of it. Suppose the case (like emacs) of having a main development branch where new features and bug fixes as merged, and branches for tagging minor releases as bugs are fixed on each major version (i.e., emacs-23). If a bug is fixed on the release branch (emacs-23) using branch merges, so that the history of emacs-23 will read "fix bug N", how can the same history clarity be maintained in trunk? I mean, both the emacs-23 branch and trunk would like to benefit from fixing those bugs, but if the release branch is merged into trunk, the nice messages from emacs-23 are lost once merged into trunk, right? And merging the new feature/fix branch into both emacs-23 and trunk would provide the desired history structure outcome, but this is kind of troublesome as the merge operation must be performed twice... I imagine this is exactly the place where rebase makes sense (merge new branch into emacs-23, then rebase emacs-23 into trunk), but this should in fact be an operation that is performed only by a small set of developers. Am I missing something? Or is this precisely the workflow emacs is supposed to use? Lluis -- "And it's much the same thing with knowledge, for whenever you learn something new, the whole world becomes that much richer." -- The Princess of Pure Reason, as told by Norton Juster in The Phantom Tollbooth ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 13:05 ` Lluís @ 2010-08-24 13:25 ` Óscar Fuentes 2010-08-24 14:18 ` Stephen J. Turnbull 1 sibling, 0 replies; 198+ messages in thread From: Óscar Fuentes @ 2010-08-24 13:25 UTC (permalink / raw) To: emacs-devel Lluís <xscript@gmx.net> writes: [snip] > If a bug is fixed on the release branch (emacs-23) using branch merges, so that > the history of emacs-23 will read "fix bug N", how can the same history clarity > be maintained in trunk? I mean, both the emacs-23 branch and trunk would like to > benefit from fixing those bugs, but if the release branch is merged into trunk, > the nice messages from emacs-23 are lost once merged into trunk, > right? To see them you'll need the -n0 switch, yes. This is an important case that breaks the "niceness" of having a privileged arm on the DAG. > And merging the new feature/fix branch into both emacs-23 and trunk > would provide the desired history structure outcome, but this is kind > of troublesome as the merge operation must be performed twice... I > imagine this is exactly the place where rebase makes sense (merge new > branch into emacs-23, then rebase emacs-23 into trunk), but this > should in fact be an operation that is performed only by a small set > of developers. Rebasing has the undesirable effect of changing the identity of the commits, so it is no longer possible to easily test the presence of one change on several branches ("is commit 388743FA2 present in this branch?") This is another reason for never rebasing commits that were released to the public. So no, I don't think that `rebase' would be the right tool for keeping a nice bzr log on the emacs-23/trunk exchange of commits. [snip] ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 13:05 ` Lluís 2010-08-24 13:25 ` Óscar Fuentes @ 2010-08-24 14:18 ` Stephen J. Turnbull 2010-08-24 15:25 ` Lluís 1 sibling, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-24 14:18 UTC (permalink / raw) To: Lluís; +Cc: emacs-devel Lluís writes: > If a bug is fixed on the release branch (emacs-23) using branch > merges, so that the history of emacs-23 will read "fix bug N", how > can the same history clarity be maintained in trunk? See my previous reply for a brief discussion. > I mean, both the emacs-23 branch and trunk would like to benefit > from fixing those bugs, but if the release branch is merged into > trunk, No, you essentially never want to do that. The trunk will diverge quickly from the release branch. It has better (but risky) fixes for some bugs, new features requiring changed APIs, etc. However, some changes to the release branch will depend on the old code, and trying to merge that into the trunk will create One Big Mess. (This is what "merge branches" *means*: *all* of the code needs to be merged, not just the "good" code you want.) > the nice messages from emacs-23 are lost once merged into > trunk, right? I don't understand what you mean by "losing the messages". The messages are part of the commit object, and come with it in a merge. > And merging the new feature/fix branch into both emacs-23 and trunk > would provide the desired history structure outcome, but this is > kind of troublesome as the merge operation must be performed > twice... This is true, anyway. The nature of branches is that they diverge, and the changes that are appropriate diverge, too. > I imagine this is exactly the place where rebase makes sense (merge > new branch into emacs-23, then rebase emacs-23 into trunk), Actually, most projects do this in the opposite direction. Features and fixes go into trunk, first, typically at developer discretion. Then the release manager picks ("cherry-picks") the bug fixes appropriate from the release branch. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 14:18 ` Stephen J. Turnbull @ 2010-08-24 15:25 ` Lluís 0 siblings, 0 replies; 198+ messages in thread From: Lluís @ 2010-08-24 15:25 UTC (permalink / raw) To: emacs-devel; +Cc: Stephen J. Turnbull Stephen J Turnbull writes: > Lluís writes: >> If a bug is fixed on the release branch (emacs-23) using branch >> merges, so that the history of emacs-23 will read "fix bug N", how >> can the same history clarity be maintained in trunk? > See my previous reply for a brief discussion. >> I mean, both the emacs-23 branch and trunk would like to benefit >> from fixing those bugs, but if the release branch is merged into >> trunk, > No, you essentially never want to do that. The trunk will diverge > quickly from the release branch. It has better (but risky) fixes for > some bugs, new features requiring changed APIs, etc. However, some > changes to the release branch will depend on the old code, and trying > to merge that into the trunk will create One Big Mess. (This is what > "merge branches" *means*: *all* of the code needs to be merged, not > just the "good" code you want.) Ah, you're right. >> the nice messages from emacs-23 are lost once merged into >> trunk, right? > I don't understand what you mean by "losing the messages". The > messages are part of the commit object, and come with it in a merge. I meant that, for example, you merge in a branch for a bugfix into the stable branch. The log in stable will say something like "fix bug N", although this might be composed of various commits. Then, you merge stable into trunk, but merging will no longer show "fix bug N" on the leftmost part of the history in bazaar, so any changes in stable from last merge into trunk will all be "hidden" under a single "merge from stable", instead of having now a history on trunk that shows what exactly has modified in stable and merged into trunk. Of course, this will not happen with a merge from release into trunk (for the reasons you explained), but still can happen for any other set of 3 or more branches; as long as the branch "relation chain" is shorter than 3 levels, everything's OK, but that's essentially a flat model where every feature/fix is on its own branch (which is never a release nor a trunk branch) and those feature/fix branches must be merged multiple times, one into each release/trunk branch where you want to see that change. This approach can produce exceptionally nice history logs (in the sense that bzr hides history messages "inside" a merge), but it seems to me that at the expense of a higher managing effort. Of course that effor might already be there on any other approach/workflow, it's just that this is my first encounter with DVCS. >> And merging the new feature/fix branch into both emacs-23 and trunk >> would provide the desired history structure outcome, but this is >> kind of troublesome as the merge operation must be performed >> twice... > This is true, anyway. The nature of branches is that they diverge, > and the changes that are appropriate diverge, too. Then you're in favour of the "flat" model I described above. >> I imagine this is exactly the place where rebase makes sense (merge >> new branch into emacs-23, then rebase emacs-23 into trunk), > Actually, most projects do this in the opposite direction. Features > and fixes go into trunk, first, typically at developer discretion. > Then the release manager picks ("cherry-picks") the bug fixes > appropriate from the release branch. Completely right, because of what you pointed out on your second paragraph. Lluis -- "And it's much the same thing with knowledge, for whenever you learn something new, the whole world becomes that much richer." -- The Princess of Pure Reason, as told by Norton Juster in The Phantom Tollbooth ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 12:37 ` Lluís 2010-08-24 13:05 ` Lluís @ 2010-08-24 14:10 ` Stephen J. Turnbull 2010-08-24 15:02 ` Lluís 2010-08-24 16:59 ` Eli Zaretskii 2010-08-24 16:42 ` Uday S Reddy 2 siblings, 2 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-24 14:10 UTC (permalink / raw) To: Lluís; +Cc: emacs-devel Lluís writes: > Just to make sure I understand it. Suppose I'm working on a branch > with a fairly large set of changes and it has been merged back to > trunk. After a while a bug is found on my code, which was not > thoroughly tested, or a new relatively minor functionality is added > related to the code on my branch. Should this be committed on my > branch and then followed with a merge to trunk? Or should this live > in a completely new branch that will be merged back to trunk once > it's well tested? I think it's a matter of taste. After the first merge to trunk, you have this history: 0 -- T1 -- ... -- Tn -- 1 \ / B1 -- ... -- Bm You can close the original branch, and create a new one, giving this history: 0 -- T1 -- ... -- Tn -- 1 -- ... -- Tp -- ... -- Tq -- 2 \ / \ / B1 -- ... -- Bm `---------- Fix or you can continue on your branch 0 -- T1 -- ... -- Tn -- 1 -- ... -- Tp -- ... -- Tq -- 2 \ / / B1 -- ... -- Bm -------------------------- Fix with very similar effect (bzr knows that B1 ... Bm are already in Tq, so it will apply effectively apply the patch (Bm -> Fix) to Tq). The main difference is that you could have a conflict between Fix and some patch between 1 and Tp in the "continued feature branch" case, but you would take the changed code into account in producing Fix for the "make new branch for fix" case. In the common case that nobody touches "your" code between 1 and Tq, these are 100% equivalent. The other issue is workflow. If the workflow is like Launchpad or github, where release managers pull in whole branches from contributors, it may make sense to use the "continued feature branch" approach. Then both "stable" and "devel" branches can pull from your feature branch, without polluting each other. In a workflow like Emacs's, where contributions go to trunk and release manager looks for patches to cherry-pick, the "branch per fix" approach probably makes more sense. > Now that I think of it, I think I start to see the reason for > nested history and the suggestion of not using rebase. Even for the > smallest bug fix or feature addition, a full branch should be > created, and every change should be thoroughly tested in > there. Thoroughly tested, yes, but remember, it is never possible to fully test in a feature branch (unless the feature branch is the first continuation applied to the tip of the trunk it branched from). > Then, trunk would be composed of just merge messages like "add > subsystem Y", "add feature X to subsystem Y", "fix bug N on > Y". This would produce a log in trunk that would very closely > resemble the contents of a NEWS file, but at the expense of a > strict branch/test/merge discipline, which is not bad per-se. I believe that's very much the way the Bazaar developers think of it. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 14:10 ` Stephen J. Turnbull @ 2010-08-24 15:02 ` Lluís 2010-08-24 16:59 ` Eli Zaretskii 1 sibling, 0 replies; 198+ messages in thread From: Lluís @ 2010-08-24 15:02 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: emacs-devel Stephen J Turnbull writes: > Lluís writes: >> Just to make sure I understand it. Suppose I'm working on a branch >> with a fairly large set of changes and it has been merged back to >> trunk. After a while a bug is found on my code, which was not >> thoroughly tested, or a new relatively minor functionality is added >> related to the code on my branch. Should this be committed on my >> branch and then followed with a merge to trunk? Or should this live >> in a completely new branch that will be merged back to trunk once >> it's well tested? > I think it's a matter of taste. After the first merge to trunk, you > have this history: > 0 -- T1 -- ... -- Tn -- 1 > \ / > B1 -- ... -- Bm > You can close the original branch, and create a new one, giving this > history: > 0 -- T1 -- ... -- Tn -- 1 -- ... -- Tp -- ... -- Tq -- 2 > \ / \ / > B1 -- ... -- Bm `---------- Fix > or you can continue on your branch > 0 -- T1 -- ... -- Tn -- 1 -- ... -- Tp -- ... -- Tq -- 2 > \ / / > B1 -- ... -- Bm -------------------------- Fix Which basically means your history will look like: 0 T1 ... Tn 1: merge feature B ... Tp ... Tq 2: fix bug on feature B no matter which of both approaches you take. Even more, one should not expect that a feature branch will be indefinitely available for committing new changes into it; which means that at some point in time, the branch will have disappeared (been deleted by its creator) and fixes for such feature will be merged from some other sources. That is to say that the approach of multiple branches for a single feature is more likely to happen on projects spanning an arbitrarily large amount of time. [...] > The other issue is workflow. If the workflow is like Launchpad or > github, where release managers pull in whole branches from > contributors, it may make sense to use the "continued feature branch" > approach. Then both "stable" and "devel" branches can pull from your > feature branch, without polluting each other. Which would solve my question about how the same fix in multiple branches could be shown nicely in the history, but at the expense of having to merge twice, and having to type twice the same merge message ("merge fix for bug N" or whatever) if you still want a "coherent" history log between branches. > In a workflow like Emacs's, where contributions go to trunk and > release manager looks for patches to cherry-pick, the "branch per fix" > approach probably makes more sense. Well, the only difference I see is that on the Emacs' workflow it is supposed that developers have less means to publish their own branches, so release managers cherry-pick commits from trunk instead of merging developer's branches into both trunk and stable. And I suppose the reason for such approach is to minimize the amount of work that developers require to work with bazaar instead of CVS. Lluis -- "And it's much the same thing with knowledge, for whenever you learn something new, the whole world becomes that much richer." -- The Princess of Pure Reason, as told by Norton Juster in The Phantom Tollbooth ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 14:10 ` Stephen J. Turnbull 2010-08-24 15:02 ` Lluís @ 2010-08-24 16:59 ` Eli Zaretskii 2010-08-24 21:27 ` Óscar Fuentes 1 sibling, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-24 16:59 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: xscript, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Date: Tue, 24 Aug 2010 23:10:04 +0900 > Cc: emacs-devel@gnu.org > > In a workflow like Emacs's, where contributions go to trunk and > release manager looks for patches to cherry-pick, the "branch per fix" > approach probably makes more sense. The problem is that a new branch needs to be bootstrapped, which takes time. What I do to avoid that is keep the feature branch around even after the last feature I worked on was merged into trunk and committed upstream. Then, when I need to work on another feature in a separate branch again, I make the existing branch a mirror of the then current trunk with "bzr pull --overwrite" (after "bzr status" and careful study of its output!). Voila! I now have a fresh branch that does not need a bootstrap. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 16:59 ` Eli Zaretskii @ 2010-08-24 21:27 ` Óscar Fuentes 0 siblings, 0 replies; 198+ messages in thread From: Óscar Fuentes @ 2010-08-24 21:27 UTC (permalink / raw) To: emacs-devel; +Cc: Eli Zaretskii Eli Zaretskii <eliz@gnu.org> writes: > The problem is that a new branch needs to be bootstrapped, which takes > time. What I do to avoid that is keep the feature branch around even > after the last feature I worked on was merged into trunk and committed > upstream. Then, when I need to work on another feature in a separate > branch again, I make the existing branch a mirror of the then current > trunk with "bzr pull --overwrite" (after "bzr status" and careful > study of its output!). Voila! I now have a fresh branch that does not > need a bootstrap. For this, local, --no-tree branches combined with `bzr switch' may be more convenient. That essentially emulates git's colocated branches: # create the branch where you work: bzr branch trunk work cd work, bootstrap cd .. # create a bugfix branch bzr branch --no-tree trunk bugfix#3844 cd work <hack, hack, hack> bzr commit # now you work on another bugfix: cd .. && bzr branch --no-tree bugfix#3871 && cd work bzr switch bugfix3871 <hack, hack, hack> bzr commit # go back to work on the previous bugfix: bzr switch bugfix3844 .... ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 12:37 ` Lluís 2010-08-24 13:05 ` Lluís 2010-08-24 14:10 ` Stephen J. Turnbull @ 2010-08-24 16:42 ` Uday S Reddy 2010-08-24 17:12 ` Lluís 2 siblings, 1 reply; 198+ messages in thread From: Uday S Reddy @ 2010-08-24 16:42 UTC (permalink / raw) To: emacs-devel Lluís <xscript@gmx.net> writes: > Just to make sure I understand it. Suppose I'm working on a branch > with a fairly large set of changes and it has been merged back to > trunk. After a while a bug is found on my code, which was not > thoroughly tested, or a new relatively minor functionality is added > related to the code on my branch. Should this be committed on my > branch and then followed with a merge to trunk? Or should this live > in a completely new branch that will be merged back to trunk once > it's well tested? In Bazaar, it is fine to continue adding to a branch after it has been merged once. Next time it is merged, Bazaar can figure out which revisions are new and merge them appropriately. > Now that I think of it, I think I start to see the reason for nested > history and the suggestion of not using rebase. Even for the > smallest bug fix or feature addition, a full branch should be > created, and every change should be thoroughly tested in > there. Then, trunk would be composed of just merge messages like > "add subsystem Y", "add feature X to subsystem Y", "fix bug N on > Y". This would produce a log in trunk that would very closely > resemble the contents of a NEWS file, but at the expense of a strict > branch/test/merge discipline, which is not bad per-se. There is no harm in creating task branches for individual bug fixes. But, that in itself doesn't make one virtuous. The crucial testing to be done is *after you merge it into trunk*. Testing in the task branch is not enough. Every time you do pull/update/merge, you need to test again. The workflow recommended for "Quick Fixes" in the Wiki has no logical problem, even though it avoids task branches. Its only problem is that it is slow, especially when used with an sftp server. Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 16:42 ` Uday S Reddy @ 2010-08-24 17:12 ` Lluís 2010-08-24 18:47 ` Uday S Reddy 0 siblings, 1 reply; 198+ messages in thread From: Lluís @ 2010-08-24 17:12 UTC (permalink / raw) To: emacs-devel Uday S Reddy writes: > Lluís <xscript@gmx.net> writes: >> Just to make sure I understand it. Suppose I'm working on a branch >> with a fairly large set of changes and it has been merged back to >> trunk. After a while a bug is found on my code, which was not >> thoroughly tested, or a new relatively minor functionality is added >> related to the code on my branch. Should this be committed on my >> branch and then followed with a merge to trunk? Or should this live >> in a completely new branch that will be merged back to trunk once >> it's well tested? > In Bazaar, it is fine to continue adding to a branch after it has been > merged once. Next time it is merged, Bazaar can figure out which > revisions are new and merge them appropriately. Sure, my only concern is on how the history will look like. Suppose I have commits (f1, f2, f3) implemeting some feature. These are merged into trunk as revision f. Then I fix a simple bug on the feature (ff11) and merge again as ff1. Fix another bug with multiple commits (ff21, ff22) and fix another one with a single commit (ff31). If now I merge, both fixes are merged into trunk, and supposing they are independent from each other, ideally they should appear as two different entries on the history in trunk (ff2 and ff3). >> Now that I think of it, I think I start to see the reason for nested >> history and the suggestion of not using rebase. Even for the >> smallest bug fix or feature addition, a full branch should be >> created, and every change should be thoroughly tested in >> there. Then, trunk would be composed of just merge messages like >> "add subsystem Y", "add feature X to subsystem Y", "fix bug N on >> Y". This would produce a log in trunk that would very closely >> resemble the contents of a NEWS file, but at the expense of a strict >> branch/test/merge discipline, which is not bad per-se. > There is no harm in creating task branches for individual bug fixes. > But, that in itself doesn't make one virtuous. The crucial testing to > be done is *after you merge it into trunk*. Testing in the task > branch is not enough. Every time you do pull/update/merge, you need > to test again. > The workflow recommended for "Quick Fixes" in the Wiki has no logical > problem, even though it avoids task branches. Its only problem is > that it is slow, especially when used with an sftp server. See above. But basically, we agree as long as you merge on each fix. Of course, this is all to, at the end, have a history in trunk that is shown as: ... f ... ff1 .... ff2 .... ff3 ... so that history quickly shows at a high level what has been changed just by looking at the "first level" of the history. Lluis -- "And it's much the same thing with knowledge, for whenever you learn something new, the whole world becomes that much richer." -- The Princess of Pure Reason, as told by Norton Juster in The Phantom Tollbooth ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 17:12 ` Lluís @ 2010-08-24 18:47 ` Uday S Reddy 0 siblings, 0 replies; 198+ messages in thread From: Uday S Reddy @ 2010-08-24 18:47 UTC (permalink / raw) To: emacs-devel Lluís <xscript@gmx.net> writes: > Sure, my only concern is on how the history will look like. Suppose > I have commits (f1, f2, f3) implemeting some feature. These are > merged into trunk as revision f. Then I fix a simple bug on the > feature (ff11) and merge again as ff1. Fix another bug with multiple > commits (ff21, ff22) and fix another one with a single commit > (ff31). If now I merge, both fixes are merged into trunk, and > supposing they are independent from each other, ideally they should > appear as two different entries on the history in trunk (ff2 and > ff3). If you want ff2 and ff3 to appear as separate merges in the history, then you merge them separately. But they can all sit in the same feature branch at your end. In my context, I often want to review the contributions that our people send in (via Bazaar branches on Launchpad). There I prefer if they do all their work of a particular feature in a single branch. Then I can just pull it into my local copy, review it and merge it in. If they make a new branch for each fix, it will add additional set-up cost for me to make a copy of their branch. I might also mention that it was in this context that I first used rebase. Since the contributions are often based on some old revision in the trunk, which is a pain to go back to, I first rebase my copy of their branch to the current state of the trunk. Then I review and test each commit, before merging it in. I think this is a great application of rebase. Not only is it safe (because rebase is done before review), it is a lot better than merge which will just plonk everything together and hope for the best! > Of course, this is all to, at the end, have a history in trunk that > is shown as: ... f ... ff1 .... ff2 .... ff3 ... > > so that history quickly shows at a high level what has been changed just by > looking at the "first level" of the history. Sounds perfect! Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 6:31 ` Stephen J. Turnbull 2010-08-24 12:37 ` Lluís @ 2010-08-24 14:05 ` Uday S Reddy 2010-08-24 15:54 ` Stephen J. Turnbull 2010-08-24 16:48 ` Eli Zaretskii 2 siblings, 1 reply; 198+ messages in thread From: Uday S Reddy @ 2010-08-24 14:05 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: Uday S Reddy, rms, monnier, emacs-devel Stephen J. Turnbull writes: > Not at all. I'm not sure if Eli would do a "one-commit" patch in a > separate workspace, and then merge, but he's said several times now > that he uses multiple workspaces, at least for feature branches. It's > certainly possible to have a "feature branch" for a one-line patch. > So you put your change in a separate workspace and test it there. You > merge when you're happy with it. This is nicer with rebase, I admit, > but it's not impossible without it. Yes, Eli himself said that he wants simplicity, and he suffers the delays of immediate push's done by the bound branch as a result of that. I think most developers here would rather not open up task branches for small fixes. I think > There are multiple schools of thought about this. Specifically, > bisecting on > > A1 -- ... -- An > / \ > 0 1 > \ / > B1 -- ... -- Bm > > vs. bisecting on > > 0 = A1 -- ... -- An -- B1 -- ... -- Bm = 1 > > will indeed identify a particular Bi commit as the source of the > problem. However, many developers feel that understanding that A1 and > B1 were both designed in the context of commit 0 is important for > understanding the evolution of A and B. Yes, I am better able to understand this view point now as a result of this debate. Note that Bazaar's presentation of the above merge is: 0 = A1 -- ... -- An .......................1 \ / \ -- B1 -- ... -- Bm -/ and I had orignally missed the idea that B1 should be thought of really as a successor to 0 = A1. So, going from An to B1 includes first a backwards time travel (An -> A1) and going from Bm to 1 includes a fast forward (A1 -> An). Bazaar's presentation makes it appear as if B1...Bm have been rebased but, in reality, they are the original commits that are just being stuck in the middle of the mainline. If one is doing a bisection to find a problem, one would do it first on the mainline, find that the fault occurs somewhere between An and 1, and then do a second bisection on B1...Bm. If one is doing this by hand, it is quite confusing in having to deal with A1 again while looking through B1...Bm. I would ask, "A1 works ok, but what is B1 adding that is breaking things?" But, oops, B1 is doing something entirely different! > This information is lost by > the rebase. And in fact, it may be that the design of B is cleaner or > more central to future development, so that you really want to fix A, > and leave B alone. So bisecting may lead to poor selection of fixes. I think the loss of information is a myth. Information will be lost only if the VCS deliberately loses it. There is no reason why the VCS can't keep track of B1...Bm in terms of patches on A1 as well as patches on An. You can then rebase it forwards and backwards as often as you need to, to get the information you want. Rethinking the issues now, it is becoming clear to me that there are two independent, but related, issues: - Storage: You want to store a history that is accurate so that you can go back to it when you want to. - Presentation: You want to produce a rebased history for review and forensic analysis because it is easier to deal with. One might want to go back to the accurate history if the rebased history doesn't work. I notice that Stefan proposed essentially this idea in the bazaar developers list, and Michael Haggerty has a more elaborate presentation of the issues here: http://softwareswirl.blogspot.com/2009/04/truce-in-merge-vs-rebase-war.html Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 14:05 ` Uday S Reddy @ 2010-08-24 15:54 ` Stephen J. Turnbull 0 siblings, 0 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-24 15:54 UTC (permalink / raw) To: Uday S Reddy; +Cc: emacs-devel, rms, monnier Uday S Reddy writes: > > This information is lost by the rebase. And in fact, it may be > > that the design of B is cleaner or more central to future > > development, so that you really want to fix A, and leave B alone. > > So bisecting may lead to poor selection of fixes. > I think the loss of information is a myth. Unfortunately, it's not. YMMV, but some people do value the information that is lost by rebasing. I suspect that most Emacs people won't care, though, and will prefer the more easily reviewed rebased branches. > Information will be lost only if the VCS deliberately loses it. > There is no reason why the VCS can't keep track of B1...Bm in terms > of patches on A1 as well as patches on An. You can then rebase it > forwards and backwards as often as you need to, to get the > information you want. You just invented "Darcs". > http://softwareswirl.blogspot.com/2009/04/truce-in-merge-vs-rebase-war.html Note that Haggerty is also basically trying to invent Darcs, but doesn't quite get there. It's also very similar to Robert Collins' loom plugin for bzr. The idea of loom is to allow flexible traversal of such complex DAGs during development so that patches can be applied to the right "thread" of the loom, then propagated "upward" to the current version automatically. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-24 6:31 ` Stephen J. Turnbull 2010-08-24 12:37 ` Lluís 2010-08-24 14:05 ` Uday S Reddy @ 2010-08-24 16:48 ` Eli Zaretskii 2 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-24 16:48 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: u.s.reddy, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Date: Tue, 24 Aug 2010 15:31:52 +0900 > Cc: rms@gnu.org, monnier@iro.umontreal.ca, emacs-devel@gnu.org > > > Yes, the current workflow does achieve clean history, but at the > > cost of removing any gestation period for fixes that the developers > > might want. > > Not at all. I'm not sure if Eli would do a "one-commit" patch in a > separate workspace, and then merge, but he's said several times now > that he uses multiple workspaces, at least for feature branches. I do use a separate branch for one-off commits, but only if they fix, or need to be tested on, the DOS port. The DOS port does not support out-of-tree build, so I need a separate branch for it (which is mots of the time kept as a mirror of trunk, with "merge --pull"). ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-23 7:58 ` Uday S Reddy 2010-08-23 10:31 ` Stephen J. Turnbull @ 2010-08-25 13:03 ` Richard Stallman 2010-08-25 13:32 ` Juanma Barranquero 2010-08-25 20:25 ` Uday S Reddy 1 sibling, 2 replies; 198+ messages in thread From: Richard Stallman @ 2010-08-25 13:03 UTC (permalink / raw) To: Uday S Reddy; +Cc: u.s.reddy, monnier, emacs-devel If Bazaar is going to be the favoured VCS for all gnu projects because of its membership in the gnu family, then it has to think about what the rest of gnu needs. I don't know enough to have an opinion about the substance of the question, but it is clear that you need to argue for this in a Bzr discussion group. Discussing it here means, in effect, asking me to convey it to them -- and using me as middleman for an issue I only barely understand is not very effective. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-25 13:03 ` Richard Stallman @ 2010-08-25 13:32 ` Juanma Barranquero 2010-08-31 21:33 ` Richard Stallman 2010-08-25 20:25 ` Uday S Reddy 1 sibling, 1 reply; 198+ messages in thread From: Juanma Barranquero @ 2010-08-25 13:32 UTC (permalink / raw) To: rms; +Cc: Uday S Reddy, monnier, emacs-devel On Wed, Aug 25, 2010 at 15:03, Richard Stallman <rms@gnu.org> wrote: > Discussing it here means, in effect, asking me to > convey it to them -- and using me as middleman for an issue I only > barely understand is not very effective. I think what Udday is trying to say (he'll correct me if I'm wrong) is that it is a bit unfortunate that you can impel a GNU project to use Bazaar, but you are unable to motivate Bazaar developers, or indeed Savannah sysadmins, to better cater to GNU projects' needs. The consequences of that asymmetry have caused a certain amount of unhapiness. Not your fault, just the outcome of politics. Juanma ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-25 13:32 ` Juanma Barranquero @ 2010-08-31 21:33 ` Richard Stallman 2010-09-01 0:30 ` Chong Yidong 0 siblings, 1 reply; 198+ messages in thread From: Richard Stallman @ 2010-08-31 21:33 UTC (permalink / raw) To: Juanma Barranquero; +Cc: u.s.reddy, monnier, emacs-devel I think what Udday is trying to say (he'll correct me if I'm wrong) is that it is a bit unfortunate that you can impel a GNU project to use Bazaar, but you are unable to motivate Bazaar developers, or indeed Savannah sysadmins, to better cater to GNU projects' needs. I agree it is unfortunate, and I keep trying. It looks like some progress is being made. If I get a clear explanation of the need for rebase in Emacs development, that ought to enable me to push the Bazaar developers more effectively. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-31 21:33 ` Richard Stallman @ 2010-09-01 0:30 ` Chong Yidong 2010-09-01 1:44 ` Bernardo Barros ` (2 more replies) 0 siblings, 3 replies; 198+ messages in thread From: Chong Yidong @ 2010-09-01 0:30 UTC (permalink / raw) To: rms; +Cc: Juanma Barranquero, emacs-devel, monnier, u.s.reddy Richard Stallman <rms@gnu.org> writes: > I think what Udday is trying to say (he'll correct me if I'm wrong) is > that it is a bit unfortunate that you can impel a GNU project to use > Bazaar, but you are unable to motivate Bazaar developers, or indeed > Savannah sysadmins, to better cater to GNU projects' needs. > > I agree it is unfortunate, and I keep trying. It looks like some > progress is being made. If I get a clear explanation of the need for > rebase in Emacs development, that ought to enable me to push the > Bazaar developers more effectively. Getting bzr+ssh working on Savannah is far more important than rebasing. Maybe you could ask the Bzr developers to get in contact with the Savannah admins, and try to work things out. In my estimation, the rebasing issue is currently not as urgent. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-01 0:30 ` Chong Yidong @ 2010-09-01 1:44 ` Bernardo Barros 2010-09-01 2:36 ` Miles Bader 2010-09-01 3:07 ` Eli Zaretskii 2010-09-01 18:17 ` Richard Stallman 2 siblings, 1 reply; 198+ messages in thread From: Bernardo Barros @ 2010-09-01 1:44 UTC (permalink / raw) To: Chong Yidong; +Cc: Juanma Barranquero, u.s.reddy, rms, monnier, emacs-devel the connection with http is slower with bazaar/git, right? (sorry, i did not follow) that was the reason that caused google to choose mercurial over git. (besides it has similar svn commands and it is way simpler then git with the same functionalities) 2010/8/31 Chong Yidong <cyd@stupidchicken.com>: > Richard Stallman <rms@gnu.org> writes: > >> I think what Udday is trying to say (he'll correct me if I'm wrong) is >> that it is a bit unfortunate that you can impel a GNU project to use >> Bazaar, but you are unable to motivate Bazaar developers, or indeed >> Savannah sysadmins, to better cater to GNU projects' needs. >> >> I agree it is unfortunate, and I keep trying. It looks like some >> progress is being made. If I get a clear explanation of the need for >> rebase in Emacs development, that ought to enable me to push the >> Bazaar developers more effectively. > > Getting bzr+ssh working on Savannah is far more important than rebasing. > Maybe you could ask the Bzr developers to get in contact with the > Savannah admins, and try to work things out. > > In my estimation, the rebasing issue is currently not as urgent. > > ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-01 1:44 ` Bernardo Barros @ 2010-09-01 2:36 ` Miles Bader 0 siblings, 0 replies; 198+ messages in thread From: Miles Bader @ 2010-09-01 2:36 UTC (permalink / raw) To: emacs-devel Bernardo Barros <bernardobarros2@gmail.com> writes: > the connection with http is slower with bazaar/git, right? (sorry, i > did not follow) [git has a "fast http" protocol now that is the same speed as the native protocol, but savannah only currently supports the "slow http" protocol (plus the fast nativeprotocol).] -Miles -- Twice, adv. Once too often. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-01 0:30 ` Chong Yidong 2010-09-01 1:44 ` Bernardo Barros @ 2010-09-01 3:07 ` Eli Zaretskii 2010-09-01 6:49 ` Stefan Monnier 2010-09-01 18:17 ` Richard Stallman 2 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-09-01 3:07 UTC (permalink / raw) To: Chong Yidong; +Cc: rms, emacs-devel > From: Chong Yidong <cyd@stupidchicken.com> > Date: Tue, 31 Aug 2010 20:30:30 -0400 > Cc: Juanma Barranquero <lekktu@gmail.com>, emacs-devel@gnu.org, > monnier@iro.umontreal.ca, u.s.reddy@cs.bham.ac.uk > > Getting bzr+ssh working on Savannah is far more important than rebasing. > Maybe you could ask the Bzr developers to get in contact with the > Savannah admins, and try to work things out. > > In my estimation, the rebasing issue is currently not as urgent. 100% agreement. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-01 3:07 ` Eli Zaretskii @ 2010-09-01 6:49 ` Stefan Monnier 0 siblings, 0 replies; 198+ messages in thread From: Stefan Monnier @ 2010-09-01 6:49 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Chong Yidong, rms, emacs-devel >> Getting bzr+ssh working on Savannah is far more important than rebasing. Very much so! Stefan "who also went through a few half-hour pushes recently, for fairly trivial changes" ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-01 0:30 ` Chong Yidong 2010-09-01 1:44 ` Bernardo Barros 2010-09-01 3:07 ` Eli Zaretskii @ 2010-09-01 18:17 ` Richard Stallman 2010-09-01 19:10 ` Bastien 2 siblings, 1 reply; 198+ messages in thread From: Richard Stallman @ 2010-09-01 18:17 UTC (permalink / raw) To: Chong Yidong; +Cc: lekktu, u.s.reddy, monnier, emacs-devel Getting bzr+ssh working on Savannah is far more important than rebasing. Maybe you could ask the Bzr developers to get in contact with the Savannah admins, and try to work things out. I don't think this needs any help from the Bzr developers. What we need is more people helping Savannah. People said, a week or two ago, that they are working on this. Would you like to keep in touch with them, to track progress and remind them it's important? Meanwhile, since the people who would work on rebase are disjoint from the people who work on Savannah, we don't have a choice between them. If you want rebase, please write that article, and I can use it to push for rebase support. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-01 18:17 ` Richard Stallman @ 2010-09-01 19:10 ` Bastien 2010-09-02 5:22 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Bastien @ 2010-09-01 19:10 UTC (permalink / raw) To: rms; +Cc: lekktu, Chong Yidong, emacs-devel, monnier, u.s.reddy Richard Stallman <rms@gnu.org> writes: > I don't think this needs any help from the Bzr developers. > What we need is more people helping Savannah. I have searched on the Savannah website (both gnu.org and nongnu.org) and I was not able to find any page mentionning this need. Did I miss something? Having such a page would help a lot translating and forwarding it to potential volunteers. -- Bastien ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-01 19:10 ` Bastien @ 2010-09-02 5:22 ` Eli Zaretskii 2010-09-02 6:31 ` Bastien 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-09-02 5:22 UTC (permalink / raw) To: Bastien; +Cc: rms, emacs-devel > From: Bastien <bzg@altern.org> > Date: Wed, 01 Sep 2010 21:10:26 +0200 > Cc: lekktu@gmail.com, Chong Yidong <cyd@stupidchicken.com>, emacs-devel@gnu.org, > monnier@iro.umontreal.ca, u.s.reddy@cs.bham.ac.uk > > Richard Stallman <rms@gnu.org> writes: > > I don't think this needs any help from the Bzr developers. > > What we need is more people helping Savannah. > > I have searched on the Savannah website (both gnu.org and nongnu.org) > and I was not able to find any page mentionning this need. See the thread starting here: http://lists.gnu.org/archive/html/savannah-hackers-public/2010-05/msg00001.html This is a very long thread, it was still dragging in August, so you should look in the archives for all the months since May. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-02 5:22 ` Eli Zaretskii @ 2010-09-02 6:31 ` Bastien 2010-09-03 1:24 ` Richard Stallman 0 siblings, 1 reply; 198+ messages in thread From: Bastien @ 2010-09-02 6:31 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rms, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> I have searched on the Savannah website (both gnu.org and nongnu.org) >> and I was not able to find any page mentionning this need. > > See the thread starting here: > > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-05/msg00001.html Thanks for the link, Eli. I was looking for a more general announcement. Something like "Savannah needs your help. Savannah is looking for talented sysadmins and developers to help maintain blahblah". I found something on the GNU website: http://www.gnu.org/help/help.html "Help with Savannah. We are especially looking for technical sysadmin volunteers to help with underlying infrastructure support. Volunteers to help with pending project submissions are also very welcome. Writing a specific tool to ease the license-checking job would be nice; for that, a good understanding of free software licensing issues is highly desirable and Perl experience is also helpful. Please see this general information on how to become a savannah hacker and this description of the specific license-checking tool we have in mind. Please communicate with us on the savannah-hackers-public mailing list." Maybe adding a line about the need of a secure bzr setup on savannah would make this need more proeminent. -- Bastien ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-02 6:31 ` Bastien @ 2010-09-03 1:24 ` Richard Stallman 2010-09-03 8:01 ` Eli Zaretskii 2010-09-03 9:50 ` Bastien 0 siblings, 2 replies; 198+ messages in thread From: Richard Stallman @ 2010-09-03 1:24 UTC (permalink / raw) To: Bastien; +Cc: eliz, emacs-devel Since there are already some people working on bzr+ssh for savannah, I am not sure it is useful to mention that specifically in gnu.org/help. It could cause more confusion than good. The crucial questions are, are they working hard on the job, and do they need more people? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-03 1:24 ` Richard Stallman @ 2010-09-03 8:01 ` Eli Zaretskii 2010-09-03 9:50 ` Bastien 1 sibling, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-09-03 8:01 UTC (permalink / raw) To: rms; +Cc: bzg, emacs-devel > From: Richard Stallman <rms@gnu.org> > CC: eliz@gnu.org, emacs-devel@gnu.org > Date: Thu, 02 Sep 2010 21:24:26 -0400 > > Since there are already some people working on bzr+ssh for savannah, > I am not sure it is useful to mention that specifically in gnu.org/help. > It could cause more confusion than good. > > The crucial questions are, are they working hard on the job, > and do they need more people? The more important question is: when is it anticipated that bzr+ssh will be available on Savannah. We've been waiting for this for 9 months now, with no ETA in sight, and it sounds incredible that the job is so hard as to require such a long time. If there are roadblocks that still prevent this from happening, perhaps someone on Savannah could spell them out. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-03 1:24 ` Richard Stallman 2010-09-03 8:01 ` Eli Zaretskii @ 2010-09-03 9:50 ` Bastien 2010-09-03 13:58 ` Karl Fogel 1 sibling, 1 reply; 198+ messages in thread From: Bastien @ 2010-09-03 9:50 UTC (permalink / raw) To: rms; +Cc: eliz, emacs-devel Richard Stallman <rms@gnu.org> writes: > The crucial questions are, are they working hard on the job, > and do they need more people? I subscribed to the savannah-hackers-public mailing list and see if the Savannah hackers want help and how I can help them get it from the hackers communities I know. -- Bastien ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-09-03 9:50 ` Bastien @ 2010-09-03 13:58 ` Karl Fogel 0 siblings, 0 replies; 198+ messages in thread From: Karl Fogel @ 2010-09-03 13:58 UTC (permalink / raw) To: Bastien; +Cc: eliz, rms, emacs-devel Bastien <bzg@altern.org> writes: >Richard Stallman <rms@gnu.org> writes: >> The crucial questions are, are they working hard on the job, >> and do they need more people? > >I subscribed to the savannah-hackers-public mailing list and see >if the Savannah hackers want help and how I can help them get it >from the hackers communities I know. (I think this thread has been posted here before, but for what it's worth...) I believe the post below, and the thread in which it is embedded, contains all the information someone would need to pick this up: http://lists.gnu.org/archive/html/savannah-hackers-public/2010-05/msg00024.html The start of that thread is here, and contains an rough overview of the plan: http://lists.gnu.org/archive/html/savannah-hackers-public/2010-05/msg00001.html Good luck, -Karl ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-25 13:03 ` Richard Stallman 2010-08-25 13:32 ` Juanma Barranquero @ 2010-08-25 20:25 ` Uday S Reddy 2010-08-27 15:36 ` Richard Stallman 1 sibling, 1 reply; 198+ messages in thread From: Uday S Reddy @ 2010-08-25 20:25 UTC (permalink / raw) To: rms; +Cc: Uday S Reddy, monnier, emacs-devel Richard Stallman writes: > I don't know enough to have an opinion about the substance of the > question, but it is clear that you need to argue for this in a Bzr > discussion group. Discussing it here means, in effect, asking me to > convey it to them -- and using me as middleman for an issue I only > barely understand is not very effective. Oh, it has been discussed in the Bazaar discussion group. Look for "rebase" in this listing: https://lists.ubuntu.com/archives/bazaar/2010q1/thread.html I am sure that these kinds of technical discussions would have happened myriads of times. I think the point where your help is needed is in impressing upon them that gnu projects like Emacs are having to choose inefficient and time-consuming workflows because bazaar does not support rebase. If rebase were available, Emacs developers can learn to use it correctly, and use more efficient workflows. So, they are imposting a cost on the rest of us. Cheers, Uday ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-25 20:25 ` Uday S Reddy @ 2010-08-27 15:36 ` Richard Stallman 0 siblings, 0 replies; 198+ messages in thread From: Richard Stallman @ 2010-08-27 15:36 UTC (permalink / raw) To: Uday S Reddy; +Cc: u.s.reddy, monnier, emacs-devel Oh, it has been discussed in the Bazaar discussion group. If you are not happy with the outcome, and you have arguments to present, or you just want the Bazaar developers to know how important the issue is to you, please participate in the discussion there. Discussing it where the developers will see it can change their minds. Discussing it here, in their absence, is mean-spirited. I think the point where your help is needed is in impressing upon them that gnu projects like Emacs are having to choose inefficient and time-consuming workflows because bazaar does not support rebase. I only barely understand the issue. A few days ago, someone told me what rebase means, but I don't understand why it is important. And even if I understood the arguments, I would not be able to present them. However, if the Emacs maintainers believe that rebase is important for Emacs maintenance, they can write an explanation of why, including why the alternatives Bazaar recommends are not adequate for Emacs. I could not write that myself, but given it, I could show that to the Bazaar developers and urge them to pay attention. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 19:56 ` Eli Zaretskii 2010-08-21 21:51 ` Uday S Reddy @ 2010-08-22 7:36 ` Stephen J. Turnbull 2010-08-22 8:52 ` Eli Zaretskii 1 sibling, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 7:36 UTC (permalink / raw) To: Eli Zaretskii; +Cc: u.s.reddy, emacs-devel Eli Zaretskii writes: > > From: "Stephen J. Turnbull" <stephen@xemacs.org> > > Cc: Uday S Reddy <u.s.reddy@cs.bham.ac.uk>, > > emacs-devel@gnu.org > > Date: Sun, 22 Aug 2010 03:59:10 +0900 > > > > > For the first kind, it is IMO not very good to have the > > > changes uncommitted upstream for prolonged periods of time, > > > > What's your definition of "prolonged"? > > Never thought about quantifying that. It seems like a moot point > anyway, since there's a request not to lump unrelated changes in > the same commit. It's not a moot point because > I could use "ci --local", but that would cause my changes appear on > a branch when I finally commit upstream, and require the -n0 switch > to "bzr log", so I try to avoid that. isn't a problem if you rebase. There's a small race (about 10 minutes for me on XEmacs with a make; make check[1]) where somebody might commit while you're rebasing, which would cause push/bound-commit to fail, but you get a fast-forward (commits all on mainline) when the push succeeds. And it will usually succeed. > > I'm thinking in terms of simply committing all changes locally > > until the end of the work session, then doing the merge to mirror > > and push to upstream in a batch at the end of the session. > > That'd be against the "not lumping together unrelated changes" > request. Why do you think that? Separate commits are separate commits. They are recorded as separate commits in upstream when you push. > > How frequently do you commit? > > Very frequently, see above. Heh. Given that for you each commit goes upstream, that's frequent. But with git I've used workflows that substitute commits for autosaves. That's what I think of as "very frequent". > > How finely do you divide changesets? > > Each changeset deals with a separate feature or bug-fix. That is > how I understand the rules. That's what I thought, and > > I will often make 5 to 10 commits in a session when I'm working > > on minor bugs. > > Same here, although it's more close to 5 than to 10. so your workflow in this respect is roughly similar to my own (ie, the rate of mainline commits is the same, although I tend to break up anything that involves more than five minutes work into multiple commits on a branch, in both git and hg). Ten is unusual for me, but not so unusual (especially when I'm wearing my RM hat) that I can afford to ignore the possibility that I'll want to do ten commits and end up spending 30 minutes minimum waiting for the server. That's like 20% of my typical session, and if any of those commits really hangs I could end up wasting half the session. > > I really would not like it if I had to wait even one minute for a > > commit of a typo fix. > Well, you cannot make a changeset of a typo fix with anything else, > unless it's another typo. The problem is that one rarely finds > many typos in one go, except by luck. So yes, I need to wait > before the next commit. I do other things, like reading mail or > work on some other problem in the meantime. Right. Context switches are expensive. I'd rather avoid them, myself. YMMV. The "commit+ pull rebase push" workflow means that all of my waiting is concentrated on the last three operations, and my train of thought is never interrupted (because that part of the workflow is a no-brainer). > > No, but if you do a typo fix, commit, then find another typo, 50 > > minutes (according to the recent report) is a very long time to > > wait.... > Well, 50 minutes _is_ long. It's more like 3 to 5 here, which is > also long, but barely endurable. You have more endurance than I. I am not willing to put up with that. > > The recommended workflow (at least as Karl and I wrote it) > > assumed that "one-commit changes" would be performed in a > > separate branch, and merged into the mirror (bound branch) in > > batches. > > This would again fly in the face of the "don't lump together..." > request, AFAIU. Then there's something you don't understand. What don't you understand? That this workflow involves committing each of several conceptual changes separately, then one push (or merge + commit in a bound branch) to send them all upstream? Or that each commit is a separate transaction, cherrypickable and logged as such, even after a pull/push/bound-commit to a different repo? Or something else? Footnotes: [1] Not doing the equivalent of "make bootstrap" is a little risky because we don't have proper dependencies for Lisp ... this matters mostly for changes to exported APIs not exercised by the build and test process, or to exported macro internals, both of which are pretty rare. I consider the level of risk acceptable. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 7:36 ` Stephen J. Turnbull @ 2010-08-22 8:52 ` Eli Zaretskii 2010-08-22 9:21 ` Stephen J. Turnbull 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-22 8:52 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: u.s.reddy, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Cc: u.s.reddy@cs.bham.ac.uk, > emacs-devel@gnu.org > Date: Sun, 22 Aug 2010 16:36:20 +0900 > > > I could use "ci --local", but that would cause my changes appear on > > a branch when I finally commit upstream, and require the -n0 switch > > to "bzr log", so I try to avoid that. > > isn't a problem if you rebase. Stefan says bzr's rebase is unreliable. I only used rebase in toy use-cases, so I have no first-hand knowledge. Perhaps Stefan could elaborate on the problems he knows about. > > > The recommended workflow (at least as Karl and I wrote it) > > > assumed that "one-commit changes" would be performed in a > > > separate branch, and merged into the mirror (bound branch) in > > > batches. > > > > This would again fly in the face of the "don't lump together..." > > request, AFAIU. > > Then there's something you don't understand. What don't you > understand? I just completely misunderstood the use-case you were describing. Re-reading it now, I don't see any problems of the "lumping" kind, indeed. The only problem is with having the changes on a branch instead of mainline of the history, unless rebase is used. There's one other problem with holding back commits to minor problems: someone else could solve the same problem in the meantime. Apart of the obvious social issues ("I was the first to fix it"), there's the issue of wasted effort. With changes I make for the DOS port, I casually leave them in a local commit for days, because I'm sure no one else will touch them. But with general-purpose changes, we need a mechanism to announce "I'm working on this one", otherwise the urge to commit the results of a job well done is too intense, I think. If all of this were solved, I could probably wait with commits until the end of the day, which will make the commit slowness much less of an issue. I guess no one seriously considered all these issues because we believed (and still do) that bzr will eventually become faster on Savannah. Perhaps one day we will abandon that hope and turn to resolving these issues instead. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 8:52 ` Eli Zaretskii @ 2010-08-22 9:21 ` Stephen J. Turnbull 2010-08-22 9:38 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 9:21 UTC (permalink / raw) To: Eli Zaretskii; +Cc: u.s.reddy, emacs-devel Eli Zaretskii writes: > > isn't a problem if you rebase. > > Stefan says bzr's rebase is unreliable. I know it's limited, but I'm pretty sure it works fine in the simple case I described. > I just completely misunderstood the use-case you were describing. Ah. OK, no problem. > indeed. The only problem is with having the changes on a branch > instead of mainline of the history, unless rebase is used. Yeah, as I wrote elsewhere, bzr doesn't really give you a good way to work around that (unless you are in a position to pull contributions into the project mainline, but that doesn't work for Emacs). > There's one other problem with holding back commits to minor > problems: someone else could solve the same problem in the > meantime. Apart of the obvious social issues ("I was the first to > fix it"), there's the issue of wasted effort. I don't consider that wasted effort, actually. The person who gets there first usually gets the credit, the second person is a perfect candidate to review. :-) > I guess no one seriously considered all these issues Er, no. Several of us told you, at greater or lesser length, that these were going to be issues, and that git was a much better fit for Emacs. That advice was completely ignored. > because we believed (and still do) that bzr will eventually become > faster on Savannah. Perhaps one day we will abandon that hope and > turn to resolving these issues instead. I don't think you can, without redesigning bzr. Faster, yes, but this issues about mainline confusion, no. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 9:21 ` Stephen J. Turnbull @ 2010-08-22 9:38 ` Eli Zaretskii 2010-08-22 11:14 ` Stephen J. Turnbull 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-22 9:38 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: u.s.reddy, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Cc: u.s.reddy@cs.bham.ac.uk, > emacs-devel@gnu.org > Date: Sun, 22 Aug 2010 18:21:31 +0900 > > > There's one other problem with holding back commits to minor > > problems: someone else could solve the same problem in the > > meantime. Apart of the obvious social issues ("I was the first to > > fix it"), there's the issue of wasted effort. > > I don't consider that wasted effort, actually. The person who gets > there first usually gets the credit, the second person is a perfect > candidate to review. :-) Code is seldom reviewed in Emacs, the only exceptions are contributors who explicitly ask for a review. And there's the issue of conflicts when you resync next (unless the committed fix is textually identical to the one in your WT). ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 9:38 ` Eli Zaretskii @ 2010-08-22 11:14 ` Stephen J. Turnbull 2010-08-22 11:47 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 11:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: u.s.reddy, emacs-devel Eli Zaretskii writes: > Code is seldom reviewed in Emacs, the only exceptions are > contributors who explicitly ask for a review. Uh.... :-) > And there's the issue of conflicts when you resync next (unless the > committed fix is textually identical to the one in your WT). I haven't noticed this being an issue. It was a massive pain in CVS, but with git at least you revert the transaction causing conflicts and either do a reverse cherry-pick or an interactive rebase on your tree. Then redo the pull/merge/update. Usually not a big deal, even if it's buried many commits deep in the DAG. OTOH, if there is reason to insist on your own patch (either it's better or it's at least as good and you have additional "important" patches that depend on your version), then you clone the mainline, undo the conflicting patch, and merge with your "better" branch. I can't say this will always work, but it has worked for me on the occasions I've tried it. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 11:14 ` Stephen J. Turnbull @ 2010-08-22 11:47 ` Eli Zaretskii 0 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-22 11:47 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: u.s.reddy, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Cc: u.s.reddy@cs.bham.ac.uk, > emacs-devel@gnu.org > Date: Sun, 22 Aug 2010 20:14:52 +0900 > > > And there's the issue of conflicts when you resync next (unless the > > committed fix is textually identical to the one in your WT). > > I haven't noticed this being an issue. It was a massive pain in CVS, > but with git at least you revert the transaction causing conflicts and > either do a reverse cherry-pick or an interactive rebase on your tree. > Then redo the pull/merge/update. Usually not a big deal, even if it's > buried many commits deep in the DAG. Resolving such conflicts is not a big deal in bzr as well. It's just added overhead, that's all. People who don't have too much time try to avoid that. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-21 18:59 ` Stephen J. Turnbull 2010-08-21 19:50 ` Leo 2010-08-21 19:56 ` Eli Zaretskii @ 2010-08-22 11:13 ` Jan Djärv 2010-08-22 13:13 ` Stephen J. Turnbull 2 siblings, 1 reply; 198+ messages in thread From: Jan Djärv @ 2010-08-22 11:13 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: Uday S Reddy, Eli Zaretskii, emacs-devel Stephen J. Turnbull skrev 2010-08-21 20.59: > The workflow should be something like > > 0. work in "work", a branch of "mirror" (local) which is in turn a > branch of "trunk" (on Savannah) > 1. pull from "trunk" into "mirror" > 2. rebase "work" on "mirror" > 3. repeat 0-2 until done > 4. cd to mirror& pull from "work" into "mirror" (this will always succeed!) > 5. push from "mirror" to "trunk" > 6. if 5 succeeds, you're done (for now, go to 0 to start the next change) > 7. else pull --overwrite from "trunk" into "mirror" > 8. goto 2 > I do something similar, but 5 is a commit on a bound branch. Is there any difference between that and push? Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 11:13 ` Jan Djärv @ 2010-08-22 13:13 ` Stephen J. Turnbull 2010-08-22 17:10 ` Jan Djärv 0 siblings, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 13:13 UTC (permalink / raw) To: Jan Djärv; +Cc: Uday S Reddy, Eli Zaretskii, emacs-devel Jan Djärv writes: > > > Stephen J. Turnbull skrev 2010-08-21 20.59: > > The workflow should be something like > > > > 0. work in "work", a branch of "mirror" (local) which is in turn > > a branch of "trunk" (on Savannah) > > 1. pull from "trunk" into "mirror" > > 2. rebase "work" on "mirror" > > 3. repeat 0-2 until done > > 4. cd to mirror& pull from "work" into "mirror" (this will > > always succeed!) > > 5. push from "mirror" to "trunk" > > 6. if 5 succeeds, you're done (for now, go to 0 to start the > > next change) > > 7. else pull --overwrite from "trunk" into "mirror" > > 8. goto 2 > > I do something similar, but 5 is a commit on a bound branch. Is > there any difference between that and push? Speaking very precisely, I think you must be doing something different from what I think you mean. If "mirror" is a bound branch, then the pull in step 4 will operate on "trunk" (ie, the Savannah mainline) before operating on "mirror". If the pull succeeds, you're done; Savannah, "mirror", and "work" are all identical (except for unversioned "junk"). There should be no need for a commit at that point. Since I am not sure exactly what you're doing, you shouldn't rely on the rest of what I say for yourself. It works for me, but since I'm guessing about your workflow, I can't be entirely sure if it should work for you. In principle, no, there would be no difference in the case of a success. It's the failure modes for commit-while-bound and commit- then-push that are different. Specifically, in a bound branch, the pull in step 4 from "work" into "mirror" can fail if someone has committed *on Savannah* while you were rebasing. Or, if you merge, or work in the bound branch, instead of pull, the commit can fail. This means that bzr has no record of the work you are trying to push. If you don't make any changes while the commit is in process, then the workspace is your record, and you can just fix the problem (typically, bzr update "mirror", build and test, and retry the commit). If you have made changes, however, you've got to untangle your mess by hand before updating "mirror". In the commit-then-push workflow, you have the commit, and you can then continue to work in that workspace while you're waiting for push to complete (successfully or not), knowing that Bazaar has a record of all your work up to the push. (Typically I will commit several times, test, and then push.) ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-22 13:13 ` Stephen J. Turnbull @ 2010-08-22 17:10 ` Jan Djärv 0 siblings, 0 replies; 198+ messages in thread From: Jan Djärv @ 2010-08-22 17:10 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: Uday S Reddy, Eli Zaretskii, emacs-devel Stephen J. Turnbull skrev 2010-08-22 15.13: > Jan Djärv writes: > > > > > > Stephen J. Turnbull skrev 2010-08-21 20.59: > > > The workflow should be something like > > > > > > 0. work in "work", a branch of "mirror" (local) which is in turn > > > a branch of "trunk" (on Savannah) > > > 1. pull from "trunk" into "mirror" > > > 2. rebase "work" on "mirror" > > > 3. repeat 0-2 until done > > > 4. cd to mirror& pull from "work" into "mirror" (this will > > > always succeed!) > > > 5. push from "mirror" to "trunk" > > > 6. if 5 succeeds, you're done (for now, go to 0 to start the > > > next change) > > > 7. else pull --overwrite from "trunk" into "mirror" > > > 8. goto 2 > > > > I do something similar, but 5 is a commit on a bound branch. Is > > there any difference between that and push? > > Speaking very precisely, I think you must be doing something different > from what I think you mean. If "mirror" is a bound branch, then the > pull in step 4 will operate on "trunk" (ie, the Savannah mainline) > before operating on "mirror". Ah, 4 would be merge from work to mirror. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 15:19 ` Eli Zaretskii 2010-08-20 22:41 ` Uday S Reddy @ 2010-08-21 2:29 ` Stephen J. Turnbull 1 sibling, 0 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-21 2:29 UTC (permalink / raw) To: Eli Zaretskii; +Cc: jan.h.d, schwab, monnier, emacs-devel Eli Zaretskii writes: > Please show this workflow in more detail. *sigh* No, I'll just drop it, since you clearly just don't want to know. ^ permalink raw reply [flat|nested] 198+ messages in thread
* bzr smart server [was Re: Locks on the Bzr repository] 2010-08-20 8:57 ` Eli Zaretskii 2010-08-20 9:13 ` Andreas Schwab 2010-08-20 10:15 ` Stephen J. Turnbull @ 2010-08-20 16:08 ` Glenn Morris 2010-08-20 16:56 ` Lennart Borgman 2010-08-20 17:12 ` bzr smart server [was Re: Locks on the Bzr repository] Eli Zaretskii 2 siblings, 2 replies; 198+ messages in thread From: Glenn Morris @ 2010-08-20 16:08 UTC (permalink / raw) To: Eli Zaretskii; +Cc: jan.h.d, Andreas Schwab, monnier, emacs-devel Eli Zaretskii wrote: > Worst of all, no progress is being reported regarding turning on > bzr+ssh on savannah. It's been 9 months since work on this was > supposed to have been started, enough time to deliver a baby, and I > have no idea when (or if) this will happen. Could those "in the know" > please tell what is holding this back? Given the information about > the difficulties, maybe someone, whose connection is not so fast and > whose motivation is therefore high, could help. I have no inside knowledge, but I like to depress myself by following the thread on the Savannah mailing list. http://lists.gnu.org/archive/html/savannah-hackers-public/2010-07/msg00008.html http://lists.gnu.org/archive/html/savannah-hackers-public/2010-08/msg00001.html etc ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server [was Re: Locks on the Bzr repository] 2010-08-20 16:08 ` bzr smart server [was Re: Locks on the Bzr repository] Glenn Morris @ 2010-08-20 16:56 ` Lennart Borgman 2010-08-20 17:11 ` Eli Zaretskii 2010-08-20 17:12 ` bzr smart server [was Re: Locks on the Bzr repository] Eli Zaretskii 1 sibling, 1 reply; 198+ messages in thread From: Lennart Borgman @ 2010-08-20 16:56 UTC (permalink / raw) To: Glenn Morris; +Cc: Eli Zaretskii, jan.h.d, Andreas Schwab, monnier, emacs-devel On Fri, Aug 20, 2010 at 6:08 PM, Glenn Morris <rgm@gnu.org> wrote: > Eli Zaretskii wrote: > >> Worst of all, no progress is being reported regarding turning on >> bzr+ssh on savannah. It's been 9 months since work on this was >> supposed to have been started, enough time to deliver a baby, and I >> have no idea when (or if) this will happen. Could those "in the know" >> please tell what is holding this back? Given the information about >> the difficulties, maybe someone, whose connection is not so fast and >> whose motivation is therefore high, could help. > > I have no inside knowledge, but I like to depress myself by following > the thread on the Savannah mailing list. > > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-07/msg00008.html > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-08/msg00001.html It looks like there are real reasons behind the slow migration to bzr+ssh according to the link Sylvain gave: http://savannah.gnu.org/maintenance/Bzr ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server [was Re: Locks on the Bzr repository] 2010-08-20 16:56 ` Lennart Borgman @ 2010-08-20 17:11 ` Eli Zaretskii 2010-08-20 17:13 ` Lennart Borgman 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 17:11 UTC (permalink / raw) To: Lennart Borgman; +Cc: jan.h.d, schwab, monnier, emacs-devel > From: Lennart Borgman <lennart.borgman@gmail.com> > Date: Fri, 20 Aug 2010 18:56:36 +0200 > Cc: Eli Zaretskii <eliz@gnu.org>, jan.h.d@swipnet.se, > Andreas Schwab <schwab@linux-m68k.org>, monnier@iro.umontreal.ca, emacs-devel@gnu.org > > On Fri, Aug 20, 2010 at 6:08 PM, Glenn Morris <rgm@gnu.org> wrote: > > Eli Zaretskii wrote: > > > >> Worst of all, no progress is being reported regarding turning on > >> bzr+ssh on savannah. It's been 9 months since work on this was > >> supposed to have been started, enough time to deliver a baby, and I > >> have no idea when (or if) this will happen. Could those "in the know" > >> please tell what is holding this back? Given the information about > >> the difficulties, maybe someone, whose connection is not so fast and > >> whose motivation is therefore high, could help. > > > > I have no inside knowledge, but I like to depress myself by following > > the thread on the Savannah mailing list. > > > > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-07/msg00008.html > > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-08/msg00001.html > > > It looks like there are real reasons behind the slow migration to > bzr+ssh according to the link Sylvain gave: > > http://savannah.gnu.org/maintenance/Bzr No real reason could ever be able to explain a 9-month period during which it was _not_ done. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server [was Re: Locks on the Bzr repository] 2010-08-20 17:11 ` Eli Zaretskii @ 2010-08-20 17:13 ` Lennart Borgman 2010-08-20 17:23 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Lennart Borgman @ 2010-08-20 17:13 UTC (permalink / raw) To: Eli Zaretskii; +Cc: jan.h.d, schwab, monnier, emacs-devel On Fri, Aug 20, 2010 at 7:11 PM, Eli Zaretskii <eliz@gnu.org> wrote: >> From: Lennart Borgman <lennart.borgman@gmail.com> >> Date: Fri, 20 Aug 2010 18:56:36 +0200 >> Cc: Eli Zaretskii <eliz@gnu.org>, jan.h.d@swipnet.se, >> Andreas Schwab <schwab@linux-m68k.org>, monnier@iro.umontreal.ca, emacs-devel@gnu.org >> >> On Fri, Aug 20, 2010 at 6:08 PM, Glenn Morris <rgm@gnu.org> wrote: >> > Eli Zaretskii wrote: >> > >> >> Worst of all, no progress is being reported regarding turning on >> >> bzr+ssh on savannah. It's been 9 months since work on this was >> >> supposed to have been started, enough time to deliver a baby, and I >> >> have no idea when (or if) this will happen. Could those "in the know" >> >> please tell what is holding this back? Given the information about >> >> the difficulties, maybe someone, whose connection is not so fast and >> >> whose motivation is therefore high, could help. >> > >> > I have no inside knowledge, but I like to depress myself by following >> > the thread on the Savannah mailing list. >> > >> > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-07/msg00008.html >> > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-08/msg00001.html >> >> >> It looks like there are real reasons behind the slow migration to >> bzr+ssh according to the link Sylvain gave: >> >> http://savannah.gnu.org/maintenance/Bzr > > No real reason could ever be able to explain a 9-month period during > which it was _not_ done. If no real reason can explain it what do you believe in then? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server [was Re: Locks on the Bzr repository] 2010-08-20 17:13 ` Lennart Borgman @ 2010-08-20 17:23 ` Eli Zaretskii 2010-08-20 17:52 ` bzr smart server David Kastrup 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 17:23 UTC (permalink / raw) To: Lennart Borgman; +Cc: jan.h.d, schwab, monnier, emacs-devel > From: Lennart Borgman <lennart.borgman@gmail.com> > Date: Fri, 20 Aug 2010 19:13:59 +0200 > Cc: rgm@gnu.org, jan.h.d@swipnet.se, schwab@linux-m68k.org, > monnier@iro.umontreal.ca, emacs-devel@gnu.org > > >> It looks like there are real reasons behind the slow migration to > >> bzr+ssh according to the link Sylvain gave: > >> > >> http://savannah.gnu.org/maintenance/Bzr > > > > No real reason could ever be able to explain a 9-month period during > > which it was _not_ done. > > > If no real reason can explain it what do you believe in then? Inaction and lack of motivation. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-20 17:23 ` Eli Zaretskii @ 2010-08-20 17:52 ` David Kastrup 0 siblings, 0 replies; 198+ messages in thread From: David Kastrup @ 2010-08-20 17:52 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Lennart Borgman <lennart.borgman@gmail.com> >> Date: Fri, 20 Aug 2010 19:13:59 +0200 >> Cc: rgm@gnu.org, jan.h.d@swipnet.se, schwab@linux-m68k.org, >> monnier@iro.umontreal.ca, emacs-devel@gnu.org >> >> >> It looks like there are real reasons behind the slow migration to >> >> bzr+ssh according to the link Sylvain gave: >> >> >> >> http://savannah.gnu.org/maintenance/Bzr >> > >> > No real reason could ever be able to explain a 9-month period during >> > which it was _not_ done. >> >> >> If no real reason can explain it what do you believe in then? > > Inaction and lack of motivation. That's a very real reason in software development. One of the most important reasons that tools should be fun to work with. -- David Kastrup ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server [was Re: Locks on the Bzr repository] 2010-08-20 16:08 ` bzr smart server [was Re: Locks on the Bzr repository] Glenn Morris 2010-08-20 16:56 ` Lennart Borgman @ 2010-08-20 17:12 ` Eli Zaretskii 2010-08-20 23:02 ` bzr smart server Stefan Monnier 1 sibling, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 17:12 UTC (permalink / raw) To: Glenn Morris, Richard Stallman; +Cc: emacs-devel > Cc: Andreas Schwab <schwab@linux-m68k.org>, jan.h.d@swipnet.se, > monnier@iro.umontreal.ca, emacs-devel@gnu.org > From: Glenn Morris <rgm@gnu.org> > Date: Fri, 20 Aug 2010 12:08:09 -0400 > > Eli Zaretskii wrote: > > > Worst of all, no progress is being reported regarding turning on > > bzr+ssh on savannah. It's been 9 months since work on this was > > supposed to have been started, enough time to deliver a baby, and I > > have no idea when (or if) this will happen. Could those "in the know" > > please tell what is holding this back? Given the information about > > the difficulties, maybe someone, whose connection is not so fast and > > whose motivation is therefore high, could help. > > I have no inside knowledge, but I like to depress myself by following > the thread on the Savannah mailing list. > > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-07/msg00008.html > http://lists.gnu.org/archive/html/savannah-hackers-public/2010-08/msg00001.html Richard, are you reading this? Can you _please_ help?? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-20 17:12 ` bzr smart server [was Re: Locks on the Bzr repository] Eli Zaretskii @ 2010-08-20 23:02 ` Stefan Monnier 2010-08-21 8:05 ` Eli Zaretskii 2010-08-22 17:06 ` Richard Stallman 0 siblings, 2 replies; 198+ messages in thread From: Stefan Monnier @ 2010-08-20 23:02 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Richard Stallman, emacs-devel >> http://lists.gnu.org/archive/html/savannah-hackers-public/2010-07/msg00008.html >> http://lists.gnu.org/archive/html/savannah-hackers-public/2010-08/msg00001.html > Richard, are you reading this? Can you _please_ help?? Moving to Git does seem like a good option ;-) Stefan ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-20 23:02 ` bzr smart server Stefan Monnier @ 2010-08-21 8:05 ` Eli Zaretskii 2010-08-21 13:22 ` Óscar Fuentes ` (2 more replies) 2010-08-22 17:06 ` Richard Stallman 1 sibling, 3 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 8:05 UTC (permalink / raw) To: Stefan Monnier; +Cc: rms, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: Glenn Morris <rgm@gnu.org>, Richard Stallman <rms@gnu.org>, emacs-devel@gnu.org > Date: Sat, 21 Aug 2010 01:02:15 +0200 > > >> http://lists.gnu.org/archive/html/savannah-hackers-public/2010-07/msg00008.html > >> http://lists.gnu.org/archive/html/savannah-hackers-public/2010-08/msg00001.html > > > Richard, are you reading this? Can you _please_ help?? > > Moving to Git does seem like a good option ;-) Not for me. Git is a mess on Windows. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 8:05 ` Eli Zaretskii @ 2010-08-21 13:22 ` Óscar Fuentes 2010-08-21 15:31 ` Eli Zaretskii 2010-08-21 13:46 ` Miles Bader 2010-08-21 14:00 ` Eric Hanchrow 2 siblings, 1 reply; 198+ messages in thread From: Óscar Fuentes @ 2010-08-21 13:22 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> Moving to Git does seem like a good option ;-) > > Not for me. Git is a mess on Windows. It used to be and that was the reason I didn't argue against bzr at the time. Started to use bzr for my projects just because it treats Windows as a first class citizen, become frustrated, tried MSYSGit again, it worked, and ditched bzr for good. Now Git is what manages all projects I work with, including Emacs, on GNU/Linux and Windows. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 13:22 ` Óscar Fuentes @ 2010-08-21 15:31 ` Eli Zaretskii 2010-08-21 17:09 ` Óscar Fuentes 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 15:31 UTC (permalink / raw) To: Óscar Fuentes; +Cc: emacs-devel > From: Óscar Fuentes <ofv@wanadoo.es> > Date: Sat, 21 Aug 2010 15:22:39 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > >> Moving to Git does seem like a good option ;-) > > > > Not for me. Git is a mess on Windows. > > It used to be and that was the reason I didn't argue against bzr at the > time. Started to use bzr for my projects just because it treats Windows > as a first class citizen, become frustrated, tried MSYSGit again, it > worked, and ditched bzr for good. Now Git is what manages all projects I > work with, including Emacs, on GNU/Linux and Windows. I don't want to install MSYS. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 15:31 ` Eli Zaretskii @ 2010-08-21 17:09 ` Óscar Fuentes 2010-08-21 17:28 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Óscar Fuentes @ 2010-08-21 17:09 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> It used to be and that was the reason I didn't argue against bzr at the >> time. Started to use bzr for my projects just because it treats Windows >> as a first class citizen, become frustrated, tried MSYSGit again, it >> worked, and ditched bzr for good. Now Git is what manages all projects I >> work with, including Emacs, on GNU/Linux and Windows. > > I don't want to install MSYS. I tend to avoid MSYS/Cygwin too, but the installer of MSYS-Git has options for making MSYS invisible to the rest of the system. In essence, it is out of the PATH. So the fact that Git is working on top of MSYS is an internal implementation detail. It is not different from any other self-contained application. And you don't need to separately install MSYS for using MSYS-Git. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 17:09 ` Óscar Fuentes @ 2010-08-21 17:28 ` Eli Zaretskii 0 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 17:28 UTC (permalink / raw) To: Óscar Fuentes; +Cc: emacs-devel > From: Óscar Fuentes <ofv@wanadoo.es> > Date: Sat, 21 Aug 2010 19:09:58 +0200 > > I tend to avoid MSYS/Cygwin too, but the installer of MSYS-Git has > options for making MSYS invisible to the rest of the system. In > essence, it is out of the PATH. As I'm sure you know too well, Windows looks for programs not only on PATH. But I'm uncomfortable with this thread discussing my personal preferences too much, so let's just drop this. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 8:05 ` Eli Zaretskii 2010-08-21 13:22 ` Óscar Fuentes @ 2010-08-21 13:46 ` Miles Bader 2010-08-21 15:32 ` Eli Zaretskii 2010-08-21 14:00 ` Eric Hanchrow 2 siblings, 1 reply; 198+ messages in thread From: Miles Bader @ 2010-08-21 13:46 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> Moving to Git does seem like a good option ;-) > > Not for me. Git is a mess on Windows. I think that's not really true any more. -Miles -- [|nurgle|] ddt- demonic? so quake will have an evil kinda setting? one that will make every christian in the world foamm at the mouth? [iddt] nurg, that's the goal ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 13:46 ` Miles Bader @ 2010-08-21 15:32 ` Eli Zaretskii 2010-08-21 15:45 ` Miles Bader 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 15:32 UTC (permalink / raw) To: Miles Bader; +Cc: emacs-devel > From: Miles Bader <miles@gnu.org> > Date: Sat, 21 Aug 2010 22:46:04 +0900 > > Eli Zaretskii <eliz@gnu.org> writes: > >> Moving to Git does seem like a good option ;-) > > > > Not for me. Git is a mess on Windows. > > I think that's not really true any more. It is for me, because I won't install MSYS, in any incarnation. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 15:32 ` Eli Zaretskii @ 2010-08-21 15:45 ` Miles Bader 2010-08-21 15:51 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Miles Bader @ 2010-08-21 15:45 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> >> Moving to Git does seem like a good option ;-) >> > >> > Not for me. Git is a mess on Windows. >> >> I think that's not really true any more. > > It is for me, because I won't install MSYS, in any incarnation. Why? [I've no doubt msys is a bit bloated, but OTOH, so is python, and bzr requires that...] -miles -- The car has become... an article of dress without which we feel uncertain, unclad, and incomplete. [Marshall McLuhan, Understanding Media, 1964] ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 15:45 ` Miles Bader @ 2010-08-21 15:51 ` Eli Zaretskii 2010-08-21 17:16 ` Óscar Fuentes 2010-08-21 17:28 ` Jason Rumney 0 siblings, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 15:51 UTC (permalink / raw) To: Miles Bader; +Cc: emacs-devel > From: Miles Bader <miles@gnu.org> > Date: Sun, 22 Aug 2010 00:45:41 +0900 > > Eli Zaretskii <eliz@gnu.org> writes: > >> >> Moving to Git does seem like a good option ;-) > >> > > >> > Not for me. Git is a mess on Windows. > >> > >> I think that's not really true any more. > > > > It is for me, because I won't install MSYS, in any incarnation. > > Why? Because it's an incompatible environment. MSYS is a fork of Cygwin, so it is as incompatible with native Windows development environment, such as MinGW, as is Cygwin. Of course, given enough tinkering and management overhead, one can overcome this difficulty. But I will resist as much as I can to be forced into that overhead. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 15:51 ` Eli Zaretskii @ 2010-08-21 17:16 ` Óscar Fuentes 2010-08-21 17:28 ` Jason Rumney 1 sibling, 0 replies; 198+ messages in thread From: Óscar Fuentes @ 2010-08-21 17:16 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > Because it's an incompatible environment. MSYS is a fork of Cygwin, > so it is as incompatible with native Windows development environment, > such as MinGW, as is Cygwin. > > Of course, given enough tinkering and management overhead, one can > overcome this difficulty. But I will resist as much as I can to be > forced into that overhead. Someone else already did that. At install time, it is possible (actually, the default option IIRC) to configure MSYS-Git for staying out of the way. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 15:51 ` Eli Zaretskii 2010-08-21 17:16 ` Óscar Fuentes @ 2010-08-21 17:28 ` Jason Rumney 2010-08-21 17:36 ` Eli Zaretskii 2010-08-21 17:40 ` Óscar Fuentes 1 sibling, 2 replies; 198+ messages in thread From: Jason Rumney @ 2010-08-21 17:28 UTC (permalink / raw) To: emacs-devel On 21/8/2010 11:51 PM, Eli Zaretskii wrote: > Because it's an incompatible environment. MSYS is a fork of Cygwin, It is? I was under the impression that MSYS was an extension of MinGW to give a Posix shell and environment in which to use the MinGW tools. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 17:28 ` Jason Rumney @ 2010-08-21 17:36 ` Eli Zaretskii 2010-08-21 17:40 ` Óscar Fuentes 1 sibling, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-21 17:36 UTC (permalink / raw) To: Jason Rumney; +Cc: emacs-devel > Date: Sun, 22 Aug 2010 01:28:14 +0800 > From: Jason Rumney <jasonr@gnu.org> > > On 21/8/2010 11:51 PM, Eli Zaretskii wrote: > > Because it's an incompatible environment. MSYS is a fork of Cygwin, > It is? I was under the impression that MSYS was an extension of MinGW to > give a Posix shell and environment in which to use the MinGW tools. No. MSYS is an environment to _build_ MinGW ports (as opposed to _use_ them). Its creator forked it from Cygwin for reasons I forgot. His recommendation is to use MSYS only for building MinGW ports. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 17:28 ` Jason Rumney 2010-08-21 17:36 ` Eli Zaretskii @ 2010-08-21 17:40 ` Óscar Fuentes 1 sibling, 0 replies; 198+ messages in thread From: Óscar Fuentes @ 2010-08-21 17:40 UTC (permalink / raw) To: emacs-devel Jason Rumney <jasonr@gnu.org> writes: > On 21/8/2010 11:51 PM, Eli Zaretskii wrote: >> Because it's an incompatible environment. MSYS is a fork of Cygwin, > > It is? I was under the impression that MSYS was an extension of MinGW > to give a Posix shell and environment in which to use the MinGW tools. MSYS is a fork of Cygwin. It can't be an extension of MinGW because MinGW is simply a Windows native port of gcc + binutils (then came gdb, gmake, etc, but they are real Windows ports, without relying on any Posix emulation layer.) The original goal of MSYS was to provide a better environment to run configure scripts using MinGW as the target. Previously it was done with Cygwin, but problems with pathnames were frequent. The main feature of MSYS over Cygwin (at least until recently) was that MSYS understand Windows pathnames, and can translate them depending on the kind of executable to call: Posix-style for those executables that use the Posix emulator, and Windows-style for the rest. That was not 100% reliable, but usually did a better job than Cygwin. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 8:05 ` Eli Zaretskii 2010-08-21 13:22 ` Óscar Fuentes 2010-08-21 13:46 ` Miles Bader @ 2010-08-21 14:00 ` Eric Hanchrow 2010-08-21 14:06 ` Lennart Borgman 2 siblings, 1 reply; 198+ messages in thread From: Eric Hanchrow @ 2010-08-21 14:00 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Stefan Monnier, emacs-devel On Sat, Aug 21, 2010 at 1:05 AM, Eli Zaretskii <eliz@gnu.org> wrote: > Not for me. Git is a mess on Windows. I recommend that you give git on windows another try -- I've been using it at work for many months, and it's fine. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 14:00 ` Eric Hanchrow @ 2010-08-21 14:06 ` Lennart Borgman 2010-08-21 14:24 ` Óscar Fuentes 0 siblings, 1 reply; 198+ messages in thread From: Lennart Borgman @ 2010-08-21 14:06 UTC (permalink / raw) To: Eric Hanchrow; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel On Sat, Aug 21, 2010 at 4:00 PM, Eric Hanchrow <eric.hanchrow@gmail.com> wrote: > On Sat, Aug 21, 2010 at 1:05 AM, Eli Zaretskii <eliz@gnu.org> wrote: >> Not for me. Git is a mess on Windows. > > I recommend that you give git on windows another try -- I've been > using it at work for many months, and it's fine. Is there a git for w32 now or do you still need msys/cygwin? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 14:06 ` Lennart Borgman @ 2010-08-21 14:24 ` Óscar Fuentes 2010-08-21 15:12 ` Lennart Borgman 0 siblings, 1 reply; 198+ messages in thread From: Óscar Fuentes @ 2010-08-21 14:24 UTC (permalink / raw) To: emacs-devel Lennart Borgman <lennart.borgman@gmail.com> writes: >> I recommend that you give git on windows another try -- I've been >> using it at work for many months, and it's fine. > > Is there a git for w32 now or do you still need msys/cygwin? MSYS-Git is what you need. MSYS is not an issue, as there is no requirement for putting the executables on the PATH. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 14:24 ` Óscar Fuentes @ 2010-08-21 15:12 ` Lennart Borgman 2010-08-21 17:12 ` Óscar Fuentes 0 siblings, 1 reply; 198+ messages in thread From: Lennart Borgman @ 2010-08-21 15:12 UTC (permalink / raw) To: Óscar Fuentes; +Cc: emacs-devel On Sat, Aug 21, 2010 at 4:24 PM, Óscar Fuentes <ofv@wanadoo.es> wrote: > Lennart Borgman <lennart.borgman@gmail.com> writes: > >>> I recommend that you give git on windows another try -- I've been >>> using it at work for many months, and it's fine. >> >> Is there a git for w32 now or do you still need msys/cygwin? > > MSYS-Git is what you need. MSYS is not an issue, as there is no > requirement for putting the executables on the PATH. And it works fine from within Emacs too? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-21 15:12 ` Lennart Borgman @ 2010-08-21 17:12 ` Óscar Fuentes 0 siblings, 0 replies; 198+ messages in thread From: Óscar Fuentes @ 2010-08-21 17:12 UTC (permalink / raw) To: emacs-devel Lennart Borgman <lennart.borgman@gmail.com> writes: >> MSYS-Git is what you need. MSYS is not an issue, as there is no >> requirement for putting the executables on the PATH. > > And it works fine from within Emacs too? Yes. I use magit.el and Emacs' own VC. magit.el already has a variable for pointing to the git executable and I added one to VC for the same purpose. So neither MSYS nor git.exe are on the PATH. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr smart server 2010-08-20 23:02 ` bzr smart server Stefan Monnier 2010-08-21 8:05 ` Eli Zaretskii @ 2010-08-22 17:06 ` Richard Stallman 1 sibling, 0 replies; 198+ messages in thread From: Richard Stallman @ 2010-08-22 17:06 UTC (permalink / raw) To: Stefan Monnier; +Cc: eliz, emacs-devel > Richard, are you reading this? Can you _please_ help?? I have not read about this. Stefan, could you send me a concise statement of the issue? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 20:06 ` Jan Djärv 2010-08-19 21:49 ` Andreas Schwab @ 2010-08-20 4:44 ` Miles Bader 2010-08-20 4:52 ` Jason Rumney 2010-08-20 6:22 ` Jan Djärv 1 sibling, 2 replies; 198+ messages in thread From: Miles Bader @ 2010-08-20 4:44 UTC (permalink / raw) To: Jan Djärv; +Cc: Andreas Schwab, Stefan Monnier, emacs-devel Jan Djärv <jan.h.d@swipnet.se> writes: > It is no fun fixing bugs and adding features and the just keep it to yourself. > Push has been discuraged on this list and other places several times. It has...? I'm thorougly confused... Isn't that like a basic part of any modern VCS...? -Miles -- Logic, n. The art of thinking and reasoning in strict accordance with the limitations and incapacities of the human misunderstanding. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 4:44 ` Locks on the Bzr repository Miles Bader @ 2010-08-20 4:52 ` Jason Rumney 2010-08-20 6:22 ` Jan Djärv 1 sibling, 0 replies; 198+ messages in thread From: Jason Rumney @ 2010-08-20 4:52 UTC (permalink / raw) To: emacs-devel On 20/08/2010 12:44, Miles Bader wrote: > Jan Djärv<jan.h.d@swipnet.se> writes: > >> It is no fun fixing bugs and adding features and the just keep it to yourself. >> Push has been discuraged on this list and other places several times. >> > It has...? > > I'm thorougly confused... > > Isn't that like a basic part of any modern VCS...? > Whether it is dicouraged or not, it doesn't solve the problem of bzr locks being left behind after network problems and other issues, nor does it solve the problem of sftp taking too long to commit/push small changes. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 4:44 ` Locks on the Bzr repository Miles Bader 2010-08-20 4:52 ` Jason Rumney @ 2010-08-20 6:22 ` Jan Djärv 1 sibling, 0 replies; 198+ messages in thread From: Jan Djärv @ 2010-08-20 6:22 UTC (permalink / raw) To: Miles Bader; +Cc: Andreas Schwab, Stefan Monnier, emacs-devel Miles Bader skrev 2010-08-20 06.44: > Jan Djärv<jan.h.d@swipnet.se> writes: >> It is no fun fixing bugs and adding features and the just keep it to yourself. >> Push has been discuraged on this list and other places several times. > > It has...? > > I'm thorougly confused... > > Isn't that like a basic part of any modern VCS...? > It can be modern but still full of bugs and with performance problems. Jan D. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 15:52 ` Andreas Schwab 2010-08-19 16:07 ` Jan Djärv @ 2010-08-19 16:26 ` Eli Zaretskii 2010-08-19 16:54 ` Andreas Schwab 1 sibling, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-19 16:26 UTC (permalink / raw) To: Andreas Schwab; +Cc: monnier, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Date: Thu, 19 Aug 2010 17:52:53 +0200 > Cc: emacs-devel@gnu.org > > Stefan Monnier <monnier@iro.umontreal.ca> writes: > > > If that's indeed the culprit, I think it's a misfeature of Bzr, but at > > least we can workaround it by using "bzr commit -m <...>", which I would > > then *strongly* recommend. > > Even better: use an unbound branch. How would this help? No matter what you do in an unbound branch, you eventually need to push or merge, at which time you will have the same problem. What am I missing? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 16:26 ` Eli Zaretskii @ 2010-08-19 16:54 ` Andreas Schwab 0 siblings, 0 replies; 198+ messages in thread From: Andreas Schwab @ 2010-08-19 16:54 UTC (permalink / raw) To: Eli Zaretskii; +Cc: monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Andreas Schwab <schwab@linux-m68k.org> >> Date: Thu, 19 Aug 2010 17:52:53 +0200 >> Cc: emacs-devel@gnu.org >> >> Stefan Monnier <monnier@iro.umontreal.ca> writes: >> >> > If that's indeed the culprit, I think it's a misfeature of Bzr, but at >> > least we can workaround it by using "bzr commit -m <...>", which I would >> > then *strongly* recommend. >> >> Even better: use an unbound branch. > > How would this help? No matter what you do in an unbound branch, you > eventually need to push or merge, at which time you will have the same > problem. What am I missing? It won't improve the actual transfer of the commits, but it lets you review before you push. 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] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 15:40 Locks on the Bzr repository Stefan Monnier 2010-08-19 15:52 ` Andreas Schwab @ 2010-08-19 16:12 ` Jason Rumney 2010-08-19 16:43 ` Dan Nicolaescu 2010-08-19 16:24 ` Eli Zaretskii ` (2 subsequent siblings) 4 siblings, 1 reply; 198+ messages in thread From: Jason Rumney @ 2010-08-19 16:12 UTC (permalink / raw) To: emacs-devel On 19/8/2010 11:40 PM, Stefan Monnier wrote: > A couple times now, I've had the following kind of message when trying > to commit: > > Unable to obtain lock sftp://bzr.sv.gnu.org/srv/bzr/emacs/trunk/.bzr/branch/lock > held by jasonr@gnu.org on host wanchan [process #23356] > locked 28 minutes, 51 seconds ago > > The first time I thought it was a stale lock so I broke it, but then it > came right back, so I suspect it might be due to something else. > Could it be that bzr grabs the lock when you do "bzr commit" and keep it > held for as long as you're editing the commit message? I don't think editing the commit message is the problem, but the fact that to do anything with the master repository involves downloading and/or uploading at least 4MB of data, on a connection which fluctuates between 0 and 100kb/s, mostly in the 6 - 20kb/s range. > If that's indeed the culprit, I think it's a misfeature of Bzr, but at > least we can workaround it by using "bzr commit -m<...>", which I would > then *strongly* recommend. I think the misfeature is that we are still using sftp access, which might be OK for users in well connected parts of the world like US, Europe and Japan, but from here is unusably slow. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 16:12 ` Jason Rumney @ 2010-08-19 16:43 ` Dan Nicolaescu 2010-08-19 16:48 ` Jason Rumney 0 siblings, 1 reply; 198+ messages in thread From: Dan Nicolaescu @ 2010-08-19 16:43 UTC (permalink / raw) To: Jason Rumney; +Cc: emacs-devel Jason Rumney <jasonr@gnu.org> writes: > On 19/8/2010 11:40 PM, Stefan Monnier wrote: >> A couple times now, I've had the following kind of message when trying >> to commit: >> >> Unable to obtain lock sftp://bzr.sv.gnu.org/srv/bzr/emacs/trunk/.bzr/branch/lock >> held by jasonr@gnu.org on host wanchan [process #23356] >> locked 28 minutes, 51 seconds ago >> >> The first time I thought it was a stale lock so I broke it, but then it >> came right back, so I suspect it might be due to something else. >> Could it be that bzr grabs the lock when you do "bzr commit" and keep it >> held for as long as you're editing the commit message? > > I don't think editing the commit message is the problem, but the fact > that to do anything with the master repository involves downloading > and/or uploading at least 4MB of data, on a connection which > fluctuates between 0 and 100kb/s, mostly in the 6 - 20kb/s range. > >> If that's indeed the culprit, I think it's a misfeature of Bzr, but at >> least we can workaround it by using "bzr commit -m<...>", which I would >> then *strongly* recommend. > > I think the misfeature is that we are still using sftp access, which > might be OK for users in well connected parts of the world like US, > Europe and Japan, but from here is unusably slow. I have seen the lock problem happen when using -m<...> and on very well connected machine, so it's might be just bzr being bzr. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 16:43 ` Dan Nicolaescu @ 2010-08-19 16:48 ` Jason Rumney 2010-08-19 17:08 ` Dan Nicolaescu 0 siblings, 1 reply; 198+ messages in thread From: Jason Rumney @ 2010-08-19 16:48 UTC (permalink / raw) To: Dan Nicolaescu; +Cc: emacs-devel On 20/8/2010 12:43 AM, Dan Nicolaescu wrote: > I have seen the lock problem happen when using -m<...> and on very > well connected machine, so it's might be just bzr being bzr. When you say you've seen the problem, is it your own locks you are seeing, or locks held by someone else? Normally you would only see other peoples' locks unless you are trying to multitask on the same tree, or an operation got interrupted and the lock really is stale. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 16:48 ` Jason Rumney @ 2010-08-19 17:08 ` Dan Nicolaescu 2010-08-19 17:32 ` Jason Rumney 0 siblings, 1 reply; 198+ messages in thread From: Dan Nicolaescu @ 2010-08-19 17:08 UTC (permalink / raw) To: Jason Rumney; +Cc: emacs-devel Jason Rumney <jasonr@gnu.org> writes: > On 20/8/2010 12:43 AM, Dan Nicolaescu wrote: >> I have seen the lock problem happen when using -m<...> and on very >> well connected machine, so it's might be just bzr being bzr. > > When you say you've seen the problem, is it your own locks you are > seeing, or locks held by someone else? Normally you would only see My own locks. Sometimes commits fail (in a up to date tree!) after a long time, and then I have to remove my own locks to try again. And it's not even that seldom: $ grep -c break.lock .bzr.log* .bzr.log:3 .bzr.log.old:45 ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 17:08 ` Dan Nicolaescu @ 2010-08-19 17:32 ` Jason Rumney 0 siblings, 0 replies; 198+ messages in thread From: Jason Rumney @ 2010-08-19 17:32 UTC (permalink / raw) To: Dan Nicolaescu; +Cc: emacs-devel On 20/8/2010 1:08 AM, Dan Nicolaescu wrote: > My own locks. > Sometimes commits fail (in a up to date tree!) after a long time, and > then I have to remove my own locks to try again. This happened to me too - I had to remove my own locks, despite the stack trace from the earlier failure suggesting that my locks had already been removed (by Stefan I presume). ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 15:40 Locks on the Bzr repository Stefan Monnier 2010-08-19 15:52 ` Andreas Schwab 2010-08-19 16:12 ` Jason Rumney @ 2010-08-19 16:24 ` Eli Zaretskii 2010-08-19 17:29 ` Jason Rumney 2010-08-19 16:26 ` Jay Belanger 2010-08-21 20:36 ` bzr send workflow (Was: Locks on the Bzr repository) Bojan Nikolic 4 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-19 16:24 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Thu, 19 Aug 2010 17:40:29 +0200 > > Could it be that bzr grabs the lock when you do "bzr commit" and keep it > held for as long as you're editing the commit message? Maybe so, but why would it take Jason 28 minutes and 50-odd seconds to edit a commit message? I suspect the culprit is network traffic, but Jason should be able to tell more by looking at his .bzr.log file, where each operation is logged together with its timing. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 16:24 ` Eli Zaretskii @ 2010-08-19 17:29 ` Jason Rumney 2010-08-19 21:42 ` Stefan Monnier 0 siblings, 1 reply; 198+ messages in thread From: Jason Rumney @ 2010-08-19 17:29 UTC (permalink / raw) To: emacs-devel On 20/8/2010 12:24 AM, Eli Zaretskii wrote: >> From: Stefan Monnier<monnier@iro.umontreal.ca> >> Date: Thu, 19 Aug 2010 17:40:29 +0200 >> >> Could it be that bzr grabs the lock when you do "bzr commit" and keep it >> held for as long as you're editing the commit message? > Maybe so, but why would it take Jason 28 minutes and 50-odd seconds to > edit a commit message? > > I suspect the culprit is network traffic, but Jason should be able to > tell more by looking at his .bzr.log file, where each operation is > logged together with its timing. Here are the commits I performed today: The first one went quite smoothly but took about 8 minutes. Thu 2010-08-19 22:50:16 +0800 0.058 bazaar version: 2.1.1 0.058 bzr arguments: [u'commit', u'-m', u"(w32_wnd_proc): Don't check context before initializing.\n", u'src/ChangeLog', u'src/w32fns.c'] 0.086 looking for plugins in /home/jasonr/.bazaar/plugins 0.086 looking for plugins in /usr/lib/python2.6/dist-packages/bzrlib/plugins 0.159 encoding stdout as osutils.get_user_encoding() 'UTF-8' 0.225 opening working tree '/home/jasonr/bzr/emacs/trunk' 0.303 ssh implementation is OpenSSH 28.204 preparing to commit [22809] 2010-08-19 22:51:09.255 INFO: Committing to: sftp://jasonr@bzr.savannah.gnu.org/srv/bzr/emacs/trunk/ 52.688 Selecting files for commit with filter [u'src/ChangeLog', u'src/w32fns.c'] [22809] 2010-08-19 22:51:09.326 INFO: modified src/ChangeLog [22809] 2010-08-19 22:51:09.344 INFO: modified src/w32fns.c 52.990 Using fetch logic to copy between CHKInventoryRepository('file:///home/jasonr/bzr/emacs/.bzr/repository/')(RepositoryFormat2a()) and CHKInventoryRepository('sftp://jasonr@bzr.savannah.gnu.org/srv/bzr/emacs/.bzr/repository/')(RepositoryFormat2a()) 52.990 fetch up to rev {jasonr@gnu.org-20100819145109-17tqfx1uylo95ras} [22809] 2010-08-19 22:58:21.431 INFO: Committed revision 101137. 487.501 return code 0 The second attempt failed, perhaps due to Stefan breaking the lock (as it failed in unlock self.confirm): Thu 2010-08-19 23:07:28 +0800 0.052 bazaar version: 2.1.1 0.053 bzr arguments: [u'commit', u'-m', u'(set_frame_menubar): Remove call to undefined function.\n', u'src/ChangeLog', u'src/w32menu.c'] 0.084 looking for plugins in /home/jasonr/.bazaar/plugins 0.085 looking for plugins in /usr/lib/python2.6/dist-packages/bzrlib/plugins 0.246 encoding stdout as osutils.get_user_encoding() 'UTF-8' 0.301 opening working tree '/home/jasonr/bzr/emacs/trunk' 0.606 ssh implementation is OpenSSH 29.123 preparing to commit [23356] 2010-08-19 23:08:28.093 INFO: Committing to: sftp://jasonr@bzr.savannah.gnu.org/srv/bzr/emacs/trunk/ 59.322 Selecting files for commit with filter [u'src/ChangeLog', u'src/w32menu.c'] [23356] 2010-08-19 23:08:28.202 INFO: modified src/ChangeLog [23356] 2010-08-19 23:08:28.225 INFO: modified src/w32menu.c 59.631 Using fetch logic to copy between CHKInventoryRepository('file:///home/jasonr/bzr/emacs/.bzr/repository/')(RepositoryFormat2a()) and CHKInventoryRepository('sftp://jasonr@bzr.savannah.gnu.org/srv/bzr/emacs/.bzr/repository/')(RepositoryFormat2a()) 59.631 fetch up to rev {jasonr@gnu.org-20100819150828-w2hw9ic7u7z9hfqp} 470.146 Raising exception with args ('Server connection dropped: ',) 470.146 Error suppressed by only_raises: 470.164 Traceback (most recent call last): File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 222, in wrapped return unbound(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 319, in unlock self.confirm() File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 415, in confirm info = self.peek() File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 438, in peek info = self._read_info_file(self._held_info_path) File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 428, in _read_info_file return self._parse_info(self.transport.get_bytes(path)) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 435, in get_bytes f = self.get(relpath) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 431, in get failure_exc=errors.ReadError) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 721, in _translate_io_exception raise e SSHException: Server connection dropped: 470.167 Error suppressed by only_raises: 470.208 Traceback (most recent call last): File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 222, in wrapped return unbound(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 319, in unlock self.confirm() File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 415, in confirm info = self.peek() File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 438, in peek info = self._read_info_file(self._held_info_path) File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 428, in _read_info_file return self._parse_info(self.transport.get_bytes(path)) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 435, in get_bytes f = self.get(relpath) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 425, in get f = self._get_sftp().file(path, mode='rb') File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 245, in open t, msg = self._request(CMD_OPEN, filename, imode, attrblock) File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 627, in _request num = self._async_request(type(None), t, *arg) File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 649, in _async_request self._send_packet(t, str(msg)) File "/usr/lib/pymodules/python2.6/paramiko/sftp.py", line 172, in _send_packet self._write_all(out) File "/usr/lib/pymodules/python2.6/paramiko/sftp.py", line 136, in _write_all n = self.sock.send(out) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/ssh.py", line 194, in send return self.__socket.send(data) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/ssh.py", line 665, in send return os.write(self.proc.stdin.fileno(), data) OSError: [Errno 32] Broken pipe 470.313 Traceback (most recent call last): File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line 853, in exception_to_return_code return the_callable(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line 1055, in run_bzr ret = run(*run_argv) File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line 661, in run_argv_aliases return self.run_direct(**all_cmd_args) File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line 665, in run_direct return self._operation.run_simple(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/cleanup.py", line 122, in run_simple self.cleanups, self.func, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/cleanup.py", line 156, in _do_with_cleanups result = func(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/builtins.py", line 3138, in run exclude=safe_relpath_files(tree, exclude)) File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 194, in write_locked result = unbound(self, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/workingtree_4.py", line 197, in commit result = WorkingTree3.commit(self, message, revprops, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 194, in write_locked result = unbound(self, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/mutabletree.py", line 225, in commit *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/commit.py", line 257, in commit possible_master_transports=possible_master_transports) File "/usr/lib/python2.6/dist-packages/bzrlib/cleanup.py", line 118, in run self.cleanups, self.func, self, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/cleanup.py", line 156, in _do_with_cleanups result = func(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/commit.py", line 420, in _commit self.branch.repository, new_revno, self.rev_id) File "/usr/lib/python2.6/dist-packages/bzrlib/branch.py", line 924, in import_last_revision_info self.set_last_revision_info(revno, revid) File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 194, in write_locked result = unbound(self, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/branch.py", line 2508, in set_last_revision_info if self._get_append_revisions_only(): File "/usr/lib/python2.6/dist-packages/bzrlib/branch.py", line 2691, in _get_append_revisions_only value = self.get_config().get_user_option('append_revisions_only') File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 187, in get_user_option return self._get_user_option(option_name) File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 733, in _get_user_option value = source()._get_user_option(option_name) File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 406, in _get_user_option value = self._get_parser().get_value(section, option_name) File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 997, in _get_parser return self._config._get_configobj() File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 1505, in _get_configobj return ConfigObj(self._get_config_file(), encoding='utf-8') File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 1500, in _get_config_file return StringIO(self._transport.get_bytes(self._filename)) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 435, in get_bytes f = self.get(relpath) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 425, in get f = self._get_sftp().file(path, mode='rb') File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 245, in open t, msg = self._request(CMD_OPEN, filename, imode, attrblock) File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 627, in _request num = self._async_request(type(None), t, *arg) File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 649, in _async_request self._send_packet(t, str(msg)) File "/usr/lib/pymodules/python2.6/paramiko/sftp.py", line 172, in _send_packet self._write_all(out) File "/usr/lib/pymodules/python2.6/paramiko/sftp.py", line 136, in _write_all n = self.sock.send(out) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/ssh.py", line 194, in send return self.__socket.send(data) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/ssh.py", line 665, in send return os.write(self.proc.stdin.fileno(), data) OSError: [Errno 32] Broken pipe 470.314 return code 3 By the time I'd tried again and failed due to my own stale locks (I'm not sure why - did bzr revive them after the above failure?), and then an out of date tree; updated the tree with Stefan's changes; and finally committed successfully, it had taken me 50 minutes to commit a 2 line change! ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 17:29 ` Jason Rumney @ 2010-08-19 21:42 ` Stefan Monnier 2010-08-20 9:06 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Stefan Monnier @ 2010-08-19 21:42 UTC (permalink / raw) To: Jason Rumney; +Cc: emacs-devel > The second attempt failed, perhaps due to Stefan breaking the lock (as it > failed in unlock self.confirm): My breaking someone else's log happened a few days ago (can't remember whose it was, sorry), so it's not the cause of this particular log. > By the time I'd tried again and failed due to my own stale locks (I'm not > sure why - did bzr revive them after the above failure?), and then an out of So, IIUC the problem is that Bzr failed for some unknown reason and it didn't bother to release the locks it had. Sounds like a bug (indeed, Bzr also fails to release locks when you interrupt it via C-c, which is also a bug in my book). Stefan ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 21:42 ` Stefan Monnier @ 2010-08-20 9:06 ` Eli Zaretskii 2010-08-21 9:37 ` Stefan Monnier 0 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-20 9:06 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel, jasonr > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Thu, 19 Aug 2010 23:42:54 +0200 > Cc: emacs-devel@gnu.org > > So, IIUC the problem is that Bzr failed for some unknown reason and it > didn't bother to release the locks it had. Sounds like a bug (indeed, > Bzr also fails to release locks when you interrupt it via C-c, which is > also a bug in my book). How about submitting a bug report to Bazaar developers? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-20 9:06 ` Eli Zaretskii @ 2010-08-21 9:37 ` Stefan Monnier 0 siblings, 0 replies; 198+ messages in thread From: Stefan Monnier @ 2010-08-21 9:37 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel, jasonr >> So, IIUC the problem is that Bzr failed for some unknown reason and it >> didn't bother to release the locks it had. Sounds like a bug (indeed, >> Bzr also fails to release locks when you interrupt it via C-c, which is >> also a bug in my book). > How about submitting a bug report to Bazaar developers? It was already reported two years ago by someone else https://bugs.launchpad.net/bzr/+bug/257217 Stefan ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: Locks on the Bzr repository 2010-08-19 15:40 Locks on the Bzr repository Stefan Monnier ` (2 preceding siblings ...) 2010-08-19 16:24 ` Eli Zaretskii @ 2010-08-19 16:26 ` Jay Belanger 2010-08-21 20:36 ` bzr send workflow (Was: Locks on the Bzr repository) Bojan Nikolic 4 siblings, 0 replies; 198+ messages in thread From: Jay Belanger @ 2010-08-19 16:26 UTC (permalink / raw) To: emacs-devel; +Cc: jay.p.belanger Stefan Monnier <monnier@iro.umontreal.ca> writes: ... > If that's indeed the culprit, I think it's a misfeature of Bzr, but at > least we can workaround it by using "bzr commit -m <...>", which I would > then *strongly* recommend. I assume that "bzr commit -F ..." would work as well... ^ permalink raw reply [flat|nested] 198+ messages in thread
* bzr send workflow (Was: Locks on the Bzr repository) 2010-08-19 15:40 Locks on the Bzr repository Stefan Monnier ` (3 preceding siblings ...) 2010-08-19 16:26 ` Jay Belanger @ 2010-08-21 20:36 ` Bojan Nikolic 2010-08-21 22:05 ` bzr send workflow Stefan Monnier 2010-08-22 7:56 ` bzr send workflow (Was: Locks on the Bzr repository) Stephen J. Turnbull 4 siblings, 2 replies; 198+ messages in thread From: Bojan Nikolic @ 2010-08-21 20:36 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Hi All, As already much discussed, the problems people are experiencing are basically due to many people trying to write (in some way) to the same sftp://bzr.sv.gnu.org/srv/bzr/emacs/trunk/ location via the dumb sftp protocol. There are many ways around this, but one I did not see mentioned (maybe I missed it) is using the bzr send command to send merge "bundles" via email. This is the way bzr development itself worked while I followed it, and I've used it on some of my own projects too. I was always very impressed how well it worked. Since maybe I missed the discussion on this, I just wanted to ask if this workflow has been considered and rejected? If not, I'd be happy to offer a more detailed summary of how it works and the advantages. I imagine one possible objection to this workflow has/will be the unnecessary complication of merge history. One possible work around would be an option to the merge bundle which basically indicated that it should be rebased to the current trunk tip if this can safely be done. If people are interested I would be happy to provide more details, at least as far as I understand them. Best, Bojan -- Bojan Nikolic || http://www.bnikolic.co.uk ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-21 20:36 ` bzr send workflow (Was: Locks on the Bzr repository) Bojan Nikolic @ 2010-08-21 22:05 ` Stefan Monnier 2010-08-21 22:48 ` Bojan Nikolic ` (3 more replies) 2010-08-22 7:56 ` bzr send workflow (Was: Locks on the Bzr repository) Stephen J. Turnbull 1 sibling, 4 replies; 198+ messages in thread From: Stefan Monnier @ 2010-08-21 22:05 UTC (permalink / raw) To: Bojan Nikolic; +Cc: emacs-devel > Since maybe I missed the discussion on this, I just wanted to ask if > this workflow has been considered and rejected? If not, I'd be happy to > offer a more detailed summary of how it works and the advantages. Before we can switch to such a system, we need to get rid of the ChangeLog files (which are otherwise a constant source of spurious conflicts which make such a workflow impractical). I haven't dared to enter this discussion yet. Stefan ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-21 22:05 ` bzr send workflow Stefan Monnier @ 2010-08-21 22:48 ` Bojan Nikolic 2010-08-22 5:26 ` No ChangeLog's (was: bzr send workflow) Eli Zaretskii ` (2 subsequent siblings) 3 siblings, 0 replies; 198+ messages in thread From: Bojan Nikolic @ 2010-08-21 22:48 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > Before we can switch to such a system, we need to get rid of the > ChangeLog files (which are otherwise a constant source of spurious > conflicts which make such a workflow impractical). I haven't dared to > enter this discussion yet. I see. I'm sure this will not satisfy everybody, but the --gnu-changelog option to bzr log attempts to produce something fairly close to the ChangeLog files, at least in format. For example: bzr log -n 1 -r -10.. --gnu-changelog lisp/ gives a reasonable summary of last 10 changes in lisp directory. Best, Bojan -- Bojan Nikolic || http://www.bnikolic.co.uk ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: No ChangeLog's (was: bzr send workflow) 2010-08-21 22:05 ` bzr send workflow Stefan Monnier 2010-08-21 22:48 ` Bojan Nikolic @ 2010-08-22 5:26 ` Eli Zaretskii 2010-08-22 8:11 ` Stephen J. Turnbull 2010-08-22 12:29 ` bzr send workflow Andreas Schwab 2010-08-25 15:03 ` Andy Wingo 3 siblings, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-22 5:26 UTC (permalink / raw) To: Stefan Monnier; +Cc: bojan, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Sun, 22 Aug 2010 00:05:33 +0200 > Cc: emacs-devel@gnu.org > > > Since maybe I missed the discussion on this, I just wanted to ask if > > this workflow has been considered and rejected? If not, I'd be happy to > > offer a more detailed summary of how it works and the advantages. > > Before we can switch to such a system, we need to get rid of the > ChangeLog files (which are otherwise a constant source of spurious > conflicts which make such a workflow impractical). I haven't dared to > enter this discussion yet. Do we have the necessary infrastructure for ditching ChangeLog files? Working on a complex feature could take quite some time, perhaps more than a single Emacs session. With ChangeLog's, one can keep the log of changes in a disk file, which is persistent, and then reuse that log at commit time. What do we do instead when there are no ChangeLog files? Are there any commands that let us edit log messages for future commits, keep their record, and use them conveniently when the time comes to commit? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: No ChangeLog's (was: bzr send workflow) 2010-08-22 5:26 ` No ChangeLog's (was: bzr send workflow) Eli Zaretskii @ 2010-08-22 8:11 ` Stephen J. Turnbull 2010-08-22 8:58 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 8:11 UTC (permalink / raw) To: Eli Zaretskii; +Cc: bojan, Stefan Monnier, emacs-devel Eli Zaretskii writes: > What do we do instead when there are no ChangeLog files? You keep a temporary ChangeLog file, just not under version control. More complex workflows could use the "pipeline" or "loom" plugins, which I think have features for keeping track of log messages while development proceeds. > Are there any commands that let us edit log messages for future > commits, keep their record, and use them conveniently when the time > comes to commit? This sounds like job for Emacs to me. The basic workflow for a commit is 1. move relevant log entry to .msg 2. bzr commit --file=.msg # assumes commitables already bzr add'ed 3. rm .msg I suspect that a simple command that 1. looks for a ChangeLog if not found, edits .msg directly, then does 2 and 3 of the basic workflow 2. marks the top log entry 3. asks for confirmation y/n if not confirmed, drop into a recursive edit allowing user to mark a different log entry or perhaps edit it, then confirm with C-c C-c 4. do 1, 2, and 3 of the basic workflow above might be a good UI that could even be added to vc.el. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: No ChangeLog's (was: bzr send workflow) 2010-08-22 8:11 ` Stephen J. Turnbull @ 2010-08-22 8:58 ` Eli Zaretskii 0 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-22 8:58 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: bojan, monnier, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, > bojan@bnikolic.co.uk, > emacs-devel@gnu.org > Date: Sun, 22 Aug 2010 17:11:15 +0900 > > > Are there any commands that let us edit log messages for future > > commits, keep their record, and use them conveniently when the time > > comes to commit? > > This sounds like job for Emacs to me. Yes, of course. I was just asking if we already have that somewhere. log-edit.el doesn't, unless I missed something. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-21 22:05 ` bzr send workflow Stefan Monnier 2010-08-21 22:48 ` Bojan Nikolic 2010-08-22 5:26 ` No ChangeLog's (was: bzr send workflow) Eli Zaretskii @ 2010-08-22 12:29 ` Andreas Schwab 2010-08-22 13:14 ` Eli Zaretskii 2010-08-23 4:24 ` Richard Stallman 2010-08-25 15:03 ` Andy Wingo 3 siblings, 2 replies; 198+ messages in thread From: Andreas Schwab @ 2010-08-22 12:29 UTC (permalink / raw) To: Stefan Monnier; +Cc: Bojan Nikolic, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > Before we can switch to such a system, we need to get rid of the > ChangeLog files (which are otherwise a constant source of spurious > conflicts which make such a workflow impractical). Pretty much a non-issue with git-merge-changelog (from gnulib). 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] 198+ messages in thread
* Re: bzr send workflow 2010-08-22 12:29 ` bzr send workflow Andreas Schwab @ 2010-08-22 13:14 ` Eli Zaretskii 2010-08-22 14:52 ` Andreas Schwab 2010-08-23 4:24 ` Richard Stallman 1 sibling, 1 reply; 198+ messages in thread From: Eli Zaretskii @ 2010-08-22 13:14 UTC (permalink / raw) To: Andreas Schwab; +Cc: bojan, monnier, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Date: Sun, 22 Aug 2010 14:29:00 +0200 > Cc: Bojan Nikolic <bojan@bnikolic.co.uk>, emacs-devel@gnu.org > > Stefan Monnier <monnier@iro.umontreal.ca> writes: > > > Before we can switch to such a system, we need to get rid of the > > ChangeLog files (which are otherwise a constant source of spurious > > conflicts which make such a workflow impractical). > > Pretty much a non-issue with git-merge-changelog (from gnulib). You mean, use it with bzr via the extmerge plug-in? And btw, it sounds a simple job to write an Emacs command that would resolve such conflicts in a ChangeLog file and commit the result. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-22 13:14 ` Eli Zaretskii @ 2010-08-22 14:52 ` Andreas Schwab 0 siblings, 0 replies; 198+ messages in thread From: Andreas Schwab @ 2010-08-22 14:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: bojan, monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Andreas Schwab <schwab@linux-m68k.org> >> Date: Sun, 22 Aug 2010 14:29:00 +0200 >> Cc: Bojan Nikolic <bojan@bnikolic.co.uk>, emacs-devel@gnu.org >> >> Stefan Monnier <monnier@iro.umontreal.ca> writes: >> >> > Before we can switch to such a system, we need to get rid of the >> > ChangeLog files (which are otherwise a constant source of spurious >> > conflicts which make such a workflow impractical). >> >> Pretty much a non-issue with git-merge-changelog (from gnulib). > > You mean, use it with bzr via the extmerge plug-in? I've only used it with git so far. 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] 198+ messages in thread
* Re: bzr send workflow 2010-08-22 12:29 ` bzr send workflow Andreas Schwab 2010-08-22 13:14 ` Eli Zaretskii @ 2010-08-23 4:24 ` Richard Stallman 2010-08-23 5:11 ` Eli Zaretskii 1 sibling, 1 reply; 198+ messages in thread From: Richard Stallman @ 2010-08-23 4:24 UTC (permalink / raw) To: Andreas Schwab; +Cc: bojan, monnier, emacs-devel There is a new GNU package called vc-changelog. Does it address the issues for Emacs concerning ChangeLog files and bzr? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-23 4:24 ` Richard Stallman @ 2010-08-23 5:11 ` Eli Zaretskii 2010-08-23 5:30 ` Eli Zaretskii 2010-08-24 4:32 ` Richard Stallman 0 siblings, 2 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-23 5:11 UTC (permalink / raw) To: rms; +Cc: emacs-devel > From: Richard Stallman <rms@gnu.org> > Date: Mon, 23 Aug 2010 00:24:56 -0400 > Cc: bojan@bnikolic.co.uk, monnier@iro.umontreal.ca, emacs-devel@gnu.org > Reply-To: rms@gnu.org > > There is a new GNU package called vc-changelog. > Does it address the issues for Emacs concerning ChangeLog files > and bzr? Where do I find this package? It's not in the GNU Software Directory. The only one that comes close is vc-dwim -- did you mean this one? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-23 5:11 ` Eli Zaretskii @ 2010-08-23 5:30 ` Eli Zaretskii 2010-08-24 4:32 ` Richard Stallman 1 sibling, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-23 5:30 UTC (permalink / raw) To: rms, emacs-devel > From: Eli Zaretskii <eliz@gnu.org> > Date: Mon, 23 Aug 2010 01:11:04 -0400 > Cc: emacs-devel@gnu.org > Reply-To: Eli Zaretskii <eliz@gnu.org> > > > From: Richard Stallman <rms@gnu.org> > > Date: Mon, 23 Aug 2010 00:24:56 -0400 > > Cc: bojan@bnikolic.co.uk, monnier@iro.umontreal.ca, emacs-devel@gnu.org > > Reply-To: rms@gnu.org > > > > There is a new GNU package called vc-changelog. > > Does it address the issues for Emacs concerning ChangeLog files > > and bzr? > > Where do I find this package? It's not in the GNU Software > Directory. The only one that comes close is vc-dwim -- did you mean > this one? I guess you meant vc-chlog that is part of vc-dwim. FWIW, I don't think it addresses the problems raised in this thread regarding the ChangeLog files. Those problems are due to bzr (and most if not all other VCSs) not being smart enough when merging ChangeLog files. This results in conflicts when merging changes, whose resolution is a mechanical job of removing the conflict markers and moving the log entries to the top of the file. It shouldn't be hard to write an Emacs command to resolve these conflicts. But it would be best if bzr itself could merge ChangeLog files without producing the conflicts in the first place. vc-chlog does not try to deal with that. Its main goal seems to be to make it easier to prepare ChangeLog entries before you are going to commit a changeset. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-23 5:11 ` Eli Zaretskii 2010-08-23 5:30 ` Eli Zaretskii @ 2010-08-24 4:32 ` Richard Stallman 1 sibling, 0 replies; 198+ messages in thread From: Richard Stallman @ 2010-08-24 4:32 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Where do I find this package? It's not in the GNU Software Directory. Perhaps it has not had time to be entered. It became a GNU package last week. Simon Josefsson <simon@josefsson.org> can tell you more about it. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-21 22:05 ` bzr send workflow Stefan Monnier ` (2 preceding siblings ...) 2010-08-22 12:29 ` bzr send workflow Andreas Schwab @ 2010-08-25 15:03 ` Andy Wingo 2010-08-25 19:18 ` Juanma Barranquero 3 siblings, 1 reply; 198+ messages in thread From: Andy Wingo @ 2010-08-25 15:03 UTC (permalink / raw) To: Stefan Monnier; +Cc: Bojan Nikolic, emacs-devel Greets, On Sat 21 Aug 2010 18:05, Stefan Monnier <monnier@iro.umontreal.ca> writes: > Before we can switch to such a system, we need to get rid of the > ChangeLog files (which are otherwise a constant source of spurious > conflicts which make such a workflow impractical). I haven't dared to > enter this discussion yet. That I am aware of, you have two good options: * Keep writing changelogs, pasting them into the commit logs as you do already, and add special support to merging changelogs (e.g.: git-merge-changelog from gnulib, perhaps ported to bzr if you stay with bzr) * Stop writing changelogs, and generate changelogs via a dist-hook. Guile does this now, using gitlog-to-changelog from gnulib. Cheers, Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-25 15:03 ` Andy Wingo @ 2010-08-25 19:18 ` Juanma Barranquero 2010-08-26 17:11 ` Chong Yidong 0 siblings, 1 reply; 198+ messages in thread From: Juanma Barranquero @ 2010-08-25 19:18 UTC (permalink / raw) To: Andy Wingo; +Cc: Bojan Nikolic, Stefan Monnier, emacs-devel On Wed, Aug 25, 2010 at 17:03, Andy Wingo <wingo@pobox.com> wrote: > * Stop writing changelogs, and generate changelogs via a > dist-hook. Guile does this now, using gitlog-to-changelog from > gnulib. At this moment, the quality of our ChangeLog entries is quite superior to the quality of commit log messages, so that'd be a net loss. I'm no big fan of keeping ChangeLogs *and* detailed commit logs, but I'm even less fan of non-modifiable commit logs. Juanma ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-25 19:18 ` Juanma Barranquero @ 2010-08-26 17:11 ` Chong Yidong 2010-08-26 17:26 ` Juanma Barranquero 2010-08-27 5:20 ` Stephen J. Turnbull 0 siblings, 2 replies; 198+ messages in thread From: Chong Yidong @ 2010-08-26 17:11 UTC (permalink / raw) To: Juanma Barranquero; +Cc: Andy Wingo, Bojan Nikolic, Stefan Monnier, emacs-devel Juanma Barranquero <lekktu@gmail.com> writes: > On Wed, Aug 25, 2010 at 17:03, Andy Wingo <wingo@pobox.com> wrote: > >> * Stop writing changelogs, and generate changelogs via a >> dist-hook. Guile does this now, using gitlog-to-changelog from >> gnulib. > > At this moment, the quality of our ChangeLog entries is quite superior > to the quality of commit log messages, so that'd be a net loss. > > I'm no big fan of keeping ChangeLogs *and* detailed commit logs, but > I'm even less fan of non-modifiable commit logs. Anyway, this should be a non-issue for Emacs users. Just write a ChangeLog in the usual way; then, before committing, do C-c C-a to pull it into the *VC-log* buffer and edit as necessary. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-26 17:11 ` Chong Yidong @ 2010-08-26 17:26 ` Juanma Barranquero 2010-08-27 5:20 ` Stephen J. Turnbull 1 sibling, 0 replies; 198+ messages in thread From: Juanma Barranquero @ 2010-08-26 17:26 UTC (permalink / raw) To: Chong Yidong; +Cc: Andy Wingo, Bojan Nikolic, Stefan Monnier, emacs-devel On Thu, Aug 26, 2010 at 19:11, Chong Yidong <cyd@stupidchicken.com> wrote: > Anyway, this should be a non-issue for Emacs users. You're right. Should be. Juanma ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-26 17:11 ` Chong Yidong 2010-08-26 17:26 ` Juanma Barranquero @ 2010-08-27 5:20 ` Stephen J. Turnbull 2010-08-27 11:27 ` Wojciech Meyer 1 sibling, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-27 5:20 UTC (permalink / raw) To: Chong Yidong Cc: Andy Wingo, Juanma Barranquero, Bojan Nikolic, Stefan Monnier, emacs-devel Chong Yidong writes: > Anyway, this should be a non-issue for Emacs users. Just write a > ChangeLog in the usual way; then, before committing, do C-c C-a to > pull it into the *VC-log* buffer and edit as necessary. You're missing the point. Once you've done that, and committed, the log of that revision cannot be changed. That means that users of bzr must do some fancy footwork to ensure that the logs that are pushed are appropriate, or they must wait until the patch has been approved *including* ChangeLog to commit and push, or they need to pollute the history with revisions that simply fix up the ChangeLog. For people who use branches even for trivial one-commit work, the footwork needed is not at all fancy. For people who commit in a bound branch, it's highly discouraged, for the same reason rebasing public branches is discouraged -- the only option is a new commit that does nothing except fix the log. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-27 5:20 ` Stephen J. Turnbull @ 2010-08-27 11:27 ` Wojciech Meyer 0 siblings, 0 replies; 198+ messages in thread From: Wojciech Meyer @ 2010-08-27 11:27 UTC (permalink / raw) To: Stephen J. Turnbull Cc: Juanma Barranquero, Chong Yidong, emacs-devel, Bojan Nikolic, Stefan Monnier, Andy Wingo [-- Attachment #1: Type: text/plain, Size: 787 bytes --] Hi, Generally I would suggest two things for Change-logs: - if anybody plan to generate it from bzr log, then maybe keeping the old one is OK and prepending a new one. There would not be anything lost in this case (as suggested - quality of commit comments vs changelog) - now, we could tag textually commit messages, saying this is `commit' significant and should be put into Change-Log (or just keeping the revision numbers lists in separate place, this would be less appealing, change of vc, maintaining another file). The only drawback of using tagged commits, is that they might not reflect what really happened at *this* particular commit, otherwise it solves the problem (at least with ChangeLogs). Mine two cents (sorry about getting into the middle of discussion). Wojciech [-- Attachment #2: Type: text/html, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 198+ messages in thread
* bzr send workflow (Was: Locks on the Bzr repository) 2010-08-21 20:36 ` bzr send workflow (Was: Locks on the Bzr repository) Bojan Nikolic 2010-08-21 22:05 ` bzr send workflow Stefan Monnier @ 2010-08-22 7:56 ` Stephen J. Turnbull 2010-08-22 11:11 ` Lennart Borgman 2010-08-22 14:40 ` Bojan Nikolic 1 sibling, 2 replies; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-22 7:56 UTC (permalink / raw) To: Bojan Nikolic; +Cc: Stefan Monnier, emacs-devel Bojan Nikolic writes: > As already much discussed, the problems people are experiencing are > basically due to many people trying to write (in some way) to the > same sftp://bzr.sv.gnu.org/srv/bzr/emacs/trunk/ location via the > dumb sftp protocol. > > There are many ways around this, but one I did not see mentioned > (maybe I missed it) is using the bzr send command to send merge > "bundles" via email. This is the way bzr development itself worked > while I followed it, and I've used it on some of my own projects > too. I was always very impressed how well it worked. I don't think this helps much. The underlying problem for Emacs (and other bzr-based projects on Savannah) is that Savannah doesn't want to allow bzr+ssh until the Savannah admins understand the security implications. The Bazaar development workflow involves at least one separate server application not yet available on Savannah (the pqm Patch Queue Manager), and I can't imagine that installing that would be any easier than upgrading already installed software to use a smart server over ssh. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow (Was: Locks on the Bzr repository) 2010-08-22 7:56 ` bzr send workflow (Was: Locks on the Bzr repository) Stephen J. Turnbull @ 2010-08-22 11:11 ` Lennart Borgman 2010-08-22 13:44 ` bzr send workflow Miles Bader 2010-08-22 14:40 ` Bojan Nikolic 1 sibling, 1 reply; 198+ messages in thread From: Lennart Borgman @ 2010-08-22 11:11 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: Bojan Nikolic, Stefan Monnier, emacs-devel On Sun, Aug 22, 2010 at 9:56 AM, Stephen J. Turnbull <stephen@xemacs.org> wrote: > Bojan Nikolic writes: > > > As already much discussed, the problems people are experiencing are > > basically due to many people trying to write (in some way) to the > > same sftp://bzr.sv.gnu.org/srv/bzr/emacs/trunk/ location via the > > dumb sftp protocol. > > > > There are many ways around this, but one I did not see mentioned > > (maybe I missed it) is using the bzr send command to send merge > > "bundles" via email. This is the way bzr development itself worked > > while I followed it, and I've used it on some of my own projects > > too. I was always very impressed how well it worked. > > I don't think this helps much. The underlying problem for Emacs (and > other bzr-based projects on Savannah) is that Savannah doesn't want to > allow bzr+ssh until the Savannah admins understand the security > implications. The Bazaar development workflow involves at least one > separate server application not yet available on Savannah (the pqm > Patch Queue Manager), and I can't imagine that installing that would > be any easier than upgrading already installed software to use a smart > server over ssh. Is moving to Launchpad an option? ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-22 11:11 ` Lennart Borgman @ 2010-08-22 13:44 ` Miles Bader 0 siblings, 0 replies; 198+ messages in thread From: Miles Bader @ 2010-08-22 13:44 UTC (permalink / raw) To: emacs-devel Lennart Borgman <lennart.borgman@gmail.com> writes: >> I don't think this helps much. The underlying problem for Emacs (and >> other bzr-based projects on Savannah) is that Savannah doesn't want to >> allow bzr+ssh until the Savannah admins understand the security >> implications. > > Is moving to Launchpad an option? If we're going to stop using "something GNU" because of technical issues, it'd be far better to stop using bzr and stick with savannah, than stick with bzr and stop using savannah. The problems with bzr go far deeper than the protocol used to talk to the server. -miles -- A zen-buddhist walked into a pizza shop and said, "Make me one with everything." ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-22 7:56 ` bzr send workflow (Was: Locks on the Bzr repository) Stephen J. Turnbull 2010-08-22 11:11 ` Lennart Borgman @ 2010-08-22 14:40 ` Bojan Nikolic 2010-08-23 4:14 ` Stephen J. Turnbull 1 sibling, 1 reply; 198+ messages in thread From: Bojan Nikolic @ 2010-08-22 14:40 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: Stefan Monnier, emacs-devel "Stephen J. Turnbull" <stephen@xemacs.org> writes: > Bojan Nikolic writes: > > > As already much discussed, the problems people are experiencing are > > basically due to many people trying to write (in some way) to the > > same sftp://bzr.sv.gnu.org/srv/bzr/emacs/trunk/ location via the > > dumb sftp protocol. > > > > There are many ways around this, but one I did not see mentioned > > (maybe I missed it) is using the bzr send command to send merge > > "bundles" via email. This is the way bzr development itself worked > > while I followed it, and I've used it on some of my own projects > > too. I was always very impressed how well it worked. > > I don't think this helps much. The underlying problem for Emacs (and > other bzr-based projects on Savannah) is that Savannah doesn't want to > allow bzr+ssh until the Savannah admins understand the security > implications. The Bazaar development workflow involves at least one > separate server application not yet available on Savannah (the pqm > Patch Queue Manager), and I can't imagine that installing that would > be any easier than upgrading already installed software to use a smart > server over ssh. My idea was that in the first instance the bundles would be merged by (a select group of) people. These people would either have a fast connection to the bzr.sv.gnu.org, or even better, a login to the machine hosting this branch, in which case the merges could be done without any network traffic. It is a bit of an overhead but it takes only a few seconds to do a merge of bundle from Gnus. This has the additional benefit that most changes would have four eyes on them before being committed to the trunk. To reiterate the main benefit though: accepting "bzr send" bundles means that people on even the slowest connections can contribute easily and efficiently. I've used these satisfactorily over slow GPRS connections. Best, Bojan -- Bojan Nikolic || http://www.bnikolic.co.uk ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-22 14:40 ` Bojan Nikolic @ 2010-08-23 4:14 ` Stephen J. Turnbull 2010-08-23 5:33 ` Eli Zaretskii 0 siblings, 1 reply; 198+ messages in thread From: Stephen J. Turnbull @ 2010-08-23 4:14 UTC (permalink / raw) To: Bojan Nikolic; +Cc: Stefan Monnier, emacs-devel Bojan Nikolic writes: > My idea was that in the first instance the bundles would be merged > by (a select group of) people. Sure, and who do you mean by "people"? Presumably Stefan, Yidong, et al. I don't think that having Stefan merge Eli's changes is efficient use of anybody's time. Use of bundles might make contribution by occasional contributors more efficient, but I don't think it addresses the problem that some core developers are bottlenecking on bzr/Savannah. > To reiterate the main benefit though: accepting "bzr send" bundles > means that people on even the slowest connections can contribute > easily and efficiently. I've used these satisfactorily over slow > GPRS connections. AFAIK Stefan et al are already as willing to accept merge directives as any other form of patch. It wouldn't hurt to advertise that option, of course. But I really don't think it's a solution to the current bottleneck. ^ permalink raw reply [flat|nested] 198+ messages in thread
* Re: bzr send workflow 2010-08-23 4:14 ` Stephen J. Turnbull @ 2010-08-23 5:33 ` Eli Zaretskii 0 siblings, 0 replies; 198+ messages in thread From: Eli Zaretskii @ 2010-08-23 5:33 UTC (permalink / raw) To: Stephen J. Turnbull; +Cc: bojan, monnier, emacs-devel > From: "Stephen J. Turnbull" <stephen@xemacs.org> > Date: Mon, 23 Aug 2010 13:14:25 +0900 > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org > > I don't think that having Stefan merge Eli's changes is efficient > use of anybody's time. (and vice versa) I agree completely. > AFAIK Stefan et al are already as willing to accept merge directives > as any other form of patch. It wouldn't hurt to advertise that > option, of course. But I really don't think it's a solution to the > current bottleneck. 100% agreement. Unless we have a clerk whose job is committing bundles sent by others, and unless that clerk is on a very fast link, this suggestion will not resolve the root cause of the problems being discussed here. ^ permalink raw reply [flat|nested] 198+ messages in thread
end of thread, other threads:[~2010-09-03 13:58 UTC | newest] Thread overview: 198+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-08-19 15:40 Locks on the Bzr repository Stefan Monnier 2010-08-19 15:52 ` Andreas Schwab 2010-08-19 16:07 ` Jan Djärv 2010-08-19 16:36 ` Andreas Schwab 2010-08-19 20:06 ` Jan Djärv 2010-08-19 21:49 ` Andreas Schwab 2010-08-20 6:22 ` Jan Djärv 2010-08-20 7:40 ` Andreas Schwab 2010-08-20 8:57 ` Eli Zaretskii 2010-08-20 9:13 ` Andreas Schwab 2010-08-20 9:22 ` Eli Zaretskii 2010-08-20 11:35 ` Andreas Schwab 2010-08-20 12:24 ` Eli Zaretskii 2010-08-20 12:56 ` Óscar Fuentes 2010-08-20 13:29 ` Andreas Schwab 2010-08-20 14:43 ` Eli Zaretskii 2010-08-20 10:15 ` Stephen J. Turnbull 2010-08-20 11:39 ` Andreas Schwab 2010-08-20 12:42 ` Stephen J. Turnbull 2010-08-20 12:23 ` Eli Zaretskii 2010-08-20 12:52 ` Óscar Fuentes 2010-08-20 13:33 ` Andreas Schwab 2010-08-20 14:46 ` Eli Zaretskii 2010-08-20 15:31 ` Andreas Schwab 2010-08-20 13:44 ` Stephen J. Turnbull 2010-08-20 15:19 ` Eli Zaretskii 2010-08-20 22:41 ` Uday S Reddy 2010-08-21 8:36 ` Jan Djärv 2010-08-21 9:08 ` Eli Zaretskii 2010-08-21 10:30 ` Jan Djärv 2010-08-21 10:41 ` Eli Zaretskii 2010-08-21 10:47 ` Jan Djärv 2010-08-21 17:04 ` Thien-Thi Nguyen 2010-08-22 7:39 ` Stephen J. Turnbull 2010-08-23 3:15 ` Thien-Thi Nguyen 2010-08-21 9:38 ` Uday S Reddy 2010-08-21 10:30 ` Eli Zaretskii 2010-08-21 10:37 ` Jan Djärv 2010-08-21 10:56 ` Eli Zaretskii 2010-08-21 12:51 ` Uday S Reddy 2010-08-21 13:02 ` Jan Djärv 2010-08-21 15:36 ` Eli Zaretskii 2010-08-22 7:39 ` Stephen J. Turnbull 2010-08-21 17:10 ` Stephen J. Turnbull 2010-08-21 9:03 ` Eli Zaretskii 2010-08-21 12:31 ` Uday S Reddy 2010-08-21 13:45 ` Óscar Fuentes 2010-08-21 14:56 ` Uday S Reddy 2010-08-21 17:32 ` Óscar Fuentes 2010-08-22 7:45 ` Stephen J. Turnbull 2010-08-21 15:48 ` Eli Zaretskii 2010-08-21 19:10 ` Stephen J. Turnbull 2010-08-21 18:59 ` Stephen J. Turnbull 2010-08-21 19:50 ` Leo 2010-08-21 19:59 ` Eli Zaretskii 2010-08-21 20:17 ` Leo 2010-08-21 20:31 ` Leo 2010-08-22 1:41 ` Tom Tromey 2010-08-22 1:47 ` Leo 2010-08-22 13:47 ` David De La Harpe Golden 2010-08-22 13:53 ` Andreas Schwab 2010-08-22 6:52 ` Stephen J. Turnbull 2010-08-22 7:56 ` Eli Zaretskii 2010-08-22 8:28 ` Stephen J. Turnbull 2010-08-22 8:57 ` Leo 2010-08-22 15:11 ` Eli Zaretskii 2010-08-21 19:56 ` Eli Zaretskii 2010-08-21 21:51 ` Uday S Reddy 2010-08-21 22:38 ` Stefan Monnier 2010-08-22 9:03 ` Uday S Reddy 2010-08-22 9:36 ` Teemu Likonen 2010-08-22 9:44 ` Eli Zaretskii 2010-08-22 11:25 ` Stephen J. Turnbull 2010-08-23 4:24 ` Richard Stallman 2010-08-23 4:54 ` Eli Zaretskii 2010-08-23 7:52 ` Glenn Morris 2010-08-23 13:55 ` Eli Zaretskii 2010-08-24 4:32 ` Richard Stallman 2010-08-24 13:30 ` Karl Fogel 2010-08-24 4:32 ` Richard Stallman 2010-08-23 9:55 ` Stephen J. Turnbull 2010-08-23 4:24 ` Richard Stallman 2010-08-23 5:06 ` Eli Zaretskii 2010-08-23 7:58 ` Uday S Reddy 2010-08-23 10:31 ` Stephen J. Turnbull 2010-08-23 12:41 ` Uday S Reddy 2010-08-24 6:31 ` Stephen J. Turnbull 2010-08-24 12:37 ` Lluís 2010-08-24 13:05 ` Lluís 2010-08-24 13:25 ` Óscar Fuentes 2010-08-24 14:18 ` Stephen J. Turnbull 2010-08-24 15:25 ` Lluís 2010-08-24 14:10 ` Stephen J. Turnbull 2010-08-24 15:02 ` Lluís 2010-08-24 16:59 ` Eli Zaretskii 2010-08-24 21:27 ` Óscar Fuentes 2010-08-24 16:42 ` Uday S Reddy 2010-08-24 17:12 ` Lluís 2010-08-24 18:47 ` Uday S Reddy 2010-08-24 14:05 ` Uday S Reddy 2010-08-24 15:54 ` Stephen J. Turnbull 2010-08-24 16:48 ` Eli Zaretskii 2010-08-25 13:03 ` Richard Stallman 2010-08-25 13:32 ` Juanma Barranquero 2010-08-31 21:33 ` Richard Stallman 2010-09-01 0:30 ` Chong Yidong 2010-09-01 1:44 ` Bernardo Barros 2010-09-01 2:36 ` Miles Bader 2010-09-01 3:07 ` Eli Zaretskii 2010-09-01 6:49 ` Stefan Monnier 2010-09-01 18:17 ` Richard Stallman 2010-09-01 19:10 ` Bastien 2010-09-02 5:22 ` Eli Zaretskii 2010-09-02 6:31 ` Bastien 2010-09-03 1:24 ` Richard Stallman 2010-09-03 8:01 ` Eli Zaretskii 2010-09-03 9:50 ` Bastien 2010-09-03 13:58 ` Karl Fogel 2010-08-25 20:25 ` Uday S Reddy 2010-08-27 15:36 ` Richard Stallman 2010-08-22 7:36 ` Stephen J. Turnbull 2010-08-22 8:52 ` Eli Zaretskii 2010-08-22 9:21 ` Stephen J. Turnbull 2010-08-22 9:38 ` Eli Zaretskii 2010-08-22 11:14 ` Stephen J. Turnbull 2010-08-22 11:47 ` Eli Zaretskii 2010-08-22 11:13 ` Jan Djärv 2010-08-22 13:13 ` Stephen J. Turnbull 2010-08-22 17:10 ` Jan Djärv 2010-08-21 2:29 ` Stephen J. Turnbull 2010-08-20 16:08 ` bzr smart server [was Re: Locks on the Bzr repository] Glenn Morris 2010-08-20 16:56 ` Lennart Borgman 2010-08-20 17:11 ` Eli Zaretskii 2010-08-20 17:13 ` Lennart Borgman 2010-08-20 17:23 ` Eli Zaretskii 2010-08-20 17:52 ` bzr smart server David Kastrup 2010-08-20 17:12 ` bzr smart server [was Re: Locks on the Bzr repository] Eli Zaretskii 2010-08-20 23:02 ` bzr smart server Stefan Monnier 2010-08-21 8:05 ` Eli Zaretskii 2010-08-21 13:22 ` Óscar Fuentes 2010-08-21 15:31 ` Eli Zaretskii 2010-08-21 17:09 ` Óscar Fuentes 2010-08-21 17:28 ` Eli Zaretskii 2010-08-21 13:46 ` Miles Bader 2010-08-21 15:32 ` Eli Zaretskii 2010-08-21 15:45 ` Miles Bader 2010-08-21 15:51 ` Eli Zaretskii 2010-08-21 17:16 ` Óscar Fuentes 2010-08-21 17:28 ` Jason Rumney 2010-08-21 17:36 ` Eli Zaretskii 2010-08-21 17:40 ` Óscar Fuentes 2010-08-21 14:00 ` Eric Hanchrow 2010-08-21 14:06 ` Lennart Borgman 2010-08-21 14:24 ` Óscar Fuentes 2010-08-21 15:12 ` Lennart Borgman 2010-08-21 17:12 ` Óscar Fuentes 2010-08-22 17:06 ` Richard Stallman 2010-08-20 4:44 ` Locks on the Bzr repository Miles Bader 2010-08-20 4:52 ` Jason Rumney 2010-08-20 6:22 ` Jan Djärv 2010-08-19 16:26 ` Eli Zaretskii 2010-08-19 16:54 ` Andreas Schwab 2010-08-19 16:12 ` Jason Rumney 2010-08-19 16:43 ` Dan Nicolaescu 2010-08-19 16:48 ` Jason Rumney 2010-08-19 17:08 ` Dan Nicolaescu 2010-08-19 17:32 ` Jason Rumney 2010-08-19 16:24 ` Eli Zaretskii 2010-08-19 17:29 ` Jason Rumney 2010-08-19 21:42 ` Stefan Monnier 2010-08-20 9:06 ` Eli Zaretskii 2010-08-21 9:37 ` Stefan Monnier 2010-08-19 16:26 ` Jay Belanger 2010-08-21 20:36 ` bzr send workflow (Was: Locks on the Bzr repository) Bojan Nikolic 2010-08-21 22:05 ` bzr send workflow Stefan Monnier 2010-08-21 22:48 ` Bojan Nikolic 2010-08-22 5:26 ` No ChangeLog's (was: bzr send workflow) Eli Zaretskii 2010-08-22 8:11 ` Stephen J. Turnbull 2010-08-22 8:58 ` Eli Zaretskii 2010-08-22 12:29 ` bzr send workflow Andreas Schwab 2010-08-22 13:14 ` Eli Zaretskii 2010-08-22 14:52 ` Andreas Schwab 2010-08-23 4:24 ` Richard Stallman 2010-08-23 5:11 ` Eli Zaretskii 2010-08-23 5:30 ` Eli Zaretskii 2010-08-24 4:32 ` Richard Stallman 2010-08-25 15:03 ` Andy Wingo 2010-08-25 19:18 ` Juanma Barranquero 2010-08-26 17:11 ` Chong Yidong 2010-08-26 17:26 ` Juanma Barranquero 2010-08-27 5:20 ` Stephen J. Turnbull 2010-08-27 11:27 ` Wojciech Meyer 2010-08-22 7:56 ` bzr send workflow (Was: Locks on the Bzr repository) Stephen J. Turnbull 2010-08-22 11:11 ` Lennart Borgman 2010-08-22 13:44 ` bzr send workflow Miles Bader 2010-08-22 14:40 ` Bojan Nikolic 2010-08-23 4:14 ` Stephen J. Turnbull 2010-08-23 5:33 ` Eli Zaretskii
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).