Re: [PATCH v2 2/2] git-add: introduce --edit (to edit the diff vs. the index)
From: Pieter de Bie <hidden>
Date: 2016-06-15 22:44:41
Subsystem:
the rest · Maintainer:
Linus Torvalds
On 5 jun 2008, at 18:20, Johannes Schindelin wrote:
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;