Merge branch 'kh/commit'

* kh/commit: (33 commits)
  git-commit --allow-empty
  git-commit: Allow to amend a merge commit that does not change the tree
  quote_path: fix collapsing of relative paths
  Make git status usage say git status instead of git commit
  Fix --signoff in builtin-commit differently.
  git-commit: clean up die messages
  Do not generate full commit log message if it is not going to be used
  Remove git-status from list of scripts as it is builtin
  Fix off-by-one error when truncating the diff out of the commit message.
  builtin-commit.c: export GIT_INDEX_FILE for launch_editor as well.
  Add a few more tests for git-commit
  builtin-commit: Include the diff in the commit message when verbose.
  builtin-commit: fix partial-commit support
  Fix add_files_to_cache() to take pathspec, not user specified list of files
  Export three helper functions from ls-files
  builtin-commit: run commit-msg hook with correct message file
  builtin-commit: do not color status output shown in the message template
  file_exists(): dangling symlinks do exist
  Replace "runstatus" with "status" in the tests
  t7501-commit: Add test for git commit <file> with dirty index.
  ...
This commit is contained in:
Junio C Hamano
2007-12-04 17:16:33 -08:00
23 changed files with 1249 additions and 103 deletions

View File

@ -23,11 +23,9 @@ static const char * const git_tag_usage[] = {
static char signingkey[1000];
static void launch_editor(const char *path, struct strbuf *buffer)
void launch_editor(const char *path, struct strbuf *buffer, const char *const *env)
{
const char *editor, *terminal;
struct child_process child;
const char *args[3];
editor = getenv("GIT_EDITOR");
if (!editor && editor_program)
@ -48,14 +46,12 @@ static void launch_editor(const char *path, struct strbuf *buffer)
if (!editor)
editor = "vi";
memset(&child, 0, sizeof(child));
child.argv = args;
args[0] = editor;
args[1] = path;
args[2] = NULL;
if (strcmp(editor, ":")) {
const char *args[] = { editor, path, NULL };
if (run_command(&child))
die("There was a problem with the editor %s.", editor);
if (run_command_v_opt_cd_env(args, 0, NULL, env))
die("There was a problem with the editor %s.", editor);
}
if (strbuf_read_file(buffer, path, 0) < 0)
die("could not read message file '%s': %s",
@ -322,7 +318,7 @@ static void create_tag(const unsigned char *object, const char *tag,
write_or_die(fd, tag_template, strlen(tag_template));
close(fd);
launch_editor(path, buf);
launch_editor(path, buf, NULL);
unlink(path);
free(path);