From c4ba87a6e2fccbf4d763ed0212a20a784b964ef8 Mon Sep 17 00:00:00 2001 From: Todd Zullinger Date: Wed, 18 Feb 2009 22:51:06 -0500 Subject: [PATCH 1/3] Documentation: Note file formats send-email accepts Signed-off-by: Todd Zullinger Signed-off-by: Junio C Hamano --- Documentation/git-send-email.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt index ff4aeff4e6d..66bf3b2fcdc 100644 --- a/Documentation/git-send-email.txt +++ b/Documentation/git-send-email.txt @@ -19,6 +19,19 @@ The header of the email is configurable by command line options. If not specified on the command line, the user will be prompted with a ReadLine enabled interface to provide the necessary information. +There are two formats accepted for patch files: + +1. mbox format files ++ +This is what linkgit:git-format-patch[1] generates. Most headers and MIME +formatting are ignored. + +2. The original format used by Greg Kroah-Hartman's 'send_lots_of_email.pl' +script ++ +This format expects the first line of the file to contain the "Cc:" value +and the "Subject:" of the message as the second line. + OPTIONS ------- From b452cc16d85ea9de7d3f15c83a917b5534a91120 Mon Sep 17 00:00:00 2001 From: Matthieu Moy Date: Thu, 19 Feb 2009 13:34:48 +0100 Subject: [PATCH 2/3] Document git blame --reverse. This was introduced in 85af7929ee125385c2771fa4eaccfa2f29dc63c9 but not documented outside the commit message. Signed-off-by: Matthieu Moy Signed-off-by: Junio C Hamano --- Documentation/blame-options.txt | 7 +++++++ Documentation/git-blame.txt | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt index 1ab1b96cf9e..7f28432254a 100644 --- a/Documentation/blame-options.txt +++ b/Documentation/blame-options.txt @@ -41,6 +41,13 @@ of lines before or after the line given by . -S :: Use revs from revs-file instead of calling linkgit:git-rev-list[1]. +--reverse:: + Walk history forward instead of backward. Instead of showing + the revision in which a line appeared, this shows the last + revision in which a line has existed. This requires a range of + revision like START..END where the path to blame exists in + START. + -p:: --porcelain:: Show in a format designed for machine consumption. diff --git a/Documentation/git-blame.txt b/Documentation/git-blame.txt index fba374d6527..cc934e55c38 100644 --- a/Documentation/git-blame.txt +++ b/Documentation/git-blame.txt @@ -10,7 +10,7 @@ SYNOPSIS [verse] 'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-p] [-w] [--incremental] [-L n,m] [-S ] [-M] [-C] [-C] [--since=] - [ | --contents ] [--] + [ | --contents | --reverse ] [--] DESCRIPTION ----------- From e43a6fd3e94888d76779ad79fb568ed180e5fcdf Mon Sep 17 00:00:00 2001 From: Matthieu Moy Date: Thu, 19 Feb 2009 13:54:18 +0100 Subject: [PATCH 3/3] More friendly message when locking the index fails. Just saying that index.lock exists doesn't tell the user _what_ to do to fix the problem. We should give an indication that it's normally safe to delete index.lock after making sure git isn't running here. Signed-off-by: Matthieu Moy Signed-off-by: Junio C Hamano --- builtin-update-index.c | 3 +-- cache.h | 1 + lockfile.c | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/builtin-update-index.c b/builtin-update-index.c index 65d5775107f..daca0f775e4 100644 --- a/builtin-update-index.c +++ b/builtin-update-index.c @@ -742,8 +742,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix) if (newfd < 0) { if (refresh_flags & REFRESH_QUIET) exit(128); - die("unable to create '%s.lock': %s", - get_index_file(), strerror(lock_error)); + unable_to_lock_index_die(get_index_file(), lock_error); } if (write_cache(newfd, active_cache, active_nr) || commit_locked_index(lock_file)) diff --git a/cache.h b/cache.h index 3a33b1e82b0..0e2f219b2b4 100644 --- a/cache.h +++ b/cache.h @@ -484,6 +484,7 @@ struct lock_file { }; #define LOCK_DIE_ON_ERROR 1 #define LOCK_NODEREF 2 +extern NORETURN void unable_to_lock_index_die(const char *path, int err); extern int hold_lock_file_for_update(struct lock_file *, const char *path, int); extern int hold_lock_file_for_append(struct lock_file *, const char *path, int); extern int commit_lock_file(struct lock_file *); diff --git a/lockfile.c b/lockfile.c index 8589155532d..8e556ff8c96 100644 --- a/lockfile.c +++ b/lockfile.c @@ -158,11 +158,25 @@ static int lock_file(struct lock_file *lk, const char *path, int flags) return lk->fd; } + +NORETURN void unable_to_lock_index_die(const char *path, int err) +{ + if (errno == EEXIST) { + die("Unable to create '%s.lock': %s.\n\n" + "If no other git process is currently running, this probably means a\n" + "git process crashed in this repository earlier. Make sure no other git\n" + "process is running and remove the file manually to continue.", + path, strerror(err)); + } else { + die("Unable to create '%s.lock': %s", path, strerror(err)); + } +} + int hold_lock_file_for_update(struct lock_file *lk, const char *path, int flags) { int fd = lock_file(lk, path, flags); if (fd < 0 && (flags & LOCK_DIE_ON_ERROR)) - die("unable to create '%s.lock': %s", path, strerror(errno)); + unable_to_lock_index_die(path, errno); return fd; }