Re: New way of tracking remote branches -- question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Junio C Hamano <junkio@xxxxxxx> writes:
> 
> If you wanted to do _ANY_ development on top of it (even if that
> was just to set '#define DEBUG 1'), however, you would need to
> branch off of it, say "git checkout -b my-next next", so the
> above inconvenience is arguably very minor.  On the other hand,
> the downside are the pollution of your own heads/ namespace
> (having your forked branch and remote tracking branch means
> heads/ would have next and pu from me and my-next and my-pu you
> work on), and some people are not as careful and disciplined as
> you are and have made mistakes of committing their own changes
> while on such remote tracking branches (you can call the latter
> part "newbie protection").  The next 'git fetch', especially
> when it was forced _and_ was done while on 'next', was rather
> unpleasant.  Of course, discipined people like you and me would
> never do that, but we are not the only two people in the
> universe ;-).

LOL, I love your sense of humor here! :-)

> The issue of "checking the tracking branch out to look-and-see"
> is going to be addressed by the upcoming detached HEAD support,
> so personally I do not think it will be a huge problem.  You
> would have to say "git checkout origin/next" for it with the new
> layout.

I guess, what I want is still to be able to "see" remotes/
when I do "git branch".

Sometimes I don't care to check out the remote branch, I just
want to rev-list it.  Sometimes I do check it out so I can
take a look and when I pull, I do the required reset, but
as you said above :-) this requires discipline.

And of course if I want to do my own development, I branch
off, as I've done with "next", and never forget to "git-pull . next"
after I pull from you.  Again this requires discipline.

But what I appreciate in git, is this discipline.  The fact that
I'm in control of it and that I have to do it -- keeps my mind sharp.

I really think that the line separating porcelains from git
should be drawn at some point.

I think that this "automatic merge/newbie protection" policy,
should've been well suited to porcelains as opposed to
git.

> Another thing the separate remote gives us is to make it easier
> to interact with more than one remote, by having a new directory
> next to remotes/origin/ directory.  If you used the traditional
> layout, your heads/ namespace would explode because you would
> have to have something like:
> 
> 	heads/origin		-- from linux-2.6's master
>         heads/origin-libata	-- from jgarzik libata ALL
> 	heads/origin-sii-lbt	-- from jgarzik libata sii-lbt
>         ...
> 
> in a flat namespace intermixed with your own development
> branches, instead of:
> 
> 	remotes/origin/master	-- from linux-2.6's master
>         remotes/libata/ALL
>         remotes/libata/sii-lbt
> 	...
> 
> grouped together by where they come from (and they cannot
> possibly be mucked around directly thanks to being in remotes/
> hierarchy), separated from any of your own development branches
> that are in heads/.

I don't mind this at all, as long as I get to "see" it, when
I do normal git operations, like "git branch".

So maybe we should take it one step at a time and first
implement that, still exposing it to "git branch" and then
if porcelains want to establish a policy on top of this,
that's fine.  But low-level git should not hide this from me.

    Luben

> Also, this is only about the default layout clone makes, and the
> refs are not packed, so you can easily move remotes/origin/*
> (except 'HEAD') to heads/ immediately after making a clone and
> set up remotes.*.fetch configuration to match the traditional
> layout if that is what you find more convenient.  The operation

I do find that more convenient, but wouldn't like to have
to do that, nor to have a script that does it for me to have
to do it after I clone.

It would be most convenient when this per-repo layout is
implemented, yet I get to see this when I do "git-branch".

I guess, most convenent, yet "newbie-protection" would be
to disallow any commits to remotes/* in this way... I'd opt
for that wholeheartedly.

     Luben

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]