Merge branch 'jc/clone-bind-failure' into next

* jc/clone-bind-failure:
  fetch/clone: check return status from ls-remote
  gitweb.css: Use monospace fonts for commits and tree-diff.
  Do not use perl in git-commit.sh
  diff: Support 256 colors
  diff: Support both attributes and colors
  Documentation about exclude/ignore files
  daemon: new option --detach to run git-daemon in background
  daemon: new option --pid-file=<path> to store the pid
  upload-pack: ignore write errors to stderr
  daemon: if one of the standard fds is missing open it to /dev/null
  daemon: use a custom die routine with syslog
  Documentation: Fix ssh://[user@]host.xz URL
  Adjust t4013 tests to corrected format-patch.
  format-patch: Generate a newline between the subject header and the message body
  t4013 diff format tests update
  Display help for Git mode after pressing `h' or `?' in *git-status*
  Wrap long lines in docstrings in contrib/emacs/git.el
This commit is contained in:
Junio C Hamano
2006-07-13 23:12:39 -07:00
56 changed files with 425 additions and 205 deletions

View File

@@ -207,7 +207,7 @@ An exclude pattern is of the following format:
An example:
--------------------------------------------------------------
$ cat .git/ignore
$ cat .git/info/exclude
# ignore objects and archives, anywhere in the tree.
*.[oa]
$ cat Documentation/.gitignore
@@ -217,7 +217,7 @@ An example:
!foo.html
$ git-ls-files --ignored \
--exclude='Documentation/*.[0-9]' \
--exclude-from=.git/ignore \
--exclude-from=.git/info/exclude \
--exclude-per-directory=.gitignore
--------------------------------------------------------------

View File

@@ -120,9 +120,11 @@ info/grafts::
info/exclude::
This file, by convention among Porcelains, stores the
exclude pattern list. `git status` looks at it, but
otherwise it is not looked at by any of the core git
commands.
exclude pattern list. `.gitignore` is the per-directory
ignore file. `git status`, `git add`, `git rm` and `git
clean` look at it but the core git commands do not look
at it. See also: gitlink:git-ls-files[1] `--exclude-from`
and `--exclude-per-directory`.
remotes::
Stores shorthands to be used to give URL and default

View File

@@ -10,9 +10,9 @@ to name the remote repository:
- https://host.xz/path/to/repo.git/
- git://host.xz/path/to/repo.git/
- git://host.xz/~user/path/to/repo.git/
- ssh://[user@]host.xz/path/to/repo.git/
- ssh://[user@]host.xz/~user/path/to/repo.git/
- ssh://[user@]host.xz/~/path/to/repo.git
- ssh://+++[user@+++]host.xz/path/to/repo.git/
- ssh://+++[user@+++]host.xz/~user/path/to/repo.git/
- ssh://+++[user@+++]host.xz/~/path/to/repo.git
===============================================================
SSH Is the default transport protocol and also supports an

View File

@@ -655,6 +655,9 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit
continue;
}
if (!subject)
body = 1;
if (is_empty_line(line, &linelen)) {
if (!body)
continue;
@@ -662,8 +665,6 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit
continue;
if (fmt == CMIT_FMT_SHORT)
break;
} else {
body = 1;
}
if (subject) {
@@ -702,6 +703,12 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit
/* Make sure there is an EOLN for the non-oneline case */
if (fmt != CMIT_FMT_ONELINE)
buf[offset++] = '\n';
/*
* make sure there is another EOLN to separate the headers from whatever
* body the caller appends if we haven't already written a body
*/
if (fmt == CMIT_FMT_EMAIL && !body)
buf[offset++] = '\n';
buf[offset] = '\0';
return offset;
}

View File

