Re: [PATCH v2 2/2] git-add: introduce --edit (to edit the diff vs. the index)
- From
- Pieter de Bie <pdebie@ai.rug.nl>
- Date
- Jun 5, 2008, 18:12 UTC
- Message-ID
- <DDEBE262-2D0A-4F2E-8928-C268A845F645@ai.rug.nl>
- In-Reply-To
- <alpine.DEB.1.00.0806051720300.21190@racer>
On 5 jun 2008, at 18:20, Johannes Schindelin wrote:
Show 10 quoted lines
> > With "git add -e [<files>]", Git will fire up an editor with the > current > diff relative to the index (i.e. what you would get with "git diff > [<files>]"). > > Now you can edit the patch as much as you like, including adding/ > removing > lines, editing the text, whatever. Make sure, though, that the first > character of the hunk lines is still a space, a plus or a minus.
Nice feature! However, the lockfile isn't deleted on my system (OS X), perhaps because the atexit() isn't called after an exec(). How about this patch?
diff --git a/builtin-add.c b/builtin-add.c index 05ae40d..07fdd2e 100644 --- a/builtin-add.c +++ b/builtin-add.c @@ -192,6 +192,8 @@ int edit_patch(int argc, const char **argv, const char *prefix) struct child_process child; int ac; struct stat st; + const char * apply_args[] = { "apply", "--fixup-line-counts", + "--cached", lock.filename, NULL }; memset(&child, 0, sizeof(child)); child.argv = xcalloc(sizeof(const char *), (argc + 5)); @@ -224,10 +226,11 @@ int edit_patch(int argc, const char **argv, const char *prefix) return 0; } - execl_git_cmd("apply", "--fixup-line-counts", "--cached", - lock.filename, NULL); + child.argv = apply_args; + if (run_command(&child)) + return 1; - return 1; + return 0; } static struct lock_file lock_file;