All of lore.kernel.org
 help / color / mirror / Atom feed
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.

-- 

  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 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.