@@ -59,14 +59,16 @@
(defcustom git-committer-name nil
"User name to use for commits.
The default is to fall back to the repository config, then to `add-log-full-name' and then to `user-full-name'."
The default is to fall back to the repository config,
then to `add-log-full-name' and then to `user-full-name'."
:group 'git
:type '(choice (const :tag "Default" nil)
(string :tag "Name")))
(defcustom git-committer-email nil
"Email address to use for commits.
The default is to fall back to the git repository config, then to `add-log-mailing-address' and then to `user-mail-address'."
The default is to fall back to the git repository config,
then to `add-log-mailing-address' and then to `user-mail-address'."
:group 'git
:type '(choice (const :tag "Default" nil)
(string :tag "Email")))
@@ -86,6 +88,7 @@ The default is to fall back to the git repository config, then to `add-log-maili
:group 'git
:type 'string)
(defface git-status-face
'((((class color) (background light)) (:foreground "purple")))
"Git mode face used to highlight added and modified files."
@@ -149,7 +152,8 @@ The default is to fall back to the git repository config, then to `add-log-maili
(apply #'call-process "git" nil buffer nil args)))
(defun git-call-process-env-string (env &rest args)
"Wrapper for call-process that sets environment strings, and returns the process output as a string."
"Wrapper for call-process that sets environment strings,
and returns the process output as a string."
(with-temp-buffer
(and (eq 0 (apply #' git-call-process-env t env args))
(buffer-string))))
@@ -939,6 +943,8 @@ The default is to fall back to the git repository config, then to `add-log-maili
(let ((map (make-keymap))
(diff-map (make-sparse-keymap)))
(suppress-keymap map)
(define-key map "?" 'git-help)
(define-key map "h" 'git-help)
(define-key map " " 'git-next-file)
(define-key map "a" 'git-add-file)
(define-key map "c" 'git-commit-file)
@@ -1008,5 +1014,10 @@ Commands:
(goto-char (point-min)))
(message "%s is not a git working tree." dir)))
(defun git-help ()
"Display help for Git mode."
(interactive)
(describe-function 'git-status-mode))
(provide 'git)
;;; git.el ends here

View File

@@ -95,6 +95,12 @@ static void loginfo(const char *err, ...)
va_end(params);
}
static void NORETURN daemon_die(const char *err, va_list params)
{
logreport(LOG_ERR, err, params);
exit(1);
}
static int avoid_alias(char *p)
{
int sl, ndot;
@@ -656,6 +662,45 @@ static int service_loop(int socknum, int *socklist)
}
}
/* if any standard file descriptor is missing open it to /dev/null */
static void sanitize_stdfds(void)
{
int fd = open("/dev/null", O_RDWR, 0);
while (fd != -1 && fd < 2)
fd = dup(fd);
if (fd == -1)
die("open /dev/null or dup failed: %s", strerror(errno));
if (fd > 2)
close(fd);
}
static void daemonize(void)
{
switch (fork()) {
case 0:
break;
case -1:
die("fork failed: %s", strerror(errno));
default:
exit(0);
}
if (setsid() == -1)
die("setsid failed: %s", strerror(errno));
close(0);
close(1);
close(2);
sanitize_stdfds();
}
static void store_pid(const char *path)
{
FILE *f = fopen(path, "w");
if (!f)
die("cannot open pid file %s: %s", path, strerror(errno));
fprintf(f, "%d\n", getpid());
fclose(f);
}
static int serve(int port)
{
int socknum, *socklist;
@@ -671,6 +716,8 @@ int main(int argc, char **argv)
{
int port = DEFAULT_GIT_PORT;
int inetd_mode = 0;
const char *pid_file = NULL;
int detach = 0;
int i;
/* Without this we cannot rely on waitpid() to tell
@@ -735,6 +782,15 @@ int main(int argc, char **argv)
user_path = arg + 12;
continue;
}
if (!strncmp(arg, "--pid-file=", 11)) {
pid_file = arg + 11;
continue;
}
if (!strcmp(arg, "--detach")) {
detach = 1;
log_syslog = 1;
continue;
}
if (!strcmp(arg, "--")) {
ok_paths = &argv[i+1];
break;
@@ -746,17 +802,14 @@ int main(int argc, char **argv)
usage(daemon_usage);
}
if (log_syslog)
if (log_syslog) {
openlog("git-daemon", 0, LOG_DAEMON);
if (strict_paths && (!ok_paths || !*ok_paths)) {
if (!inetd_mode)
die("git-daemon: option --strict-paths requires a whitelist");
logerror("option --strict-paths requires a whitelist");
exit (1);
set_die_routine(daemon_die);
}
if (strict_paths && (!ok_paths || !*ok_paths))
die("option --strict-paths requires a whitelist");
if (inetd_mode) {
struct sockaddr_storage ss;
struct sockaddr *peer = (struct sockaddr *)&ss;
@@ -770,5 +823,13 @@ int main(int argc, char **argv)
return execute(peer);
}
if (detach)
daemonize();
else
sanitize_stdfds();
if (pid_file)
store_pid(pid_file);
return serve(port);
}

174
diff.c
View File

@@ -26,30 +26,14 @@ enum color_diff {
DIFF_FILE_NEW = 5,
};
#define COLOR_NORMAL ""
#define COLOR_BOLD "\033[1m"
#define COLOR_DIM "\033[2m"
#define COLOR_UL "\033[4m"
#define COLOR_BLINK "\033[5m"
#define COLOR_REVERSE "\033[7m"
#define COLOR_RESET "\033[m"
#define COLOR_BLACK "\033[30m"
#define COLOR_RED "\033[31m"
#define COLOR_GREEN "\033[32m"
#define COLOR_YELLOW "\033[33m"
#define COLOR_BLUE "\033[34m"
#define COLOR_MAGENTA "\033[35m"
#define COLOR_CYAN "\033[36m"
#define COLOR_WHITE "\033[37m"
static const char *diff_colors[] = {
COLOR_RESET,
COLOR_NORMAL,
COLOR_BOLD,
COLOR_CYAN,
COLOR_RED,
COLOR_GREEN
/* "\033[1;38;5;2xx;48;5;2xxm\0" is 23 bytes */
static char diff_colors[][24] = {
"\033[m", /* reset */
"", /* normal */
"\033[1m", /* bold */
"\033[36m", /* cyan */
"\033[31m", /* red */
"\033[32m" /* green */
};
static int parse_diff_color_slot(const char *var, int ofs)
@@ -67,38 +51,116 @@ static int parse_diff_color_slot(const char *var, int ofs)
die("bad config variable '%s'", var);
}
static const char *parse_diff_color_value(const char *value, const char *var)
static int parse_color(const char *name, int len)
{
if (!strcasecmp(value, "normal"))
return COLOR_NORMAL;
if (!strcasecmp(value, "bold"))
return COLOR_BOLD;
if (!strcasecmp(value, "dim"))
return COLOR_DIM;
if (!strcasecmp(value, "ul"))
return COLOR_UL;
if (!strcasecmp(value, "blink"))
return COLOR_BLINK;
if (!strcasecmp(value, "reverse"))
return COLOR_REVERSE;
if (!strcasecmp(value, "reset"))
return COLOR_RESET;
if (!strcasecmp(value, "black"))
return COLOR_BLACK;
if (!strcasecmp(value, "red"))
return COLOR_RED;
if (!strcasecmp(value, "green"))
return COLOR_GREEN;
if (!strcasecmp(value, "yellow"))
return COLOR_YELLOW;
if (!strcasecmp(value, "blue"))
return COLOR_BLUE;
if (!strcasecmp(value, "magenta"))
return COLOR_MAGENTA;
if (!strcasecmp(value, "cyan"))
return COLOR_CYAN;
if (!strcasecmp(value, "white"))
return COLOR_WHITE;
static const char * const color_names[] = {
"normal", "black", "red", "green", "yellow",
"blue", "magenta", "cyan", "white"
};
char *end;
int i;
for (i = 0; i < ARRAY_SIZE(color_names); i++) {
const char *str = color_names[i];
if (!strncasecmp(name, str, len) && !str[len])
return i - 1;
}
i = strtol(name, &end, 10);
if (*name && !*end && i >= -1 && i <= 255)
return i;
return -2;
}
static int parse_attr(const char *name, int len)
{
static const int attr_values[] = { 1, 2, 4, 5, 7 };
static const char * const attr_names[] = {
"bold", "dim", "ul", "blink", "reverse"
};
int i;
for (i = 0; i < ARRAY_SIZE(attr_names); i++) {
const char *str = attr_names[i];
if (!strncasecmp(name, str, len) && !str[len])
return attr_values[i];
}
return -1;
}
static void parse_diff_color_value(const char *value, const char *var, char *dst)
{
const char *ptr = value;
int attr = -1;
int fg = -2;
int bg = -2;
if (!strcasecmp(value, "reset")) {
strcpy(dst, "\033[m");
return;
}
/* [fg [bg]] [attr] */
while (*ptr) {
const char *word = ptr;
int val, len = 0;
while (word[len] && !isspace(word[len]))
len++;
ptr = word + len;
while (*ptr && isspace(*ptr))
ptr++;
val = parse_color(word, len);
if (val >= -1) {
if (fg == -2) {
fg = val;
continue;
}
if (bg == -2) {
bg = val;
continue;
}
goto bad;
}
val = parse_attr(word, len);
if (val < 0 || attr != -1)
goto bad;
attr = val;
}
if (attr >= 0 || fg >= 0 || bg >= 0) {
int sep = 0;
*dst++ = '\033';
*dst++ = '[';
if (attr >= 0) {
*dst++ = '0' + attr;
sep++;
}
if (fg >= 0) {
if (sep++)
*dst++ = ';';
if (fg < 8) {
*dst++ = '3';
*dst++ = '0' + fg;
} else {
dst += sprintf(dst, "38;5;%d", fg);
}
}
if (bg >= 0) {
if (sep++)
*dst++ = ';';
if (bg < 8) {
*dst++ = '4';
*dst++ = '0' + bg;
} else {
dst += sprintf(dst, "48;5;%d", bg);
}
}
*dst++ = 'm';
}
*dst = 0;
return;
bad:
die("bad config value '%s' for variable '%s'", value, var);
}
@@ -145,7 +207,7 @@ int git_diff_ui_config(const char *var, const char *value)
}
if (!strncmp(var, "diff.color.", 11)) {
int slot = parse_diff_color_slot(var, 11);
diff_colors[slot] = parse_diff_color_value(value, var);
parse_diff_color_value(value, var, diff_colors[slot]);
return 0;
}
return git_default_config(var, value);

View File

@@ -266,7 +266,7 @@ yes,yes)
echo "$repo/objects" >> "$GIT_DIR/objects/info/alternates"
;;
esac
git-ls-remote "$repo" >"$GIT_DIR/CLONE_HEAD"
git-ls-remote "$repo" >"$GIT_DIR/CLONE_HEAD" || exit 1
;;
*)
case "$repo" in
@@ -296,7 +296,7 @@ yes,yes)
done
rm -f "$GIT_DIR/TMP_ALT"
fi
git-ls-remote "$repo" >"$GIT_DIR/CLONE_HEAD"
git-ls-remote "$repo" >"$GIT_DIR/CLONE_HEAD" || exit 1
;;
http://*)
if test -z "@@NO_CURL@@"

View File

@@ -138,32 +138,26 @@ run_status () {
if test -z "$untracked_files"; then
option="--directory --no-empty-directory"
fi
hdr_shown=
if test -f "$GIT_DIR/info/exclude"
then
git-ls-files -z --others $option \
git-ls-files --others $option \
--exclude-from="$GIT_DIR/info/exclude" \
--exclude-per-directory=.gitignore
else
git-ls-files -z --others $option \
git-ls-files --others $option \
--exclude-per-directory=.gitignore
fi |
@@PERL@@ -e '$/ = "\0";
my $shown = 0;
while (<>) {
chomp;
s|\\|\\\\|g;
s|\t|\\t|g;
s|\n|\\n|g;
s/^/# /;
if (!$shown) {
print "#\n# Untracked files:\n";
print "# (use \"git add\" to add to commit)\n";
print "#\n";
$shown = 1;
}
print "$_\n";
}
'
while read line; do
if [ -z "$hdr_shown" ]; then
echo '#'
echo '# Untracked files:'
echo '# (use "git add" to add to commit)'
echo '#'
hdr_shown=1
fi
echo "# $line"
done
if test -n "$verbose" -a -z "$IS_INITIAL"
then

View File

@@ -223,9 +223,16 @@ reflist=$(get_remote_refs_for_fetch "$@")
if test "$tags"
then
taglist=`IFS=" " &&
git-ls-remote $upload_pack --tags "$remote" |
(
git-ls-remote $upload_pack --tags "$remote" ||
echo fail ouch
) |
while read sha1 name
do
case "$sha1" in
fail)
exit 1
esac
case "$name" in
*^*) continue ;;
esac
@@ -235,7 +242,7 @@ then
else
echo >&2 "warning: tag ${name} ignored"
fi
done`
done` || exit
if test "$#" -gt 1
then
# remote URL plus explicit refspecs; we need to merge them.

View File

@@ -60,6 +60,7 @@ div.page_footer_text {
div.page_body {
padding: 8px;
font-family: monospace;
}
div.title, a.title {
@@ -79,6 +80,7 @@ div.title_text {
padding: 6px 0px;
border: solid #d9d8d1;
border-width: 0px 0px 1px;
font-family: monospace;
}
div.log_body {
@@ -142,10 +144,15 @@ table {
padding: 8px 4px;
}
table.project_list, table.diff_tree {
table.project_list {
border-spacing: 0;
}
table.diff_tree {
border-spacing: 0;
font-family: monospace;
}
table.blame {
border-collapse: collapse;
}

View File

@@ -7,6 +7,9 @@ test_description='Various diff formatting options'
. ./test-lib.sh
LF='
'
test_expect_success setup '
GIT_AUTHOR_DATE="2006-06-26 00:00:00 +0000" &&
@@ -31,7 +34,7 @@ test_expect_success setup '
for i in C D; do echo $i; done >>dir/sub &&
rm -f file2 &&
git update-index --remove file0 file2 dir/sub &&
git commit -m Second &&
git commit -m "Second${LF}${LF}This is the second commit." &&
GIT_AUTHOR_DATE="2006-06-26 00:02:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:02:00 +0000" &&

View File

@@ -1,5 +1,5 @@
$ git diff-tree --cc --patch-with-stat --summary master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)

View File

@@ -1,5 +1,5 @@
$ git diff-tree --cc --patch-with-stat master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)

View File

@@ -1,5 +1,5 @@
$ git diff-tree --cc --stat --summary master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)

View File

@@ -1,5 +1,5 @@
$ git diff-tree --cc --stat master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)

View File

@@ -1,5 +1,5 @@
$ git diff-tree --cc master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
diff --cc dir/sub
index cead32e,7289e35..992913c
--- a/dir/sub

View File

@@ -1,5 +1,5 @@
$ git diff-tree -c --abbrev master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
::100644 100644 100644 cead32e... 7289e35... 992913c... MM dir/sub
::100644 100644 100644 b414108... f4615da... 10a8a9f... MM file0
$

View File

@@ -1,5 +1,5 @@
$ git diff-tree -c --stat --summary master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)

