From: Andreas Ericsson <ae@op5.se>
To: Theodore Tso <tytso@mit.edu>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Steffen Prohaska <prohaska@zib.de>,
Peter Baumann <waste.manager@gmx.de>,
"J. Bruce Fields" <bfields@fieldses.org>,
Jakub Narebski <jnareb@gmail.com>,
Federico Mena Quintero <federico@novell.com>,
git@vger.kernel.org
Subject: Re: best git practices, was Re: Git User's Survey 2007 unfinished summary continued
Date: Thu, 25 Oct 2007 16:58:13 +0200 [thread overview]
Message-ID: <4720AF05.3050308@op5.se> (raw)
In-Reply-To: <20071025132401.GA22103@thunk.org>
Theodore Tso wrote:
> On Thu, Oct 25, 2007 at 12:33:09PM +0200, Andreas Ericsson wrote:
>> Because it's convenient, ofcourse. Don't you have 'maint', 'next'
>> and 'master' in your clone of git.git? I'm guessing at least 99% of
>> the people on this list have those branches lying around in their
>> clones, even if they only ever use 'next' and/or 'master'.
>
> I find it just as easy to say: "git checkout origin/maint" or "git
> checkout origin/next" when I want to examine some other branch.
>
> If I want to make a change against maint, then I follow up "git
> checkout origin/maint" with a "git checkout -b <topic-name>". Part of
Except that <topic-name> in this case will always be maint, since
only small bugfixes go on that branch. We tried using different-named
branches earlier, but the "git push <local-branch>" behaviour was
much too common, and we ended up with far too many randomly named
branches on the mothership repository.
>
> You're using a diferent workflow, and with users who aren't interested
> in learning the fine points of git. But main issue is that git isn't
> optimized for what you want to do.
Correct. I'm working on optimizing it right now though :)
> So I can suggest a couple of
> different approaches. One is to simply do things the 'hg' way.
> Explicitly set up different repos for the different branches. It's
> more inefficient, but it does work.
That makes diffing harder to do, and for those few long-living topics
that get pushed to mothership, there's no logical way for the user to
get only that branch. With the *:refs/remotes/foo/* config thing, this
works seemlessly today.
>
> Another would be to set up a wrapper script for "git-clone" that
> creates a separate local working directory for each branch. So for
> example, it might do something like this:
>
> #!/bin/sh
> # Usage: get-repo <URL> [dir]
> URL=$1
> dir=$2
> branches=`git-ls-remote --heads $URL | sed -e 's;.*/;;'`
> if [ "$dir"x = "x" ]; then dir=`basename $URL`; fi
> git clone $URL .temp-repo
> mkdir $dir
> cd $dir
> for i in $branches; do
> mkdir $i
> cd $i
> git init
> git remote add -t $i origin $URL
> echo ref: refs/heads/$i > .git/HEAD
> git fetch ../../.temp-repo refs/remotes/origin/$i:refs/remotes/origin/$i
> # do it a second time to get the tags (bug in fetch?)
> git fetch ../../.temp-repo refs/remotes/origin/$i:refs/remotes/origin/$i
> git merge origin/$i
> git config remote.origin.push $i:$i
> cd ..
> done
> cd ..
> rm -rf .temp-repo
>
> For bonus points, this script could be made smarter so that each of
> the branches shared a common git object database, and some error
> checking would be nice, but hopefully this gets the basic idea across.
>
> This way, the "basic git users" get a separate working directory for
> each branch, where "git pull" updates that particular branch, and "git
> push" updates changes to the remote branch.
>
> Does this do what you want?
>
Not really, I'm afraid. Apart from missing out on the auto-download of
new repos you get with "fetch = refs/heads/*:refs/remotes/origin/*",
it seems inelegant.
> - Ted
>
> P.S. Note by the way that if you are having everyone own access to
> push into a single central repository, having a "next" branch probably
> doesn't make seense. You're probably way better off just simply
> having "master" (which would be your devel branch), and "maint" for
> bug fixes.
>
We have
maint = maintenance code. some repos have several maint-branches
master = integration-tested code that will end up in next release
testing = unit-tested features, ready for integration testing
We can't really do without them, but perhaps I can do what Dscho
suggested in another email and force everyone to delete their
locally-modifiable branches once they're done making changes to
them. It'll end up being more commands to run for a single fix,
but at least it's not error-prone.
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
next prev parent reply other threads:[~2007-10-25 14:58 UTC|newest]
Thread overview: 161+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-08 20:55 Git User's Survey 2007 unfinished summary continued Jakub Narebski
2007-10-12 22:08 ` Jakub Narebski
2007-10-12 23:36 ` Frank Lichtenheld
2007-10-13 0:46 ` Johannes Schindelin
2007-10-13 2:13 ` J. Bruce Fields
2007-10-13 2:53 ` Shawn O. Pearce
2007-10-13 12:58 ` Frank Lichtenheld
2007-10-13 13:04 ` Johannes Schindelin
2007-10-13 18:00 ` Andreas Ericsson
2007-10-13 19:59 ` David Kastrup
2007-10-13 20:27 ` J. Bruce Fields
2007-10-13 20:57 ` David Kastrup
2007-10-14 0:36 ` Johannes Schindelin
2007-10-14 1:13 ` Linus Torvalds
2007-10-14 1:44 ` Shawn O. Pearce
2007-10-14 3:15 ` Linus Torvalds
2007-10-14 3:43 ` david
2007-10-14 3:55 ` Linus Torvalds
2007-10-14 10:20 ` Reece Dunn
2007-10-14 18:12 ` Steven Grimm
2007-10-14 18:40 ` J. Bruce Fields
2007-10-14 19:25 ` Steven Grimm
2007-10-14 19:50 ` Andreas Ericsson
2007-10-14 20:18 ` Johannes Schindelin
2007-10-14 20:22 ` Andreas Ericsson
2007-10-14 20:24 ` J. Bruce Fields
2007-10-14 19:44 ` Nicolas Pitre
2007-10-15 23:20 ` Shawn O. Pearce
2007-10-16 2:48 ` Nicolas Pitre
2007-10-16 10:51 ` Johannes Schindelin
2007-10-14 2:06 ` Johannes Schindelin
2007-10-14 8:45 ` Andreas Ericsson
2007-10-14 9:21 ` David Kastrup
2007-10-14 21:49 ` Jakub Narebski
2007-10-14 22:08 ` Johannes Schindelin
2007-10-14 22:17 ` David Kastrup
2007-10-14 22:12 ` David Kastrup
2007-10-14 22:15 ` Jakub Narebski
2007-10-14 22:23 ` Matthew Andrews
2007-10-14 22:30 ` David Kastrup
2007-10-14 21:10 ` David Tweed
2007-10-19 20:57 ` Federico Mena Quintero
2007-10-19 23:27 ` Jakub Narebski
2007-10-19 23:37 ` Johannes Schindelin
2007-10-22 14:28 ` Federico Mena Quintero
2007-10-20 8:03 ` Andreas Ericsson
2007-10-20 10:19 ` Steffen Prohaska
2007-10-20 11:29 ` Andreas Ericsson
2007-10-21 6:08 ` Dmitry Potapov
2007-10-20 23:06 ` Jakub Narebski
2007-10-20 23:33 ` Johannes Schindelin
2007-10-21 7:17 ` Andreas Ericsson
2007-10-21 22:15 ` Johannes Schindelin
2007-10-22 7:59 ` Andreas Ericsson
2007-10-22 11:04 ` best git practices, was " Johannes Schindelin
2007-10-22 12:44 ` Andreas Ericsson
2007-10-22 13:48 ` Johannes Schindelin
2007-10-22 14:31 ` Andreas Ericsson
2007-10-22 15:00 ` Johannes Schindelin
2007-10-22 15:16 ` Andreas Ericsson
2007-10-22 15:42 ` Steffen Prohaska
2007-10-22 19:36 ` Federico Mena Quintero
2007-10-22 23:21 ` Johannes Schindelin
2007-10-25 19:04 ` Carl Worth
2007-10-22 23:35 ` Jakub Narebski
2007-10-23 5:38 ` Steffen Prohaska
2007-10-23 10:58 ` Johannes Schindelin
2007-10-24 18:48 ` Steffen Prohaska
2007-10-24 19:20 ` J. Bruce Fields
2007-10-24 19:41 ` Andreas Ericsson
2007-10-24 19:48 ` J. Bruce Fields
2007-10-24 20:12 ` Steffen Prohaska
2007-10-24 20:33 ` J. Bruce Fields
2007-10-24 21:06 ` Andreas Ericsson
2007-10-24 21:20 ` J. Bruce Fields
2007-10-24 21:28 ` Peter Baumann
2007-10-24 21:47 ` Steffen Prohaska
2007-10-24 22:14 ` Johannes Schindelin
2007-10-24 22:33 ` Steffen Prohaska
2007-10-24 22:38 ` J. Bruce Fields
2007-10-24 22:51 ` Steffen Prohaska
2007-10-24 23:28 ` Johannes Schindelin
2007-10-25 6:02 ` Steffen Prohaska
2007-10-25 10:27 ` Johannes Schindelin
2007-10-25 12:04 ` Steffen Prohaska
2007-10-25 7:15 ` Andreas Ericsson
2007-10-25 7:31 ` Peter Baumann
2007-10-25 7:57 ` Andreas Ericsson
2007-10-25 8:25 ` Steffen Prohaska
2007-10-25 10:17 ` Johannes Schindelin
2007-10-25 10:33 ` Andreas Ericsson
2007-10-25 12:09 ` Steffen Prohaska
2007-10-25 12:58 ` Johannes Schindelin
2007-10-25 13:24 ` Theodore Tso
2007-10-25 14:58 ` Andreas Ericsson [this message]
2007-10-25 15:21 ` Theodore Tso
2007-10-25 17:05 ` Andreas Ericsson
2007-10-25 18:33 ` Junio C Hamano
2007-10-25 20:18 ` Andreas Ericsson
2007-10-26 6:18 ` Steffen Prohaska
2007-10-26 7:53 ` Andreas Ericsson
2007-10-25 18:02 ` best git practices, was Re: Git User's Survey 2007 unfinishedsummary continued Federico Mena Quintero
2007-10-25 18:04 ` Mike Hommey
2007-10-25 18:18 ` J. Bruce Fields
2007-10-25 18:23 ` Theodore Tso
2007-10-25 20:08 ` Andreas Ericsson
2007-10-26 20:01 ` David Kastrup
2007-10-25 16:06 ` Federico Mena Quintero
2007-10-25 16:38 ` J. Bruce Fields
2007-10-25 18:06 ` Federico Mena Quintero
2007-10-25 18:16 ` J. Bruce Fields
2007-10-25 20:19 ` Andreas Ericsson
2007-10-25 20:27 ` J. Bruce Fields
2007-10-26 9:17 ` David Kastrup
2007-10-26 4:41 ` [PATCH] Make rebase smarter Steven Walter
2007-10-26 7:42 ` Andreas Ericsson
2007-10-26 9:57 ` Johannes Schindelin
2007-10-26 21:02 ` Junio C Hamano
2007-10-26 23:13 ` Johannes Schindelin
2007-10-26 23:29 ` Junio C Hamano
2007-10-24 21:54 ` best git practices, was Re: Git User's Survey 2007 unfinished summary continued Andreas Ericsson
2007-10-24 22:17 ` Johannes Schindelin
2007-10-25 8:07 ` Andreas Ericsson
2007-10-25 10:12 ` Johannes Schindelin
2007-10-25 10:24 ` Andreas Ericsson
2007-10-25 11:39 ` Johannes Schindelin
2007-10-25 12:46 ` Andreas Ericsson
2007-10-25 14:51 ` Karl Hasselström
2007-10-25 17:10 ` Andreas Ericsson
2007-10-25 7:26 ` Peter Baumann
2007-10-24 21:16 ` Steffen Prohaska
2007-10-24 20:13 ` Andreas Ericsson
2007-10-24 23:48 ` Jakub Narebski
2007-10-25 7:42 ` Andreas Ericsson
2007-10-25 10:07 ` Johannes Schindelin
2007-10-25 10:39 ` Steffen Prohaska
2007-10-25 16:16 ` Federico Mena Quintero
2007-10-23 7:24 ` Andreas Ericsson
2007-10-22 18:06 ` Daniel Barkalow
2007-10-22 13:17 ` Wincent Colaiuta
2007-10-22 13:33 ` David Symonds
2007-10-22 13:38 ` Johannes Schindelin
2007-10-22 17:48 ` Robin Rosenberg
2007-10-23 22:13 ` Alex Riesen
2007-10-22 13:36 ` Nguyen Thai Ngoc Duy
2007-10-22 15:24 ` best git practices, was Re: Git User's Survey 2007 unfinished summarycontinued Federico Mena Quintero
2007-10-24 2:06 ` best git practices, was Re: Git User's Survey 2007 unfinished summary continued Jakub Narebski
2007-10-24 10:29 ` Karl Hasselström
2007-10-24 11:04 ` Jakub Narebski
2007-10-24 11:31 ` Karl Hasselström
2007-10-24 23:27 ` Jakub Narebski
2007-10-25 6:10 ` Karl Hasselström
2007-10-24 13:15 ` Catalin Marinas
2007-10-22 12:26 ` Jakub Narebski
2007-10-22 13:45 ` Johannes Schindelin
2007-10-22 14:29 ` Andreas Ericsson
2007-10-22 14:53 ` Federico Mena Quintero
2007-10-22 23:27 ` Jakub Narebski
2007-10-22 22:53 ` Steven Grimm
2007-10-21 22:12 ` J. Bruce Fields
2007-10-13 3:04 ` Shawn O. Pearce
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=4720AF05.3050308@op5.se \
--to=ae@op5.se \
--cc=Johannes.Schindelin@gmx.de \
--cc=bfields@fieldses.org \
--cc=federico@novell.com \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
--cc=prohaska@zib.de \
--cc=tytso@mit.edu \
--cc=waste.manager@gmx.de \
/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).