Merge branch 'sp/lazy-mkdir'
authorJunio C Hamano <junkio@cox.net>
Fri, 14 Jul 2006 22:38:37 +0000 (15:38 -0700)
committerJunio C Hamano <junkio@cox.net>
Fri, 14 Jul 2006 22:38:37 +0000 (15:38 -0700)
* sp/lazy-mkdir:
Make lazy mkdir more robust.

56 files changed:
Documentation/git-ls-files.txt
Documentation/repository-layout.txt
Documentation/urls.txt
commit.c
contrib/emacs/git.el
daemon.c
diff.c
git-commit.sh
git-fetch.sh
git.c
gitweb/gitweb.css
t/t4013-diff-various.sh
t/t4013/diff.diff-tree_--cc_--patch-with-stat_--summary_master
t/t4013/diff.diff-tree_--cc_--patch-with-stat_master
t/t4013/diff.diff-tree_--cc_--stat_--summary_master
t/t4013/diff.diff-tree_--cc_--stat_master
t/t4013/diff.diff-tree_--cc_master
t/t4013/diff.diff-tree_-c_--abbrev_master
t/t4013/diff.diff-tree_-c_--stat_--summary_master
t/t4013/diff.diff-tree_-c_--stat_master
t/t4013/diff.diff-tree_-c_master
t/t4013/diff.diff-tree_-p_-m_master
t/t4013/diff.format-patch_--attach_--stdout_initial..master
t/t4013/diff.format-patch_--attach_--stdout_initial..master^
t/t4013/diff.format-patch_--attach_--stdout_initial..side
t/t4013/diff.format-patch_--stdout_initial..master
t/t4013/diff.format-patch_--stdout_initial..master^
t/t4013/diff.format-patch_--stdout_initial..side
t/t4013/diff.log_--patch-with-stat_--summary_master_--_dir_
t/t4013/diff.log_--patch-with-stat_master
t/t4013/diff.log_--patch-with-stat_master_--_dir_
t/t4013/diff.log_--root_--cc_--patch-with-stat_--summary_master
t/t4013/diff.log_--root_--patch-with-stat_--summary_master
t/t4013/diff.log_--root_--patch-with-stat_master
t/t4013/diff.log_--root_-c_--patch-with-stat_--summary_master
t/t4013/diff.log_--root_-p_master
t/t4013/diff.log_--root_master
t/t4013/diff.log_-SF_-p_master
t/t4013/diff.log_-SF_master
t/t4013/diff.log_-p_master
t/t4013/diff.log_master
t/t4013/diff.show_master
t/t4013/diff.whatchanged_--patch-with-stat_--summary_master_--_dir_
t/t4013/diff.whatchanged_--patch-with-stat_master
t/t4013/diff.whatchanged_--patch-with-stat_master_--_dir_
t/t4013/diff.whatchanged_--root_--cc_--patch-with-stat_--summary_master
t/t4013/diff.whatchanged_--root_--patch-with-stat_--summary_master
t/t4013/diff.whatchanged_--root_--patch-with-stat_master
t/t4013/diff.whatchanged_--root_-c_--patch-with-stat_--summary_master
t/t4013/diff.whatchanged_--root_-p_master
t/t4013/diff.whatchanged_--root_master
t/t4013/diff.whatchanged_-SF_-p_master
t/t4013/diff.whatchanged_-SF_master
t/t4013/diff.whatchanged_-p_master
t/t4013/diff.whatchanged_master
upload-pack.c
index 4d8a2ad2d753426a697d9e82ff76e6ad278572db..8520b971111e8b015ac3d08b207a3ab37505ccca 100644 (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
 --------------------------------------------------------------
 
index b52dfdc3081537c68f2fb12635fc986b0221dd4a..275d18bb545f3b14ad1f7de50d4224f184a507f8 100644 (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
index 9abec806d9908ab28518e24b32c40eb0701e3c3d..9d2ad469ecf12d509d99be1262a555e685178b58 100644 (file)
@@ -10,12 +10,12 @@ 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
+SSH is the default transport protocol and also supports an
 scp-like syntax.  Both syntaxes support username expansion,
 as does the native git protocol. The following three are
 identical to the last three above, respectively:
index 522a6f3aca644f968b825abf83e1fa6474b559eb..6ac3bf7554ec92cec2222c1f3a8f7d3565977688 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -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;
 }
index ebd00ef9c471f284d26fecd44e3fd7668903b50a..34c995046d8cd783cf165e8d2e40cb0d11f85f59 100644 (file)
 
 (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
index e096bd7ef638273b525848fbe0018863871ea93d..e4ec676301c965e0b0ec81995f4e1fb77363c373 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -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);
 }