View File

@@ -1,5 +1,5 @@
$ git diff-tree -c --stat master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)

View File

@@ -1,5 +1,5 @@
$ git diff-tree -c master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
::100644 100644 100644 cead32e925b1420c84c14cbf7cf755e7e45af8ad 7289e35bff32727c08dda207511bec138fdb9ea5 992913c5aa0a5476d10c49ed0f21fc0c6d1aedf3 MM dir/sub
::100644 100644 100644 b414108e81e5091fe0974a1858b4d0d22b107f70 f4615da674c09df322d6ba8d6b21ecfb1b1ba510 10a8a9f3657f91a156b9f0184ed79a20adef9f7f MM file0
$

View File

@@ -1,5 +1,5 @@
$ git diff-tree -p -m master
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
diff --git a/dir/sub b/dir/sub
index cead32e..992913c 100644
--- a/dir/sub
@@ -21,7 +21,7 @@ index b414108..10a8a9f 100644
+A
+B
+C
176b998f5d647cbd77a9d8acf4531e930754d16d
59d314ad6f356dd08601a4cd5e530381da3e3c64
diff --git a/dir/sub b/dir/sub
index 7289e35..992913c 100644
--- a/dir/sub

View File

@@ -1,5 +1,5 @@
$ git format-patch --attach --stdout initial..master
From 7952a93e09bf565b5592766a438b40cd81f4846f Mon Sep 17 00:00:00 2001
From 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:01:00 +0000
Subject: [PATCH] Second
@@ -11,6 +11,9 @@ This is a multi-part message in MIME format.
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++
@@ -18,10 +21,10 @@ Content-Transfer-Encoding: 8bit
3 files changed, 5 insertions(+), 3 deletions(-)
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/x-patch;
name="7952a93e09bf565b5592766a438b40cd81f4846f.diff"
name="1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
filename="7952a93e09bf565b5592766a438b40cd81f4846f.diff"
filename="1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff"
diff --git a/dir/sub b/dir/sub
index 35d242b..8422d40 100644
@@ -57,7 +60,7 @@ index 01e79c3..0000000
From 889b315013ef9f2e2f90aa0b054b267c8a557847 Mon Sep 17 00:00:00 2001
From 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:02:00 +0000
Subject: [PATCH] Third
@@ -69,16 +72,17 @@ This is a multi-part message in MIME format.
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit
---
dir/sub | 2 ++
file1 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/x-patch;
name="889b315013ef9f2e2f90aa0b054b267c8a557847.diff"
name="9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
filename="889b315013ef9f2e2f90aa0b054b267c8a557847.diff"
filename="9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff"
diff --git a/dir/sub b/dir/sub
index 8422d40..cead32e 100644
@@ -116,6 +120,7 @@ This is a multi-part message in MIME format.
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,5 +1,5 @@
$ git format-patch --attach --stdout initial..master^
From 7952a93e09bf565b5592766a438b40cd81f4846f Mon Sep 17 00:00:00 2001
From 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:01:00 +0000
Subject: [PATCH] Second
@@ -11,6 +11,9 @@ This is a multi-part message in MIME format.
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++
@@ -18,10 +21,10 @@ Content-Transfer-Encoding: 8bit
3 files changed, 5 insertions(+), 3 deletions(-)
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/x-patch;
name="7952a93e09bf565b5592766a438b40cd81f4846f.diff"
name="1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
filename="7952a93e09bf565b5592766a438b40cd81f4846f.diff"
filename="1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44.diff"
diff --git a/dir/sub b/dir/sub
index 35d242b..8422d40 100644
@@ -57,7 +60,7 @@ index 01e79c3..0000000
From 889b315013ef9f2e2f90aa0b054b267c8a557847 Mon Sep 17 00:00:00 2001
From 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:02:00 +0000
Subject: [PATCH] Third
@@ -69,16 +72,17 @@ This is a multi-part message in MIME format.
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit
---
dir/sub | 2 ++
file1 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/x-patch;
name="889b315013ef9f2e2f90aa0b054b267c8a557847.diff"
name="9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
filename="889b315013ef9f2e2f90aa0b054b267c8a557847.diff"
filename="9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0.diff"
diff --git a/dir/sub b/dir/sub
index 8422d40..cead32e 100644

