From: Eli Zaretskii <eliz@gnu.org>
To: "Stephen J. Turnbull" <stephen@xemacs.org>
Cc: deng@randomsample.de, emacs-devel@gnu.org
Subject: Re: master c6f03ed: Fix a problem in url.el without GnuTLS
Date: Thu, 18 Dec 2014 17:39:22 +0200 [thread overview]
Message-ID: <83fvcdufv9.fsf@gnu.org> (raw)
In-Reply-To: <87wq5pd0ap.fsf@uwakimon.sk.tsukuba.ac.jp>
> From: "Stephen J. Turnbull" <stephen@xemacs.org>
> Cc: Eli Zaretskii <eliz@gnu.org>,
> emacs-devel@gnu.org
> Date: Thu, 18 Dec 2014 13:55:26 +0900
>
> > > That'd lose too much information, so I'd like to avoid that if
> > > possible.
> >
> > What kind of information do you mean here? I'm guessing you want to see
> > the merges from master and how you reacted to them? You're right that
> > this will be lost.
>
> I think this is the crucial question. git documents are very good at
> explaining implementations, but people have a habit of deciding what
> they think a command does based on its name. That matters a little
> for Eli, and a lot for GitForEmacsDevs.
>
> We really need to see what DAG Eli wants to construct.
The one that would be there if the push from master following a merge
from a feature branch succeeded. I hope this is clear enough; if not,
please ask more specific questions.
> (where "reasonable" is defined "Eli feels comfortable with it
> for the purposes he has in mind" -- we have to ask Eli :-).
I don't think I've invented something unnatural here. What I'd like
is to have a merge-based workflow where the DAG reflects all the
merges between 2 branches as they happened in real time. Race
conditions interfere with that, but I'd like to resolve that issue
in a way that only affects the last merge before the final successful
push from the local master to upstream.
> > . You want to keep a clear history of 'mainline', meaning you want to
> > achieve a similar log view to that from Bazaar, using 'git log
> > --first-parent'.
> >
> > This conflicts with how Git orders the parents of a merge. The first
> > parent is always the tip of the branch you're currently on. And since
> > you do 'git pull' while being on your local master, that will be the
> > first parent.
> I don't see a conflict here. What I do see is an ambiguity in the
> discription of entry conditions. If you bzr-think, on a feature
> branch the "local master" is likely to be the feature branch.[1] That
> is, the workflow is
> git clone git:emacs ./feature-1
> cd feature-1
> emacs file1 ...
> git commit
> git pull git:emacs # we've just swapped master and
> # origin/master, ie, the public mainline,
> # when we push mainline is nonlinear
>
> without actually defining a branch.
This is not how work on a branch happens (and not how it happened with
bzr). There's an actual named branch, and changes are merged from
there to master, before pushing them.
> git clone git:emacs ./feature-1
> cd feature-1
> git checkout -b feature-1
> emacs file1 ...
> git commit
> git pull git:emacs # origin/master contains public mainline
> # feature-1 contains local mainline
> To push to public:
> git checkout master
> git push # public mainline is preserved
> git checkout feature-1 # #### these three commands are error-prone
> AFAICS this is what you need to do for emacs-24, too.
What I do for emacs-24 is similar, but not identical:
git clone git:emacs ./emacs-24
cd emacs-24
git checkout emacs-24
<hack, hack>
git commit
git push
cd ../trunk # another clone
git checkout master
git pull
git merge origin/emacs-24
<test, fix problems, commit>
git push
> The problems are (1) a convenient discipline for those last three
> commands
What is error-prone about them?
> I think that one way to provide convenience and discipline would be
> to (a) require that the feature branch workspace be located in a
> directory with the same name as the feature branch, and (b) provide
> git-pull-emacs and git-push-emacs scripts that check for $(basename
> $cwd) == feature-name as a precondition.
Sounds complicated, and I'm not sure it's really needed. Local
feature branches (unlike emacs-24) don't need to be in a separate
directory, because they usually don't diverge from master enough to
justify that. What remains is the requirement to be aware of the
currently checked-out branch, something that is quite easy both at the
shell prompt (where Git instructs Bash to show the branch) and in
Emacs.
A significant disadvantage of this proposal, at least for me, is that
it defines a set of commands and some details of the workflow that are
specific to Emacs and not available and/or unneeded in any other
project that uses Git. So it gets in the way of a more efficient
learning to use Git by combining the experience from other projects.
> > One could implement a git hook that checks for a linear git history
> > of mainline and that rejects pushes otherwise, but I guess Stefan
> > isn't very inclined to agree to that.
>
> My impression is that Stefan is not inclined to encourage work on this
> problem; he thinks it's a waste of time. I think he'd come around
> quickly if presented with either another problem that would be solved
> by the same workflow that preserves linear mainline, or a
> "sufficiently convenient" workflow that preserves linear mainline.
But there doesn't appear to be such a sufficiently convenient
workflow, not with Git.
> [1] I think Eli means that in his feature branch workspace he uses a
> branch named for the feature rather than master
Of course!
next prev parent reply other threads:[~2014-12-18 15:39 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20141211155740.11916.1584@vcs.savannah.gnu.org>
[not found] ` <E1Xz67Y-00036o-Vf@vcs.savannah.gnu.org>
2014-12-11 16:47 ` master c6f03ed: Fix a problem in url.el without GnuTLS Leo Liu
2014-12-11 18:08 ` Eli Zaretskii
2014-12-11 23:00 ` Ted Zlatanov
2014-12-12 9:23 ` Eli Zaretskii
2014-12-12 13:24 ` Ted Zlatanov
2014-12-12 14:28 ` Eli Zaretskii
2014-12-12 16:06 ` Stefan Monnier
2014-12-13 0:25 ` Ted Zlatanov
2014-12-13 0:28 ` Lars Magne Ingebrigtsen
2014-12-13 1:25 ` Ted Zlatanov
2014-12-13 8:04 ` Eli Zaretskii
2014-12-13 10:16 ` David Engster
2014-12-18 22:38 ` David Engster
2014-12-19 8:50 ` Eli Zaretskii
2014-12-13 9:04 ` David Engster
2014-12-13 9:50 ` David Engster
2014-12-13 13:19 ` Ted Zlatanov
2014-12-13 14:13 ` David Engster
2014-12-13 14:25 ` Ted Zlatanov
2014-12-13 15:18 ` Eli Zaretskii
2014-12-13 19:44 ` David Engster
2014-12-13 19:59 ` Eli Zaretskii
2014-12-13 22:00 ` Dmitry Gutov
2014-12-14 3:36 ` Eli Zaretskii
2014-12-13 23:13 ` David Engster
2014-12-14 16:09 ` Eli Zaretskii
2014-12-14 16:37 ` Ted Zlatanov
2014-12-14 16:55 ` Eli Zaretskii
2014-12-14 17:00 ` Ted Zlatanov
2014-12-14 23:21 ` Stefan Monnier
2014-12-14 17:46 ` Paul Eggert
2014-12-14 17:50 ` Eli Zaretskii
2014-12-14 18:28 ` Ted Zlatanov
2014-12-14 19:41 ` David Engster
2014-12-14 21:40 ` David Engster
2014-12-15 3:47 ` Eli Zaretskii
2014-12-15 20:39 ` David Engster
2014-12-16 19:42 ` Eli Zaretskii
2014-12-17 9:58 ` Steinar Bang
2014-12-17 10:52 ` Steinar Bang
2014-12-17 15:36 ` Eli Zaretskii
2014-12-17 15:35 ` Eli Zaretskii
2014-12-17 20:37 ` David Engster
2014-12-18 4:55 ` Stephen J. Turnbull
2014-12-18 15:39 ` Eli Zaretskii [this message]
2014-12-18 20:00 ` Steinar Bang
2014-12-18 20:40 ` Eli Zaretskii
2014-12-19 8:09 ` Steinar Bang
2014-12-19 9:16 ` Eli Zaretskii
2014-12-19 10:33 ` Steinar Bang
2014-12-18 21:18 ` David Engster
2014-12-18 15:38 ` Eli Zaretskii
2014-12-18 19:46 ` Steinar Bang
2014-12-18 20:35 ` Eli Zaretskii
2014-12-19 6:07 ` Yuri Khan
2014-12-19 7:57 ` Steinar Bang
2014-12-19 9:09 ` Eli Zaretskii
2014-12-18 20:46 ` David Engster
2014-12-14 22:42 ` Stefan Monnier
2014-12-15 3:37 ` Eli Zaretskii
2014-12-15 4:46 ` Stefan Monnier
2014-12-12 20:46 ` Lars Magne Ingebrigtsen
2014-12-12 0:30 ` Leo Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83fvcdufv9.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=deng@randomsample.de \
--cc=emacs-devel@gnu.org \
--cc=stephen@xemacs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).