all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Stephen J. Turnbull" <stephen@xemacs.org>
To: David Engster <deng@randomsample.de>
Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
Subject: Re: master c6f03ed: Fix a problem in url.el without GnuTLS
Date: Thu, 18 Dec 2014 13:55:26 +0900	[thread overview]
Message-ID: <87wq5pd0ap.fsf@uwakimon.sk.tsukuba.ac.jp> (raw)
In-Reply-To: <87egrynhcd.fsf@engster.org>

David Engster writes:

 > up anew. If HEAD is your merge commit, this would mean doing
 > 
 >   git branch -D branchname
 >   git branch branchname HEAD^2
 > 
 > (You have to delete with '-D', since Git won't see your non-rebased
 > branch as merged...).

Aside: can't you do this in one operation with "git branch -f
branchname HEAD^2"?  (Real question, I don't understand your reference
to "seeing ... branch as merged".  The docs seem to indicate it should
work.)

 > > 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.  Then we can
see how to create it using primitives, and finally see if there's a
reasonable shortcut by using more complex commands and appropriate
options (where "reasonable" is defined "Eli feels comfortable with it
for the purposes he has in mind" -- we have to ask Eli :-).

 > OK, let me try to summarize what I think are the two main conflicting
 > requirements:
 > 
 > . You want to handle merges of local feature branches and public
 >   branches (like 'emacs-24') in the same way.
 > 
 > I think this one is the strongest requirement, since it means you simply
 > cannot use 'rebase' in any way. Also, you've pointed out several other
 > problems with 'rebase', like loosing the "real" history of a feature
 > branch, and accidental merging of rebased commits.
 > 
 > Therefore, I think a purely merge-based workflow is really the only
 > option for you, which however brings us to
 > 
 > . 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.  I agree this is problematic.
It's more complex, but if you do

    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.  The problems
are (1) a convenient discipline for those last three commands and (2)
recovery from failed push due to concurrent development.  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.  I don't know about the failed merge recovery,
though.

 > Of course, while *you* can take care in keeping the correct ordering of
 > mainline, others won't do that (I guess most are not even aware of this
 > issue),

All bzr fans are aware of it though.  It's an important part of
Bazaar's identity in VCS space.  The problem will be git users who are
used to a spaghetti DAG.

 > 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.  I
don't intend to speak for Stefan, just to encourage you to not give up
on the idea of a hook before you've clarified the point with him.

Footnotes: 
[1]  I think Eli means that in his feature branch workspace he uses a
branch named for the feature rather than master, but we need to be
clear about this.




  reply	other threads:[~2014-12-18  4:55 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 [this message]
2014-12-18 15:39                                               ` Eli Zaretskii
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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wq5pd0ap.fsf@uwakimon.sk.tsukuba.ac.jp \
    --to=stephen@xemacs.org \
    --cc=deng@randomsample.de \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.