View File

@@ -11,6 +11,7 @@ This is a multi-part message in MIME format.
--------------g-i-t--v-e-r-s-i-o-n
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,8 +1,10 @@
$ git format-patch --stdout initial..master
From 7952a93e09bf565b5592766a438b40cd81f4846f Mon Sep 17 00:00:00 2001
From 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:01:00 +0000
Subject: [PATCH] Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++
@@ -42,10 +44,11 @@ index 01e79c3..0000000
g-i-t--v-e-r-s-i-o-n
From 889b315013ef9f2e2f90aa0b054b267c8a557847 Mon Sep 17 00:00:00 2001
From 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:02:00 +0000
Subject: [PATCH] Third
---
dir/sub | 2 ++
file1 | 3 +++
@@ -78,6 +81,7 @@ From c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:03:00 +0000
Subject: [PATCH] Side
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,8 +1,10 @@
$ git format-patch --stdout initial..master^
From 7952a93e09bf565b5592766a438b40cd81f4846f Mon Sep 17 00:00:00 2001
From 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:01:00 +0000
Subject: [PATCH] Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++
@@ -42,10 +44,11 @@ index 01e79c3..0000000
g-i-t--v-e-r-s-i-o-n
From 889b315013ef9f2e2f90aa0b054b267c8a557847 Mon Sep 17 00:00:00 2001
From 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:02:00 +0000
Subject: [PATCH] Third
---
dir/sub | 2 ++
file1 | 3 +++

