git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Shawn Pearce <spearce@spearce.org>
To: Martin Waitz <tali@admingilde.org>
Cc: git@vger.kernel.org
Subject: Re: [RFC] git commit --branch
Date: Mon, 29 May 2006 18:16:29 -0400	[thread overview]
Message-ID: <20060529221629.GB29054@spearce.org> (raw)
In-Reply-To: <20060529215537.GH14325@admingilde.org>

Martin Waitz <tali@admingilde.org> wrote:
> hoi :)
> 
> On Mon, May 29, 2006 at 05:35:43PM -0400, Shawn Pearce wrote:
> > Now that diff+apply is probably faster than a 3 way merge in
> > read-tree precisely because it doesn't need to run merge-recursive
> > I'm starting to look at how we can use apply to do partial
> > application of a patch and use RCS' diff3 or just drop a reject
> > file out when a hunk doesn't apply cleanly.
> 
> but when applying patches, we have to be careful not to overwrite
> any changes in the working tree which have not yet been committed.
> With read-tree it should operate entirely in its temporary index without
> touching the working tree.

Agreed.  But that's not always what you want.  There's two cases of
applying a patch:

	1) Apply this patch but only affect my working tree if everything
	is going to patch clean.  If anything goes wrong fail without
	touching anything.  git-apply already does this.

	2) I know that not all hunks in this patch will apply cleanly. So
	do the best you can by applying what you can and leave me the
	remainder for manual merging.  git-merge-recursive does this
	through RCS' diff3.

But I think I want #2 built into git-apply where it can handle
add/rename/delete cases without the expense of git-merge-recursive.
I also want it to apply what it can and leave me reject files _NOT_
a messy RCS style conflict in the file.  Some people just prefer
reject files.  I know someone has asked about this in the past as
Emacs has a good merge tool based on reject files.

But in the case of #2 we get a mess in our working directory and in
our index as the patch didn't go in cleanly.  That's OK.  I want
the unmerged stages in the index and I want the working directory
to contain the conflicts as I want to fix that all up before commit.

> > > But then an operation as important as commit has to be bullet-proof
> > > and I don't like to do anything complex in there.
> > 
> > I agree.  But I'd like to see some sort of functionality to
> > automatically handle some common topic branche cases in commit.
> > Of course I consider the current commit tool to already be too
> > complex (like being able to pull the commit message from any
> > random commit).
> 
> And I really feel guilt for trying to add even more.
> Is there some other way to add such a feature?

Not really.  Short of adding a new command which is a variant of
git-commit specialized for this type of work.  Which may be what I
wind up doing to get what I want.
 
> I have been dreaming of such a system for years now, and with GIT
> it really feels feasible at last.
> Graphics programs could compose an image out of different layers for
> ages, now it is time for version control software to do the same :-)

Heh.  Its not quite as simple as it is in an image editor.  But yes,
I agree.  Darcs can sort of do this I believe.  StGIT and pg both
attempt to do some basic operations but don't really get everything
right.

-- 
Shawn.

  reply	other threads:[~2006-05-29 22:16 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-29 20:28 [RFC] git commit --branch Martin Waitz
2006-05-29 20:41 ` Shawn Pearce
2006-05-29 21:22   ` Martin Waitz
2006-05-29 21:35     ` Shawn Pearce
2006-05-29 21:55       ` Martin Waitz
2006-05-29 22:16         ` Shawn Pearce [this message]
2006-05-29 21:14 ` Johannes Schindelin
2006-05-29 21:27   ` Jakub Narebski
2006-05-29 21:37   ` Martin Waitz
2006-05-29 21:58     ` Johannes Schindelin
2006-05-30  9:12 ` Junio C Hamano
2006-05-30 21:05   ` Martin Waitz
2006-05-30 22:52     ` Junio C Hamano
2006-05-31 15:21       ` Martin Waitz
2006-06-05 18:22       ` 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=20060529221629.GB29054@spearce.org \
    --to=spearce@spearce.org \
    --cc=git@vger.kernel.org \
    --cc=tali@admingilde.org \
    /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).