diff --git a/diff.c b/diff.c
index 287a927ce3131fd3a5c9151e5ea1e560842767a1..8b44756136dbb040c7c82e07ca535be0b66ffb30 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -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)
-{
-       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 int parse_color(const char *name, int len)
+{
+       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);
index 802dd7243e233b7be773154311c3d8791fc7d610..4cf3fab05cd3c3367173c86a65665ddfc1d89805 100755 (executable)
@@ -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
index ff1769952b704d3ee3123395274da76e8f09a373..ee99280a2ab3abdcc340d66661747968a60c84ec 100755 (executable)
@@ -153,7 +153,7 @@ fast_forward_local () {
        then
                if now_=$(cat "$GIT_DIR/$1") && test "$now_" = "$2"
                then
-                       [ "$verbose" ] && echo >&2 "* $1: same as $3"
+                       [ "$verbose" ] && echo >&2 "* $1: same as $3" ||:
                else
                        echo >&2 "* $1: updating with $3"
                        git-update-ref -m "$rloga: updating tag" "$1" "$2"
diff --git a/git.c b/git.c
index 102735af6c0cfb496a04593ba466a9fbb18f693d..ee5a0e86a71119b5ac11c351a982e31c87649a15 100644 (file)
--- a/git.c
+++ b/git.c
@@ -133,13 +133,12 @@ static int handle_alias(int *argcp, const char ***argv)
                                fflush(stderr);
                        }
 
+                       new_argv = realloc(new_argv, sizeof(char*) *
+                                          (count + *argcp + 1));
                        /* insert after command name */
-                       if (*argcp > 1) {
-                               new_argv = realloc(new_argv, sizeof(char*) *
-                                                  (count + *argcp));
-                               memcpy(new_argv + count, *argv + 1,
-                                      sizeof(char*) * *argcp);
-                       }
+                       memcpy(new_argv + count, *argv + 1,
+                              sizeof(char*) * *argcp);
+                       new_argv[count+*argcp] = NULL;
 
                        *argv = new_argv;
                        *argcp += count - 1;
index 98410f5b6c971efcc59ac69514936b02fbe68d17..fffdb13d09a40397745861bb6ec5dcc79c798b0d 100644 (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,8 +144,13 @@ 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 {
index 36658fb17df1c76c1550daa7282278a28fb4e5b1..b24c829f0f987a3a3951f1adfa7caaf2082da471 100755 (executable)
@@ -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" &&
index 0ac9800913d9fe9f67215db9e4a58668f41b7a19..3a9f78a09df1bb12aefbb2b5fb75fd0b9455ed06 100644 (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(-)
index f6ecf763669a670e67d15c6bf5319a6dbf65b379..49f23b9215c3179d8923915ee2e497ccbc53875a 100644 (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(-)
index 712ffd2d896bc6bf946da4d9b07a4a9735b8452c..cc6eb3b3d50f2d620df7116bf64992a4dd42b736 100644 (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(-)
index 8d5bdc985adc5e0b240da279c172e341bf546ef3..fae7f33255faef186aa7b987c29adfe33d0365f1 100644 (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(-)
index e57d943bdca76c4f65be87b01cb93792ed404a50..5ecb4e14ae4718bb26dbe5657abd5660dc45914e 100644 (file)
@@ -1,5 +1,5 @@
 $ git diff-tree --cc master
-176b998f5d647cbd77a9d8acf4531e930754d16d
+59d314ad6f356dd08601a4cd5e530381da3e3c64
 diff --cc dir/sub
 index cead32e,7289e35..992913c
 --- a/dir/sub
index 39d511a7cf2355359b10a7ce1a2ee89d03d1f5bf..b8e4aa2530717abc7d7b8bea62f12d615dfcd759 100644 (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
 $
index 2d239feb5df14fc10caafc444f4cad7debad5916..ac9f641fb48272f25f3385dfbbd05777564f16bc 100644 (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(-)
index 226300b93cf94c9bf463a20bdd479e2663d0a6d4..c2fe6a98c5f9818f9caf5e0a314aee45831e5329 100644 (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(-)
index c258efe2221daa59b28f5d4f9950c3029f2f3c08..e2d2bb26114ac886fbf2467dc7a33ec8cfab5daf 100644 (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
 $
index 1be721560ae660d706c123e74bf032c955133c60..b60bea039d991675e9d1480d5089c416aa68200a 100644 (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
index a89bbbbcfbe261b64ade3657da82ed4fb5ad0cbc..b4745e10010c1cbaa708b3f6bc49e3e97e051d90 100644 (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 +++
index 4de9091a4059ea9b64b346cbb131852b43c123b4..a9d1cd368bf10738a35b6cc61c5b215186b9066b 100644 (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
index 3769fa6daf6a10bea7004fa850f76513603cc33f..57b9d0bdc1abc39d27baf4b71ead6b1654c8a2fa 100644 (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 +++
index b7b4e7ca911fc8be6607e224c1bca8b5da934c04..c33302e92f694810eaa1866a1e0174d1526ec91b 100644 (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 +++
index e56dd98df375c51c82cf36e8281853f80f1f75cf..03d0f9693c08167c5f8ca5d84a69c55ee134cd96 100644 (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 +++
index e7ddbf48141d744ae257607900832715ead78e25..d10a46523ba269b9012ac14fb9220cf78ebcd4b4 100644 (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 +++
index cc5537697d2be504ead9390510b4bd1b4c44ef08..3ceb8e73c5d4e963a2c08eddf41197431ad52178 100644 (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(-)
index b97969dc98eae978d29193886cef0fab6eecf125..43d77761f988b7f43f46a5d8fd85d406ef9caa42 100644 (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 +++
index 71a6d0f853de9c178fb454cca5021d0deca94ca9..5187a26816723476b049c44bb3801816e8672cdf 100644 (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(-)
index b652c6a8234a42d2897c61ed2b5487d68867903f..c9640976a8f3bd724004f945b00d71f43f00c8ea 100644 (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 +++
index b24a504759c118a4166c3262ddebee2c073b7b41..ad050af55ffa6983bc08ef5919dd20229584fd59 100644 (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 +++
index 1e9bdc4c1c5209fd6f6e92c128a56cade0a05dc5..628c6c03bc6195268c3e7e003478fd042ef36db2 100644 (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 +++
index 3a155d288c71a113d9a069d3efee0c7ecb27f94d..5d4e0f13b59652b170c0b2498319f970d071f774 100644 (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 +++
index 2296986ad1132adf8be157792157927fdcce5736..217a2eb203718b91ccd79a04e0369f4c5d2905aa 100644 (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
index 7554a468d16839903f128d3b2871b84ac0f07e4b..e17ccfc2340eadbb8c393de0aa2793f6f899ba56 100644 (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>
index db2264c6e95293e35df04e41538043610659d41c..5e3243897294d1fc4193c1de3fec95ce58ab22af 100644 (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
 
index f307b4d2a844c1c20bf6c7f36ea6ec9fff7c5af0..6162ed2018cbf464790a2c5322422e5cce396d5d 100644 (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
 
index e82a72f6f868623918623d7e904f269b5c568de4..f8fefef2c3869337ba048d5cd6d95169dc60cf00 100644 (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
index 7b86ed1f5d1014d3c70b68ca8303818798c7477e..e9d9e7b40a08d803901ac001e4bf9f0c37ad8b15 100644 (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>
index 3772a87e136abde3c1172d5e1760de8a107646bd..9e6e1f27105ca50262e5eb3f2ff132b46c12fe45 100644 (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
 
index 054513f3126ca902c52b011c613b6a2f0df43f8b..6a467cccc190449049b7baed2dde0a2f9027e663 100644 (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(-)
index a89b573f45bd85fcfab58c29cad387d4e8bfdc2a..1e1bbe19638eeeffb4e656239545ea91fda3dbf2 100644 (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 +++
index b6d9752164d6a299f5fd1ed07248c278e77527d3..13789f169b6803ba71680470197c50b51795e4e4 100644 (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(-)
index e9e17cdafbf67303266015f51975db2aa32f6f8b..5facf2543db0135ceb3aafdc5ffe0395b429f44c 100644 (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 +++
index f707bfa3a1d7d935f637bc8643e2ff28f1a1b903..02911535870b012720c9ae095499c61e6e242c7e 100644 (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 +++
index 61aca4171122f64dd73aa8db066af8500e200d06..9b0349cd555eb17836b8c056d7aae8cf1eabe537 100644 (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 +++
index 596765e8044d1bcc9ae3d02d568b0125fa7cd1a2..10f6767e498b0d5bdadd73067e4ef2dd5f028e89 100644 (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 +++
index b4cd05e5769f1ec798480174530fb9278e8b809c..ebf1f0661e07bd06098d1609a5a22b8e9bbae436 100644 (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
index 011a22178f84bdfb5fa1f1fa580f73ee9834f451..a405cb6138857d3a1bc1b590aa55565c34770e4c 100644 (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
index 6a76f4e60430ec4ebd3ae3edfd2bac44f911bc23..f39da84822845984e0f431cf84e71fc48853a3c8 100644 (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
 
index a4fe6f8a39b53f35e3a1b9f9cb1bc9c8f2167271..0499321d0ebf57fc2d583afd46ce7813a1ba9fde 100644 (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
 
index f9a445672598eba1808da6cf76727cf95b4ee57d..f18d43209c0a90d2d6fd474e849690f1b2120cfe 100644 (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
index c22416c00649acded52a652abcf6bd93fb5d0c6f..cd3bcc2c7269c17ff25504c8b7ca02b55ba8d8ed 100644 (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
index b18eb9ba0dbe8b5020aaaa698d98a4d1b76aa49c..94aa0dab4866f86f197dc84956db5e19601a603a 100644 (file)
@@ -51,6 +51,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;