View File

@@ -3,6 +3,7 @@ From c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:03:00 +0000
Subject: [PATCH] Side
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,6 +1,6 @@
$ git log --patch-with-stat --summary master -- dir/
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -25,7 +25,7 @@ index 35d242b..7289e35 100644
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -45,11 +45,13 @@ index 8422d40..cead32e 100644
+E
+F
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

View File

@@ -1,6 +1,6 @@
$ git log --patch-with-stat master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -48,7 +48,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -78,11 +78,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,6 +1,6 @@
$ git log --patch-with-stat master -- dir/
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -25,7 +25,7 @@ index 35d242b..7289e35 100644
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -45,11 +45,13 @@ index 8422d40..cead32e 100644
+E
+F
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

View File

@@ -1,6 +1,6 @@
$ git log --root --cc --patch-with-stat --summary master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -81,7 +81,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -112,11 +112,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,6 +1,6 @@
$ git log --root --patch-with-stat --summary master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -49,7 +49,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -80,11 +80,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,6 +1,6 @@
$ git log --root --patch-with-stat master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -48,7 +48,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -78,11 +78,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,6 +1,6 @@
$ git log --root -c --patch-with-stat --summary master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -81,7 +81,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -112,11 +112,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,6 +1,6 @@
$ git log --root -p master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -43,7 +43,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -69,11 +69,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
diff --git a/dir/sub b/dir/sub
index 35d242b..8422d40 100644

