Merge branch 'maint'
* maint: More friendly message when locking the index fails. Document git blame --reverse. Documentation: Note file formats send-email accepts
This commit is contained in:
commit
8c5b85ce87
@ -41,6 +41,13 @@ of lines before or after the line given by <start>.
|
|||||||
-S <revs-file>::
|
-S <revs-file>::
|
||||||
Use revs from revs-file instead of calling linkgit:git-rev-list[1].
|
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::
|
-p::
|
||||||
--porcelain::
|
--porcelain::
|
||||||
Show in a format designed for machine consumption.
|
Show in a format designed for machine consumption.
|
||||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
|||||||
[verse]
|
[verse]
|
||||||
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-p] [-w] [--incremental] [-L n,m]
|
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-p] [-w] [--incremental] [-L n,m]
|
||||||
[-S <revs-file>] [-M] [-C] [-C] [--since=<date>]
|
[-S <revs-file>] [-M] [-C] [-C] [--since=<date>]
|
||||||
[<rev> | --contents <file>] [--] <file>
|
[<rev> | --contents <file> | --reverse <rev>] [--] <file>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -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
|
specified on the command line, the user will be prompted with a ReadLine
|
||||||
enabled interface to provide the necessary information.
|
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
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
|
@ -742,8 +742,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
|
|||||||
if (newfd < 0) {
|
if (newfd < 0) {
|
||||||
if (refresh_flags & REFRESH_QUIET)
|
if (refresh_flags & REFRESH_QUIET)
|
||||||
exit(128);
|
exit(128);
|
||||||
die("unable to create '%s.lock': %s",
|
unable_to_lock_index_die(get_index_file(), lock_error);
|
||||||
get_index_file(), strerror(lock_error));
|
|
||||||
}
|
}
|
||||||
if (write_cache(newfd, active_cache, active_nr) ||
|
if (write_cache(newfd, active_cache, active_nr) ||
|
||||||
commit_locked_index(lock_file))
|
commit_locked_index(lock_file))
|
||||||
|
1
cache.h
1
cache.h
@ -484,6 +484,7 @@ struct lock_file {
|
|||||||
};
|
};
|
||||||
#define LOCK_DIE_ON_ERROR 1
|
#define LOCK_DIE_ON_ERROR 1
|
||||||
#define LOCK_NODEREF 2
|
#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_update(struct lock_file *, const char *path, int);
|
||||||
extern int hold_lock_file_for_append(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 *);
|
extern int commit_lock_file(struct lock_file *);
|
||||||
|
16
lockfile.c
16
lockfile.c
@ -155,11 +155,25 @@ static int lock_file(struct lock_file *lk, const char *path, int flags)
|
|||||||
return lk->fd;
|
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 hold_lock_file_for_update(struct lock_file *lk, const char *path, int flags)
|
||||||
{
|
{
|
||||||
int fd = lock_file(lk, path, flags);
|
int fd = lock_file(lk, path, flags);
|
||||||
if (fd < 0 && (flags & LOCK_DIE_ON_ERROR))
|
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;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user