summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-02-20 07:44:07 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-02-20 07:44:07 (GMT)
commit8c5b85ce87d15e4db37a6408f03b0eb71dde080e (patch)
tree71b226a7452da6d52d07a60c9957424cd64d0a19
parent7d233dea5f4e299fdac8d6cfb610bcd4d60a82b7 (diff)
parente43a6fd3e94888d76779ad79fb568ed180e5fcdf (diff)
downloadgit-8c5b85ce87d15e4db37a6408f03b0eb71dde080e.zip
git-8c5b85ce87d15e4db37a6408f03b0eb71dde080e.tar.gz
git-8c5b85ce87d15e4db37a6408f03b0eb71dde080e.tar.bz2
Merge branch 'maint'
* maint: More friendly message when locking the index fails. Document git blame --reverse. Documentation: Note file formats send-email accepts
-rw-r--r--Documentation/blame-options.txt7
-rw-r--r--Documentation/git-blame.txt2
-rw-r--r--Documentation/git-send-email.txt13
-rw-r--r--builtin-update-index.c3
-rw-r--r--cache.h1
-rw-r--r--lockfile.c16
6 files changed, 38 insertions, 4 deletions
diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt
index 1ab1b96..7f28432 100644
--- a/Documentation/blame-options.txt
+++ b/Documentation/blame-options.txt
@@ -41,6 +41,13 @@ of lines before or after the line given by <start>.
-S <revs-file>::
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 6999cf2..4ef54d6 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 <revs-file>] [-M] [-C] [-C] [--since=<date>]
- [<rev> | --contents <file>] [--] <file>
+ [<rev> | --contents <file> | --reverse <rev>] [--] <file>
DESCRIPTION
-----------
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index ff4aeff..66bf3b2 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
-------
diff --git a/builtin-update-index.c b/builtin-update-index.c
index 5604977..dd43d5b 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 21bbf9b..21a6310 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 021c337..1db1a2f 100644
--- a/lockfile.c
+++ b/lockfile.c
@@ -155,11 +155,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;
}