View File

@@ -1,6 +1,6 @@
$ git log --root master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -12,17 +12,19 @@ Date: Mon Jun 26 00:03:00 2006 +0000
Side
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
Third
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
commit 444ac553ac7612cc88969031b02b3767fb8a353a
Author: A U Thor <author@example.com>

View File

@@ -1,5 +1,5 @@
$ git log -SF -p master
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000

View File

@@ -1,5 +1,5 @@
$ git log -SF master
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000

View File

@@ -1,6 +1,6 @@
$ git log -p master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -43,7 +43,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -69,11 +69,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
diff --git a/dir/sub b/dir/sub
index 35d242b..8422d40 100644

View File

@@ -1,6 +1,6 @@
$ git log master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -12,17 +12,19 @@ Date: Mon Jun 26 00:03:00 2006 +0000
Side
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
Third
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
commit 444ac553ac7612cc88969031b02b3767fb8a353a
Author: A U Thor <author@example.com>

View File

@@ -1,6 +1,6 @@
$ git show master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000

View File

@@ -18,7 +18,7 @@ index 35d242b..7289e35 100644
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -38,11 +38,13 @@ index 8422d40..cead32e 100644
+E
+F
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

View File

@@ -41,7 +41,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -71,11 +71,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -18,7 +18,7 @@ index 35d242b..7289e35 100644
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -38,11 +38,13 @@ index 8422d40..cead32e 100644
+E
+F
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

