Anonymous committed 8c5b85c Merge

Merge branch 'maint'

* maint:
More friendly message when locking the index fails.
Document git blame --reverse.
Documentation: Note file formats send-email accepts

Comments (0)

Files changed (6)


 -S <revs-file>::
 	Use revs from revs-file instead of calling linkgit:git-rev-list[1].
+	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
 	Show in a format designed for machine consumption.


 '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>


 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 ''
+This format expects the first line of the file to contain the "Cc:" value
+and the "Subject:" of the message as the second line.


 		if (newfd < 0) {
 			if (refresh_flags & REFRESH_QUIET)
-			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) ||
 #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 *);
 	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;