git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@osdl.org>
To: Carl Worth <cworth@cworth.org>
Cc: "Nicolas Vilz 'niv'" <niv@iaglans.de>, git <git@vger.kernel.org>
Subject: Re: several quick questions
Date: Tue, 14 Feb 2006 12:40:24 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.64.0602141224110.3691@g5.osdl.org> (raw)
In-Reply-To: <87fymlvgzv.wl%cworth@cworth.org>



On Tue, 14 Feb 2006, Carl Worth wrote:
> > 
> > What a strange thing to ask for.
> 
> It's pretty common in other tools.

Well, it's pretty common in git too. But in git, the notion of "branch" 
really has been made so cheap that it's basically a no-op.

The "overhead" of creating a branch is literally the cost of writing one 
(small) file.

> In fact, this is the natural operation for the basis of something like
> git-bisect.

Right. And "git bisect" very much does exactly that. It creates a 
temporary branch for bisection (the branch is called "bisect", one of the 
less confusing naming decisions in git ;)

That's really my point. It all boils down to the same three operations: 
"git branch", "git checkout" and "git reset".

In fact, if you look into git-bisect, you'll notice that it doesn't even 
use "git reset" internally. It _literally_ creates a new branch (which it 
does by hand for some strange reason, but never mind) called "new-bisect", 
and then does "git checkout new-bisect" followed by renaming the branch 
back to "bisect" (which it again does by hand).

So "git bisect" may actually get its hands dirty by knowing a bit too much 
about the internal workings of git branches, but conceptually, it really 
does just

	git checkout -b new-bisect <newrev>

to switch its state around.

> But I'd still like to be able to do this without having to invent a
> fake branch name, without the ability to accidentally commit on the
> fake branch, and without the possibility of accidentally leaving those
> commits dangling the next time I seek somewhere else.

Pasky did this before the "multi-branch" thing was common, and calls it 
"cg-seek". 

I think that does exactly what you ask for, I just don't really see the 
point. The downside of cg-seek is that you're really really limited to 
what you can do with it.

For example, it may be "overhead" to have a dummy branch for bisection, 
but it means (for example) that you can actually do real work on the point 
that "git bisect" points you to.

For example, if you hit a compile error, you can _literally_ fix that 
compile error AND COMMIT that state, and when you then mark that commit 
"good" or "bad" when you continue to bisect, bisection will actually do 
the right thing. Something that would be impossible in a "seek" 
environment, where you don't have a branch that you can do development on.

I realize that when you come from an environment where branches are big 
things, this is kind of strange. But in git, a branch is literally a 
single file that is 41 bytes in size. That's it. No more, no less.

		Linus

  parent reply	other threads:[~2006-02-14 20:41 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-14 16:28 several quick questions Nicolas Vilz 'niv'
2006-02-14 17:03 ` Andreas Ericsson
2006-02-14 21:30   ` Nicolas Vilz 'niv'
2006-02-14 17:05 ` Linus Torvalds
2006-02-14 17:47   ` Kenneth Johansson
2006-02-14 18:08     ` Andreas Ericsson
2006-02-14 18:21       ` Kenneth Johansson
2006-02-14 18:26     ` Linus Torvalds
2006-02-14 18:10   ` Carl Worth
2006-02-14 18:34     ` Linus Torvalds
2006-02-14 20:10       ` Carl Worth
2006-02-14 20:27         ` Petr Baudis
2006-02-14 20:37           ` Johannes Schindelin
2006-02-14 20:41             ` Junio C Hamano
2006-02-14 20:54               ` Johannes Schindelin
2006-02-14 20:55             ` Petr Baudis
2006-02-14 20:40         ` Linus Torvalds [this message]
2006-02-14 21:19           ` Petr Baudis
2006-02-14 21:53           ` Carl Worth
2006-02-14 22:39             ` Junio C Hamano
2006-02-23 20:31               ` [PATCH] New git-seek command with documentation and test Carl Worth
2006-02-24  0:18                 ` J. Bruce Fields
2006-02-24  1:01                   ` [PATCH] git-seek: Eliminate spurious warning. Fix errant reference to git-bisect in docs Carl Worth
2006-02-24  6:02                     ` Junio C Hamano
2006-02-24 10:00                 ` [PATCH] New git-seek command with documentation and test Andreas Ericsson
2006-02-24 11:38                   ` Junio C Hamano
2006-02-24 14:23                   ` Carl Worth
2006-02-24 21:48                     ` Johannes Schindelin
2006-02-24 21:57                       ` J. Bruce Fields
2006-02-14 21:30         ` several quick questions Josef Weidendorfer
2006-02-14 21:40           ` Junio C Hamano
2006-02-14 22:17             ` Josef Weidendorfer
2006-02-14 22:26               ` Junio C Hamano
2006-02-15 19:22                 ` [PATCH] More useful/hinting error messages in git-checkout Josef Weidendorfer
2006-02-14 23:00             ` several quick questions Andreas Ericsson
2006-02-14 23:23               ` Johannes Schindelin
2006-02-15  0:08                 ` Andreas Ericsson
2006-02-15  0:34                   ` Junio C Hamano
2006-02-15  6:27               ` Junio C Hamano
2006-02-15  9:06                 ` Andreas Ericsson
2006-02-15  9:21                   ` Junio C Hamano
2006-02-14 21:41           ` Petr Baudis
2006-02-14 18:44     ` Carl Worth
2006-02-14 19:00       ` Linus Torvalds
2006-02-14 19:38         ` Andreas Ericsson
2006-02-14 20:34           ` Johannes Schindelin
2006-02-14 20:14         ` Carl Worth
2006-02-14 18:55     ` Keith Packard
2006-02-14 19:04       ` Linus Torvalds
2006-02-14 19:39         ` Keith Packard
     [not found]           ` <20060214220154.GJ31278@pasky.or.cz>
     [not found]             ` <1139960934.4341.93.camel@evo.keithp.com>
     [not found]               ` <20060215000737.GF9573@pasky.or.cz>
     [not found]                 ` <1139963183.4341.117.camel@evo.keithp.com>
2006-02-15  1:12                   ` Cogito turbo-introduction Petr Baudis
2006-02-15  1:32                     ` Petr Baudis
2006-02-15  4:11           ` several quick questions Martin Langhoff
2006-02-15  5:25             ` Keith Packard
2006-02-15  8:21               ` Carl Worth
2006-02-14 19:13     ` Junio C Hamano
2006-02-14 19:46 ` Petr Baudis

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=Pine.LNX.4.64.0602141224110.3691@g5.osdl.org \
    --to=torvalds@osdl.org \
    --cc=cworth@cworth.org \
    --cc=git@vger.kernel.org \
    --cc=niv@iaglans.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).