From: Junio C Hamano Date: Fri, 18 Nov 2011 19:30:02 +0000 (-0800) Subject: Sync with 1.7.7.4 X-Git-Tag: v1.7.8-rc4~15 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/4c00c852b3f2596f246811ca933eef357183581b?ds=inline;hp=-c Sync with 1.7.7.4 --- 4c00c852b3f2596f246811ca933eef357183581b diff --combined Makefile index ee34eab8c5,5dbe4f7908..34ac795783 --- a/Makefile +++ b/Makefile @@@ -250,6 -250,10 +250,6 @@@ all: # DEFAULT_EDITOR='$GIT_FALLBACK_EDITOR', # DEFAULT_EDITOR='"C:\Program Files\Vim\gvim.exe" --nofork' # -# Define COMPUTE_HEADER_DEPENDENCIES if your compiler supports the -MMD option -# and you want to avoid rebuilding objects when an unrelated header file -# changes. -# # Define CHECK_HEADER_DEPENDENCIES to check for problems in the hard-coded # dependency rules. # @@@ -515,9 -519,9 +515,10 @@@ LIB_H += compat/mingw. LIB_H += compat/obstack.h LIB_H += compat/win32/pthread.h LIB_H += compat/win32/syslog.h -LIB_H += compat/win32/sys/poll.h +LIB_H += compat/win32/poll.h LIB_H += compat/win32/dirent.h +LIB_H += connected.h + LIB_H += convert.h LIB_H += csum-file.h LIB_H += decorate.h LIB_H += delta.h @@@ -559,7 -563,6 +560,7 @@@ LIB_H += rerere. LIB_H += resolve-undo.h LIB_H += revision.h LIB_H += run-command.h +LIB_H += sequencer.h LIB_H += sha1-array.h LIB_H += sha1-lookup.h LIB_H += sideband.h @@@ -599,7 -602,6 +600,7 @@@ LIB_OBJS += commit. LIB_OBJS += compat/obstack.o LIB_OBJS += config.o LIB_OBJS += connect.o +LIB_OBJS += connected.o LIB_OBJS += convert.o LIB_OBJS += copy.o LIB_OBJS += csum-file.o @@@ -669,7 -671,6 +670,7 @@@ LIB_OBJS += revision. LIB_OBJS += run-command.o LIB_OBJS += server-info.o LIB_OBJS += setup.o +LIB_OBJS += sequencer.o LIB_OBJS += sha1-array.o LIB_OBJS += sha1-lookup.o LIB_OBJS += sha1_file.o @@@ -1088,7 -1089,6 +1089,7 @@@ ifeq ($(uname_S),Windows NO_PREAD = YesPlease NEEDS_CRYPTO_WITH_SSL = YesPlease NO_LIBGEN_H = YesPlease + NO_SYS_POLL_H = YesPlease NO_SYMLINK_HEAD = YesPlease NO_IPV6 = YesPlease NO_SETENV = YesPlease @@@ -1127,7 -1127,7 +1128,7 @@@ BASIC_CFLAGS = -nologo -I. -I../zlib -Icompat/vcbuild -Icompat/vcbuild/include -DWIN32 -D_CONSOLE -DHAVE_STRING_H -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE COMPAT_OBJS = compat/msvc.o compat/winansi.o \ compat/win32/pthread.o compat/win32/syslog.o \ - compat/win32/sys/poll.o compat/win32/dirent.o + compat/win32/poll.o compat/win32/dirent.o COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -DHAVE_ALLOCA_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\" BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib EXTLIBS = user32.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib @@@ -1182,7 -1182,6 +1183,7 @@@ ifneq (,$(findstring MINGW,$(uname_S)) NO_PREAD = YesPlease NEEDS_CRYPTO_WITH_SSL = YesPlease NO_LIBGEN_H = YesPlease + NO_SYS_POLL_H = YesPlease NO_SYMLINK_HEAD = YesPlease NO_SETENV = YesPlease NO_UNSETENV = YesPlease @@@ -1216,7 -1215,7 +1217,7 @@@ COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\" COMPAT_OBJS += compat/mingw.o compat/winansi.o \ compat/win32/pthread.o compat/win32/syslog.o \ - compat/win32/sys/poll.o compat/win32/dirent.o + compat/win32/poll.o compat/win32/dirent.o EXTLIBS += -lws2_32 PTHREAD_LIBS = X = .exe @@@ -1247,15 -1246,6 +1248,15 @@@ endi ifdef CHECK_HEADER_DEPENDENCIES COMPUTE_HEADER_DEPENDENCIES = USE_COMPUTED_HEADER_DEPENDENCIES = +else +ifndef COMPUTE_HEADER_DEPENDENCIES +dep_check = $(shell $(CC) $(ALL_CFLAGS) \ + -c -MF /dev/null -MMD -MP -x c /dev/null -o /dev/null 2>&1; \ + echo $$?) +ifeq ($(dep_check),0) +COMPUTE_HEADER_DEPENDENCIES=YesPlease +endif +endif endif ifdef COMPUTE_HEADER_DEPENDENCIES @@@ -1908,7 -1898,7 +1909,7 @@@ dep_dirs := $(addsuffix .depend,$(sort ifdef COMPUTE_HEADER_DEPENDENCIES $(dep_dirs): - mkdir -p $@ + @mkdir -p $@ missing_dep_dirs := $(filter-out $(wildcard $(dep_dirs)),$(dep_dirs)) dep_file = $(dir $@).depend/$(notdir $@).d @@@ -2009,13 -1999,13 +2010,13 @@@ builtin/branch.o builtin/checkout.o bui builtin/bundle.o bundle.o transport.o: bundle.h builtin/bisect--helper.o builtin/rev-list.o bisect.o: bisect.h builtin/clone.o builtin/fetch-pack.o transport.o: fetch-pack.h - builtin/grep.o builtin/pack-objects.o transport-helper.o: thread-utils.h + builtin/grep.o builtin/pack-objects.o transport-helper.o thread-utils.o: thread-utils.h builtin/send-pack.o transport.o: send-pack.h builtin/log.o builtin/shortlog.o: shortlog.h builtin/prune.o builtin/reflog.o reachable.o: reachable.h builtin/commit.o builtin/revert.o wt-status.o: wt-status.h builtin/tar-tree.o archive-tar.o: tar.h - connect.o transport.o http-backend.o: url.h + connect.o transport.o url.o http-backend.o: url.h http-fetch.o http-walker.o remote-curl.o transport.o walker.o: walker.h http.o http-walker.o http-push.o http-fetch.o remote-curl.o: http.h url.h @@@ -2129,21 -2119,17 +2130,21 @@@ po/git.pot: $(LOCALIZED_C pot: po/git.pot +FIND_SOURCE_FILES = ( git ls-files '*.[hcS]' 2>/dev/null || \ + $(FIND) . \( -name .git -type d -prune \) \ + -o \( -name '*.[hcS]' -type f -print \) ) + $(ETAGS_TARGET): FORCE $(RM) $(ETAGS_TARGET) - $(FIND) . -name '*.[hcS]' -print | xargs etags -a -o $(ETAGS_TARGET) + $(FIND_SOURCE_FILES) | xargs etags -a -o $(ETAGS_TARGET) tags: FORCE $(RM) tags - $(FIND) . -name '*.[hcS]' -print | xargs ctags -a + $(FIND_SOURCE_FILES) | xargs ctags -a cscope: $(RM) cscope* - $(FIND) . -name '*.[hcS]' -print | xargs cscope -b + $(FIND_SOURCE_FILES) | xargs cscope -b ### Detect prefix changes TRACK_CFLAGS = $(CC):$(subst ','\'',$(ALL_CFLAGS)):\ @@@ -2298,7 -2284,8 +2299,7 @@@ install: al $(INSTALL) $(install_bindir_programs) '$(DESTDIR_SQ)$(bindir_SQ)' $(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(mergetools_instdir_SQ)' - (cd mergetools && $(TAR) cf - .) | \ - (cd '$(DESTDIR_SQ)$(mergetools_instdir_SQ)' && umask 022 && $(TAR) xof -) + $(INSTALL) -m 644 mergetools/* '$(DESTDIR_SQ)$(mergetools_instdir_SQ)' ifndef NO_PERL $(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install $(MAKE) -C gitweb install diff --combined builtin/name-rev.c index 7864056f1e,e8862b5de2..1b374583c2 --- a/builtin/name-rev.c +++ b/builtin/name-rev.c @@@ -172,9 -172,7 +172,9 @@@ static void show_name(const struct obje } static char const * const name_rev_usage[] = { - "git name-rev [options] ( --all | --stdin | ... )", + "git name-rev [options] ...", + "git name-rev [options] --all", + "git name-rev [options] --stdin", NULL }; @@@ -291,7 -289,7 +291,7 @@@ int cmd_name_rev(int argc, const char * max = get_max_object_index(); for (i = 0; i < max; i++) { struct object *obj = get_indexed_object(i); - if (!obj) + if (!obj || obj->type != OBJ_COMMIT) continue; show_name(obj, NULL, always, allow_undefined, data.name_only); diff --combined notes-merge.c index e9e4199311,d0e5034da4..ce10aacf29 --- a/notes-merge.c +++ b/notes-merge.c @@@ -21,14 -21,6 +21,6 @@@ void init_notes_merge_options(struct no o->verbosity = NOTES_MERGE_VERBOSITY_DEFAULT; } - #define OUTPUT(o, v, ...) \ - do { \ - if ((o)->verbosity >= (v)) { \ - printf(__VA_ARGS__); \ - puts(""); \ - } \ - } while (0) - static int path_to_sha1(const char *path, unsigned char *sha1) { char hex_sha1[40]; @@@ -392,21 -384,26 +384,26 @@@ static int merge_one_change_manual(stru strbuf_addf(&(o->commit_msg), "\t%s\n", sha1_to_hex(p->obj)); - OUTPUT(o, 2, "Auto-merging notes for %s", sha1_to_hex(p->obj)); + if (o->verbosity >= 2) + printf("Auto-merging notes for %s\n", sha1_to_hex(p->obj)); check_notes_merge_worktree(o); if (is_null_sha1(p->local)) { /* D/F conflict, checkout p->remote */ assert(!is_null_sha1(p->remote)); - OUTPUT(o, 1, "CONFLICT (delete/modify): Notes for object %s " - "deleted in %s and modified in %s. Version from %s " - "left in tree.", sha1_to_hex(p->obj), lref, rref, rref); + if (o->verbosity >= 1) + printf("CONFLICT (delete/modify): Notes for object %s " + "deleted in %s and modified in %s. Version from %s " + "left in tree.\n", + sha1_to_hex(p->obj), lref, rref, rref); write_note_to_worktree(p->obj, p->remote); } else if (is_null_sha1(p->remote)) { /* D/F conflict, checkout p->local */ assert(!is_null_sha1(p->local)); - OUTPUT(o, 1, "CONFLICT (delete/modify): Notes for object %s " - "deleted in %s and modified in %s. Version from %s " - "left in tree.", sha1_to_hex(p->obj), rref, lref, lref); + if (o->verbosity >= 1) + printf("CONFLICT (delete/modify): Notes for object %s " + "deleted in %s and modified in %s. Version from %s " + "left in tree.\n", + sha1_to_hex(p->obj), rref, lref, lref); write_note_to_worktree(p->obj, p->local); } else { /* "regular" conflict, checkout result of ll_merge() */ @@@ -415,8 -412,9 +412,9 @@@ reason = "add/add"; assert(!is_null_sha1(p->local)); assert(!is_null_sha1(p->remote)); - OUTPUT(o, 1, "CONFLICT (%s): Merge conflict in notes for " - "object %s", reason, sha1_to_hex(p->obj)); + if (o->verbosity >= 1) + printf("CONFLICT (%s): Merge conflict in notes for " + "object %s\n", reason, sha1_to_hex(p->obj)); ll_merge_in_worktree(o, p); } @@@ -438,24 -436,30 +436,30 @@@ static int merge_one_change(struct note case NOTES_MERGE_RESOLVE_MANUAL: return merge_one_change_manual(o, p, t); case NOTES_MERGE_RESOLVE_OURS: - OUTPUT(o, 2, "Using local notes for %s", sha1_to_hex(p->obj)); + if (o->verbosity >= 2) + printf("Using local notes for %s\n", + sha1_to_hex(p->obj)); /* nothing to do */ return 0; case NOTES_MERGE_RESOLVE_THEIRS: - OUTPUT(o, 2, "Using remote notes for %s", sha1_to_hex(p->obj)); + if (o->verbosity >= 2) + printf("Using remote notes for %s\n", + sha1_to_hex(p->obj)); if (add_note(t, p->obj, p->remote, combine_notes_overwrite)) die("BUG: combine_notes_overwrite failed"); return 0; case NOTES_MERGE_RESOLVE_UNION: - OUTPUT(o, 2, "Concatenating local and remote notes for %s", - sha1_to_hex(p->obj)); + if (o->verbosity >= 2) + printf("Concatenating local and remote notes for %s\n", + sha1_to_hex(p->obj)); if (add_note(t, p->obj, p->remote, combine_notes_concatenate)) die("failed to concatenate notes " "(combine_notes_concatenate)"); return 0; case NOTES_MERGE_RESOLVE_CAT_SORT_UNIQ: - OUTPUT(o, 2, "Concatenating unique lines in local and remote " - "notes for %s", sha1_to_hex(p->obj)); + if (o->verbosity >= 2) + printf("Concatenating unique lines in local and remote " + "notes for %s\n", sha1_to_hex(p->obj)); if (add_note(t, p->obj, p->remote, combine_notes_cat_sort_uniq)) die("failed to concatenate notes " "(combine_notes_cat_sort_uniq)"); @@@ -518,8 -522,9 +522,9 @@@ static int merge_from_diffs(struct note conflicts = merge_changes(o, changes, &num_changes, t); free(changes); - OUTPUT(o, 4, "Merge result: %i unmerged notes and a %s notes tree", - conflicts, t->dirty ? "dirty" : "clean"); + if (o->verbosity >= 4) + printf("Merge result: %i unmerged notes and a %s notes tree\n", + conflicts, t->dirty ? "dirty" : "clean"); return conflicts ? -1 : 1; } @@@ -570,8 -575,7 +575,8 @@@ int notes_merge(struct notes_merge_opti /* Dereference o->local_ref into local_sha1 */ if (!resolve_ref(o->local_ref, local_sha1, 0, NULL)) die("Failed to resolve local notes ref '%s'", o->local_ref); - else if (!check_ref_format(o->local_ref) && is_null_sha1(local_sha1)) + else if (!check_refname_format(o->local_ref, 0) && + is_null_sha1(local_sha1)) local = NULL; /* local_sha1 == null_sha1 indicates unborn ref */ else if (!(local = lookup_commit_reference(local_sha1))) die("Could not parse local commit %s (%s)", @@@ -584,7 -588,7 +589,7 @@@ * Failed to get remote_sha1. If o->remote_ref looks like an * unborn ref, perform the merge using an empty notes tree. */ - if (!check_ref_format(o->remote_ref)) { + if (!check_refname_format(o->remote_ref, 0)) { hashclr(remote_sha1); remote = NULL; } else { @@@ -617,33 -621,40 +622,40 @@@ if (!bases) { base_sha1 = null_sha1; base_tree_sha1 = EMPTY_TREE_SHA1_BIN; - OUTPUT(o, 4, "No merge base found; doing history-less merge"); + if (o->verbosity >= 4) + printf("No merge base found; doing history-less merge\n"); } else if (!bases->next) { base_sha1 = bases->item->object.sha1; base_tree_sha1 = bases->item->tree->object.sha1; - OUTPUT(o, 4, "One merge base found (%.7s)", - sha1_to_hex(base_sha1)); + if (o->verbosity >= 4) + printf("One merge base found (%.7s)\n", + sha1_to_hex(base_sha1)); } else { /* TODO: How to handle multiple merge-bases? */ base_sha1 = bases->item->object.sha1; base_tree_sha1 = bases->item->tree->object.sha1; - OUTPUT(o, 3, "Multiple merge bases found. Using the first " - "(%.7s)", sha1_to_hex(base_sha1)); + if (o->verbosity >= 3) + printf("Multiple merge bases found. Using the first " + "(%.7s)\n", sha1_to_hex(base_sha1)); } - OUTPUT(o, 4, "Merging remote commit %.7s into local commit %.7s with " - "merge-base %.7s", sha1_to_hex(remote->object.sha1), - sha1_to_hex(local->object.sha1), sha1_to_hex(base_sha1)); + if (o->verbosity >= 4) + printf("Merging remote commit %.7s into local commit %.7s with " + "merge-base %.7s\n", sha1_to_hex(remote->object.sha1), + sha1_to_hex(local->object.sha1), + sha1_to_hex(base_sha1)); if (!hashcmp(remote->object.sha1, base_sha1)) { /* Already merged; result == local commit */ - OUTPUT(o, 2, "Already up-to-date!"); + if (o->verbosity >= 2) + printf("Already up-to-date!\n"); hashcpy(result_sha1, local->object.sha1); goto found_result; } if (!hashcmp(local->object.sha1, base_sha1)) { /* Fast-forward; result == remote commit */ - OUTPUT(o, 2, "Fast-forward"); + if (o->verbosity >= 2) + printf("Fast-forward\n"); hashcpy(result_sha1, remote->object.sha1); goto found_result; } @@@ -685,8 -696,9 +697,9 @@@ int notes_merge_commit(struct notes_mer int path_len = strlen(path), i; const char *msg = strstr(partial_commit->buffer, "\n\n"); - OUTPUT(o, 3, "Committing notes in notes merge worktree at %.*s", - path_len - 1, path); + if (o->verbosity >= 3) + printf("Committing notes in notes merge worktree at %.*s\n", + path_len - 1, path); if (!msg || msg[2] == '\0') die("partial notes commit has empty message"); @@@ -701,7 -713,9 +714,9 @@@ unsigned char obj_sha1[20], blob_sha1[20]; if (ent->len - path_len != 40 || get_sha1_hex(relpath, obj_sha1)) { - OUTPUT(o, 3, "Skipping non-SHA1 entry '%s'", ent->name); + if (o->verbosity >= 3) + printf("Skipping non-SHA1 entry '%s'\n", + ent->name); continue; } @@@ -713,14 -727,16 +728,16 @@@ if (add_note(partial_tree, obj_sha1, blob_sha1, NULL)) die("Failed to add resolved note '%s' to notes tree", ent->name); - OUTPUT(o, 4, "Added resolved note for object %s: %s", - sha1_to_hex(obj_sha1), sha1_to_hex(blob_sha1)); + if (o->verbosity >= 4) + printf("Added resolved note for object %s: %s\n", + sha1_to_hex(obj_sha1), sha1_to_hex(blob_sha1)); } create_notes_commit(partial_tree, partial_commit->parents, msg, result_sha1); - OUTPUT(o, 4, "Finalized notes merge commit: %s", - sha1_to_hex(result_sha1)); + if (o->verbosity >= 4) + printf("Finalized notes merge commit: %s\n", + sha1_to_hex(result_sha1)); free(path); return 0; } @@@ -732,7 -748,8 +749,8 @@@ int notes_merge_abort(struct notes_merg int ret; strbuf_addstr(&buf, git_path(NOTES_MERGE_WORKTREE)); - OUTPUT(o, 3, "Removing notes merge worktree at %s", buf.buf); + if (o->verbosity >= 3) + printf("Removing notes merge worktree at %s\n", buf.buf); ret = remove_dir_recursively(&buf, 0); strbuf_release(&buf); return ret;