From: Shawn Pearce <spearce@spearce.org>
To: Junio C Hamano <junkio@cox.net>
Cc: git@vger.kernel.org, Jakub Narebski <jnareb@gmail.com>
Subject: Re: [RFD] making separate-remote layout easier to use
Date: Sat, 25 Nov 2006 22:34:33 -0500 [thread overview]
Message-ID: <20061126033433.GD29394@spearce.org> (raw)
In-Reply-To: <ekafpm$fs7$1@sea.gmane.org>
Jakub Narebski <jnareb@gmail.com> wrote:
> Junio C Hamano wrote:
> > Pull: +refs/heads/*:refs/remotes/<origin>/*
>
> I hope that it also works with the remote.origin config file
> section instead of $GIT_DIR/remotes/origin
Yes, it does. Fortunately Git is relatively consistent. :-)
> > Forcing with '+' is debatable, but with separate-remote layout,
> > remotes/*/ hierarchy is to track what the remote has, and you
> > cannot do much else other than noticing and warning when the
> > remote end does funny things to its refs anyway, so I think
> > having '+' might be a better default.
>
> Perhaps, perhaps not. It would be nice to have configuration option
> that would tell that history of given branch is being changed, and
> the ability to ask about it remotely, so git-clone would be able
> to add this + _when needed_ automatically.
>
> But it's a fact that with separate remote the need to use fast-forward
> check is lessened, and it might be more important to not confuse first
> time user with having to modify $GIT_DIR/remotes/origin or remote.origin
> config section to fetch from the repository he/she cloned from.
Yes. From an out-of-the-box-make-Git-appear-to-be-easier-to-use
point of view tossing + into the Pull:/remote.<name>.fetch setup
might seem like the right thing to do. It lets the end-user blindly
follow the upstream repository they cloned from. Almost.
The problem becomes when the user makes a topic branch off say
Junio's `pu` branch and later after doing a fetch and looking at
the log of `remotes/origin/pu` decide to pull the updated `pu`
into their topic branch, so they can continue testing. But now
they are in merge hell as Junio has completely rebased `pu` and
what was there isn't, and what's there now ain't compatible...
and the new user curses at Git.
Needing to put + in front of a refspec (or needing to fetch it with
--force) is the user agreeing that something _evil_ is going on with
the upstream and that they acknowledge this may cause problems for
them locally.
I would prefer to see the upstream be able to publish a short
description of each branch, where the repository owner can describe
the policy of that branch, as well as have a machine readable
setting on each branch indicating if that branch will be rewound
from time to time, or never rewound.
git-clone should skip rewinding branches by default, unless the user
adds an option (e.g. --include-rewinding-branches). This way new
users to git.git don't get the `pu` branch unless they really mean
to get it, at which point they have hopefully also read the upstream's
description of the `pu` branch and its rewinding policy, and can
at least start to grasp what is going to happen if they start to
work with the branch.
> > I am not sure if 'merge in corresponding branch' is the only
> > valid workflow, however. I am reluctant to make the system
> > automatically do so if the solution makes other workflows more
> > painful to follow. Automatically merging remotes/origin/$foo
> > when on $foo branch is not good enough, in other words (also,
> > there may be a hierarchy under remotes/ other than origin). It
> > might make sense to introduce "Merge: " in remotes/ file and if
> > they are present use "Pull: " only to decide what are fetched
> > and use "Merge: " to decide what is merged (if we were doing the
> > system from scratch, the former would have been named "Fetch: "
> > but it is too late now).
>
> If you add "Merge: " in remotes/, then please add it also in
> remote section in config file. Config file has now
> branch.<branchname>.merge (and it would be nice if clone would
> set ou this for local branches corresponding to remote branches),
> but it is not the same.
I'm against adding anything to the remotes/ file format.
We already have branch.<name>.merge to indicate what the default
source for a git-pull on the branch named <name> should be.
git-branch probably should fill that entry in when a branch is
created from a remotes ref.
--
next prev parent reply other threads:[~2006-11-26 3:34 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-25 21:53 [RFD] making separate-remote layout easier to use Junio C Hamano
2006-11-25 22:25 ` Jakub Narebski
2006-11-25 23:19 ` Junio C Hamano
2006-11-25 23:34 ` Jakub Narebski
2006-11-26 3:37 ` Junio C Hamano
2006-11-26 5:30 ` Junio C Hamano
2006-11-26 3:14 ` Shawn Pearce
2006-11-26 3:48 ` Junio C Hamano
2006-11-26 3:34 ` Shawn Pearce [this message]
2006-11-26 3:58 ` Junio C Hamano
2006-11-26 4:23 ` Shawn Pearce
2006-11-26 5:11 ` Junio C Hamano
2006-11-26 7:39 ` Shawn Pearce
2006-11-26 9:13 ` Junio C Hamano
2006-11-26 9:43 ` Jakub Narebski
2006-11-27 0:59 ` Josef Weidendorfer
2006-11-27 1:21 ` Junio C Hamano
2006-11-30 18:16 ` Jon Loeliger
2006-11-30 21:22 ` Junio C Hamano
2006-11-26 9:32 ` Jakub Narebski
2006-11-27 0:41 ` Josef Weidendorfer
2006-11-29 21:32 ` Jon Loeliger
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=20061126033433.GD29394@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
--cc=junkio@cox.net \
/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.
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 NNTP newsgroup(s).