View File

@@ -1,6 +1,6 @@
$ git whatchanged --root --cc --patch-with-stat --summary master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -81,7 +81,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -112,11 +112,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -42,7 +42,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -73,11 +73,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -41,7 +41,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -71,11 +71,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -1,6 +1,6 @@
$ git whatchanged --root -c --patch-with-stat --summary master
commit 176b998f5d647cbd77a9d8acf4531e930754d16d
Merge: 889b315... c7a2ab9...
commit 59d314ad6f356dd08601a4cd5e530381da3e3c64
Merge: 9a6d494... c7a2ab9...
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
@@ -81,7 +81,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -112,11 +112,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
---
dir/sub | 2 ++
file0 | 3 +++

View File

@@ -36,7 +36,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -62,11 +62,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
diff --git a/dir/sub b/dir/sub
index 35d242b..8422d40 100644

View File

@@ -9,7 +9,7 @@ Date: Mon Jun 26 00:03:00 2006 +0000
:100644 100644 01e79c3... f4615da... M file0
:000000 100644 0000000... 7289e35... A file3
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -18,11 +18,13 @@ Date: Mon Jun 26 00:02:00 2006 +0000
:100644 100644 8422d40... cead32e... M dir/sub
:000000 100644 0000000... b1e6722... A file1
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
:100644 100644 35d242b... 8422d40... M dir/sub
:100644 100644 01e79c3... b414108... M file0

View File

@@ -1,5 +1,5 @@
$ git whatchanged -SF -p master
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000

View File

@@ -1,5 +1,5 @@
$ git whatchanged -SF master
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000

View File

@@ -36,7 +36,7 @@ index 0000000..7289e35
+1
+2
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -62,11 +62,13 @@ index 0000000..b1e6722
+B
+C
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
diff --git a/dir/sub b/dir/sub
index 35d242b..8422d40 100644

View File

@@ -9,7 +9,7 @@ Date: Mon Jun 26 00:03:00 2006 +0000
:100644 100644 01e79c3... f4615da... M file0
:000000 100644 0000000... 7289e35... A file3
commit 889b315013ef9f2e2f90aa0b054b267c8a557847
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000
@@ -18,11 +18,13 @@ Date: Mon Jun 26 00:02:00 2006 +0000
:100644 100644 8422d40... cead32e... M dir/sub
:000000 100644 0000000... b1e6722... A file1
commit 7952a93e09bf565b5592766a438b40cd81f4846f
commit 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:01:00 2006 +0000
Second
This is the second commit.
:100644 100644 35d242b... 8422d40... M dir/sub
:100644 100644 01e79c3... b414108... M file0

View File

@@ -49,6 +49,10 @@ static ssize_t send_client_data(int fd, const char *data, ssize_t sz)
if (fd == 3)
/* emergency quit */
fd = 2;
if (fd == 2) {
xwrite(fd, data, sz);
return sz;
}
return safe_write(fd, data, sz);
}
p = data;