{"thread":{"id":"26454","subject":"[PATCH/RFC] Move test-*.c to test/ subdirectory","startedAt":"2011-02-09T15:14:29Z","lastAt":"2011-02-24T19:46:19Z","messageCount":54,"participants":["Nguyễn Thái Ngọc Duy","Nguyen Thai Ngoc Duy","Junio C Hamano","Jonathan Nieder","Jeff King","Piotr Krukowiecki","Sverre Rabbelier","Nicolas Pitre","Drew Northup"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"160767","messageId":"1297264469-13675-1-git-send-email-pclouds@gmail.com","threadId":"26454","inReplyTo":null,"subject":"[PATCH/RFC] Move test-*.c to test/ subdirectory","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2011-02-09T15:14:29Z","receivedAt":"2011-02-09T15:14:29Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n This makes topdir 19 files less and does not seem to break tests.\n There's only one new test(-mktemp) on pu.\n\n .gitignore                                       |   19 ------\n Makefile                                         |   71 +++++++++++-----------\n t/test-lib.sh                                    |    6 +-\n test/.gitignore                                  |   19 ++++++\n test-chmtime.c => test/chmtime.c                 |    0\n test-ctype.c => test/ctype.c                     |    0\n test-date.c => test/date.c                       |    0\n test-delta.c => test/delta.c                     |    0\n test-dump-cache-tree.c => test/dump-cache-tree.c |    0\n test-genrandom.c => test/genrandom.c             |    0\n test-index-version.c => test/index-version.c     |    0\n test-line-buffer.c => test/line-buffer.c         |    0\n test-match-trees.c => test/match-trees.c         |    0\n test-obj-pool.c => test/obj-pool.c               |    0\n test-parse-options.c => test/parse-options.c     |    0\n test-path-utils.c => test/path-utils.c           |    0\n test-run-command.c => test/run-command.c         |    0\n test-sha1.c => test/sha1.c                       |    0\n test-sigchain.c => test/sigchain.c               |    0\n test-string-pool.c => test/string-pool.c         |    0\n test-subprocess.c => test/subprocess.c           |    0\n test-svn-fe.c => test/svn-fe.c                   |    0\n test-treap.c => test/treap.c                     |    0\n 23 files changed, 58 insertions(+), 57 deletions(-)\n create mode 100644 test/.gitignore\n rename test-chmtime.c => test/chmtime.c (100%)\n rename test-ctype.c => test/ctype.c (100%)\n rename test-date.c => test/date.c (100%)\n rename test-delta.c => test/delta.c (100%)\n rename test-dump-cache-tree.c => test/dump-cache-tree.c (100%)\n rename test-genrandom.c => test/genrandom.c (100%)\n rename test-index-version.c => test/index-version.c (100%)\n rename test-line-buffer.c => test/line-buffer.c (100%)\n rename test-match-trees.c => test/match-trees.c (100%)\n rename test-obj-pool.c => test/obj-pool.c (100%)\n rename test-parse-options.c => test/parse-options.c (100%)\n rename test-path-utils.c => test/path-utils.c (100%)\n rename test-run-command.c => test/run-command.c (100%)\n rename test-sha1.c => test/sha1.c (100%)\n rename test-sigchain.c => test/sigchain.c (100%)\n rename test-string-pool.c => test/string-pool.c (100%)\n rename test-subprocess.c => test/subprocess.c (100%)\n rename test-svn-fe.c => test/svn-fe.c (100%)\n rename test-treap.c => test/treap.c (100%)\n\ndiff --git a/.gitignore b/.gitignore\nindex 3dd6ef7..a99a216 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -161,25 +161,6 @@\n /gitweb/GITWEB-BUILD-OPTIONS\n /gitweb/gitweb.cgi\n /gitweb/static/gitweb.min.*\n-/test-chmtime\n-/test-ctype\n-/test-date\n-/test-delta\n-/test-dump-cache-tree\n-/test-genrandom\n-/test-index-version\n-/test-line-buffer\n-/test-match-trees\n-/test-obj-pool\n-/test-parse-options\n-/test-path-utils\n-/test-run-command\n-/test-sha1\n-/test-sigchain\n-/test-string-pool\n-/test-subprocess\n-/test-svn-fe\n-/test-treap\n /common-cmds.h\n *.tar.gz\n *.dsc\ndiff --git a/Makefile b/Makefile\nindex 775ee83..617f910 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -416,25 +416,25 @@ PROGRAM_OBJS += http-backend.o\n \n PROGRAMS += $(patsubst %.o,git-%$X,$(PROGRAM_OBJS))\n \n-TEST_PROGRAMS_NEED_X += test-chmtime\n-TEST_PROGRAMS_NEED_X += test-ctype\n-TEST_PROGRAMS_NEED_X += test-date\n-TEST_PROGRAMS_NEED_X += test-delta\n-TEST_PROGRAMS_NEED_X += test-dump-cache-tree\n-TEST_PROGRAMS_NEED_X += test-genrandom\n-TEST_PROGRAMS_NEED_X += test-line-buffer\n-TEST_PROGRAMS_NEED_X += test-match-trees\n-TEST_PROGRAMS_NEED_X += test-obj-pool\n-TEST_PROGRAMS_NEED_X += test-parse-options\n-TEST_PROGRAMS_NEED_X += test-path-utils\n-TEST_PROGRAMS_NEED_X += test-run-command\n-TEST_PROGRAMS_NEED_X += test-sha1\n-TEST_PROGRAMS_NEED_X += test-sigchain\n-TEST_PROGRAMS_NEED_X += test-string-pool\n-TEST_PROGRAMS_NEED_X += test-subprocess\n-TEST_PROGRAMS_NEED_X += test-svn-fe\n-TEST_PROGRAMS_NEED_X += test-treap\n-TEST_PROGRAMS_NEED_X += test-index-version\n+TEST_PROGRAMS_NEED_X += test/chmtime\n+TEST_PROGRAMS_NEED_X += test/ctype\n+TEST_PROGRAMS_NEED_X += test/date\n+TEST_PROGRAMS_NEED_X += test/delta\n+TEST_PROGRAMS_NEED_X += test/dump-cache-tree\n+TEST_PROGRAMS_NEED_X += test/genrandom\n+TEST_PROGRAMS_NEED_X += test/line-buffer\n+TEST_PROGRAMS_NEED_X += test/match-trees\n+TEST_PROGRAMS_NEED_X += test/obj-pool\n+TEST_PROGRAMS_NEED_X += test/parse-options\n+TEST_PROGRAMS_NEED_X += test/path-utils\n+TEST_PROGRAMS_NEED_X += test/run-command\n+TEST_PROGRAMS_NEED_X += test/sha1\n+TEST_PROGRAMS_NEED_X += test/sigchain\n+TEST_PROGRAMS_NEED_X += test/string-pool\n+TEST_PROGRAMS_NEED_X += test/subprocess\n+TEST_PROGRAMS_NEED_X += test/svn-fe\n+TEST_PROGRAMS_NEED_X += test/treap\n+TEST_PROGRAMS_NEED_X += test/index-version\n \n TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))\n \n@@ -1829,7 +1829,7 @@ git.o git.spec \\\n \t$(patsubst %.perl,%,$(SCRIPT_PERL)) \\\n \t: GIT-VERSION-FILE\n \n-TEST_OBJS := $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS))\n+TEST_OBJS := $(patsubst test/%$X,test/%.o,$(TEST_PROGRAMS))\n GIT_OBJS := $(LIB_OBJS) $(BUILTIN_OBJS) $(PROGRAM_OBJS) $(TEST_OBJS) \\\n \tgit.o\n ifndef NO_CURL\n@@ -1839,8 +1839,8 @@ XDIFF_OBJS = xdiff/xdiffi.o xdiff/xprepare.o xdiff/xutils.o xdiff/xemit.o \\\n \txdiff/xmerge.o xdiff/xpatience.o\n VCSSVN_OBJS = vcs-svn/string_pool.o vcs-svn/line_buffer.o \\\n \tvcs-svn/repo_tree.o vcs-svn/fast_export.o vcs-svn/svndump.o\n-VCSSVN_TEST_OBJS = test-obj-pool.o test-string-pool.o \\\n-\ttest-line-buffer.o test-treap.o\n+VCSSVN_TEST_OBJS = test/obj-pool.o test/string-pool.o \\\n+\ttest/line-buffer.o test/treap.o\n OBJECTS := $(GIT_OBJS) $(XDIFF_OBJS) $(VCSSVN_OBJS)\n \n dep_files := $(foreach f,$(OBJECTS),$(dir $f).depend/$(notdir $f).d)\n@@ -1968,7 +1968,7 @@ $(VCSSVN_OBJS) $(VCSSVN_TEST_OBJS): $(LIB_H) \\\n \tvcs-svn/line_buffer.h vcs-svn/repo_tree.h vcs-svn/fast_export.h \\\n \tvcs-svn/svndump.h\n \n-test-svn-fe.o: vcs-svn/svndump.h\n+test/svn-fe.o: vcs-svn/svndump.h\n endif\n \n exec_cmd.s exec_cmd.o: EXTRA_CPPFLAGS = \\\n@@ -2100,7 +2100,8 @@ GIT-GUI-VARS: FORCE\n             fi\n endif\n \n-test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $(BINDIR_PROGRAMS_NO_X) $(TEST_PROGRAMS_NEED_X))\n+test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $(BINDIR_PROGRAMS_NO_X))\n+test_bindir_programs += $(patsubst test/%,bin-wrappers/test-%,$(TEST_PROGRAMS_NEED_X))\n \n all:: $(TEST_PROGRAMS) $(test_bindir_programs)\n \n@@ -2108,7 +2109,7 @@ bin-wrappers/%: wrap-for-bin.sh\n \t@mkdir -p bin-wrappers\n \t$(QUIET_GEN)sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n \t     -e 's|@@BUILD_DIR@@|$(shell pwd)|' \\\n-\t     -e 's|@@PROG@@|$(@F)|' < $< > $@ && \\\n+\t     -e 's|@@PROG@@|$(patsubst test-%,test/%,$(@F))|' < $< > $@ && \\\n \tchmod +x $@\n \n # GNU make supports exporting all variables by \"export\" without parameters.\n@@ -2122,27 +2123,27 @@ export NO_SVN_TESTS\n test: all\n \t$(MAKE) -C t/ all\n \n-test-ctype$X: ctype.o\n+test/ctype$X: ctype.o\n \n-test-date$X: date.o ctype.o\n+test/date$X: date.o ctype.o\n \n-test-delta$X: diff-delta.o patch-delta.o\n+test/delta$X: diff-delta.o patch-delta.o\n \n-test-line-buffer$X: vcs-svn/lib.a\n+test/line-buffer$X: vcs-svn/lib.a\n \n-test-parse-options$X: parse-options.o\n+test/parse-options$X: parse-options.o\n \n-test-string-pool$X: vcs-svn/lib.a\n+test/string-pool$X: vcs-svn/lib.a\n \n-test-svn-fe$X: vcs-svn/lib.a\n+test/svn-fe$X: vcs-svn/lib.a\n \n .PRECIOUS: $(TEST_OBJS)\n \n-test-%$X: test-%.o $(GITLIBS)\n+test/%$X: test/%.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(filter %.a,$^) $(LIBS)\n \n-check-sha1:: test-sha1$X\n-\t./test-sha1.sh\n+check-sha1:: test/sha1$X\n+\t./test/sha1.sh\n \n check: common-cmds.h\n \tif sparse; \\\ndiff --git a/t/test-lib.sh b/t/test-lib.sh\nindex 0fdc541..240caec 100644\n--- a/t/test-lib.sh\n+++ b/t/test-lib.sh\n@@ -984,9 +984,9 @@ then\n \t}\n fi\n \n-if ! test -x \"$GIT_BUILD_DIR\"/test-chmtime; then\n-\techo >&2 'You need to build test-chmtime:'\n-\techo >&2 'Run \"make test-chmtime\" in the source (toplevel) directory'\n+if ! test -x \"$GIT_BUILD_DIR\"/test/chmtime; then\n+\techo >&2 'You need to build test/chmtime:'\n+\techo >&2 'Run \"make test/chmtime\" in the source (toplevel) directory'\n \texit 1\n fi\n \ndiff --git a/test/.gitignore b/test/.gitignore\nnew file mode 100644\nindex 0000000..6e8a2a1\n--- /dev/null\n+++ b/test/.gitignore\n@@ -0,0 +1,19 @@\n+/chmtime\n+/ctype\n+/date\n+/delta\n+/dump-cache-tree\n+/genrandom\n+/index-version\n+/line-buffer\n+/match-trees\n+/obj-pool\n+/parse-options\n+/path-utils\n+/run-command\n+/sha1\n+/sigchain\n+/string-pool\n+/subprocess\n+/svn-fe\n+/treap\ndiff --git a/test-chmtime.c b/test/chmtime.c\nsimilarity index 100%\nrename from test-chmtime.c\nrename to test/chmtime.c\ndiff --git a/test-ctype.c b/test/ctype.c\nsimilarity index 100%\nrename from test-ctype.c\nrename to test/ctype.c\ndiff --git a/test-date.c b/test/date.c\nsimilarity index 100%\nrename from test-date.c\nrename to test/date.c\ndiff --git a/test-delta.c b/test/delta.c\nsimilarity index 100%\nrename from test-delta.c\nrename to test/delta.c\ndiff --git a/test-dump-cache-tree.c b/test/dump-cache-tree.c\nsimilarity index 100%\nrename from test-dump-cache-tree.c\nrename to test/dump-cache-tree.c\ndiff --git a/test-genrandom.c b/test/genrandom.c\nsimilarity index 100%\nrename from test-genrandom.c\nrename to test/genrandom.c\ndiff --git a/test-index-version.c b/test/index-version.c\nsimilarity index 100%\nrename from test-index-version.c\nrename to test/index-version.c\ndiff --git a/test-line-buffer.c b/test/line-buffer.c\nsimilarity index 100%\nrename from test-line-buffer.c\nrename to test/line-buffer.c\ndiff --git a/test-match-trees.c b/test/match-trees.c\nsimilarity index 100%\nrename from test-match-trees.c\nrename to test/match-trees.c\ndiff --git a/test-obj-pool.c b/test/obj-pool.c\nsimilarity index 100%\nrename from test-obj-pool.c\nrename to test/obj-pool.c\ndiff --git a/test-parse-options.c b/test/parse-options.c\nsimilarity index 100%\nrename from test-parse-options.c\nrename to test/parse-options.c\ndiff --git a/test-path-utils.c b/test/path-utils.c\nsimilarity index 100%\nrename from test-path-utils.c\nrename to test/path-utils.c\ndiff --git a/test-run-command.c b/test/run-command.c\nsimilarity index 100%\nrename from test-run-command.c\nrename to test/run-command.c\ndiff --git a/test-sha1.c b/test/sha1.c\nsimilarity index 100%\nrename from test-sha1.c\nrename to test/sha1.c\ndiff --git a/test-sigchain.c b/test/sigchain.c\nsimilarity index 100%\nrename from test-sigchain.c\nrename to test/sigchain.c\ndiff --git a/test-string-pool.c b/test/string-pool.c\nsimilarity index 100%\nrename from test-string-pool.c\nrename to test/string-pool.c\ndiff --git a/test-subprocess.c b/test/subprocess.c\nsimilarity index 100%\nrename from test-subprocess.c\nrename to test/subprocess.c\ndiff --git a/test-svn-fe.c b/test/svn-fe.c\nsimilarity index 100%\nrename from test-svn-fe.c\nrename to test/svn-fe.c\ndiff --git a/test-treap.c b/test/treap.c\nsimilarity index 100%\nrename from test-treap.c\nrename to test/treap.c\n-- \n1.7.4.74.g639db\n"},{"id":"160768","messageId":"AANLkTimxT3kcQBaBWagQ8Eg5CS5rf1fgaQVX1TVDQHdn@mail.gmail.com","threadId":"26454","inReplyTo":"1297264469-13675-1-git-send-email-pclouds@gmail.com","subject":"Re: [PATCH/RFC] Move test-*.c to test/ subdirectory","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2011-02-09T15:23:09Z","receivedAt":"2011-02-09T15:23:09Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"2011/2/9 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>:\n>\n> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n> ---\n>  This makes topdir 19 files less and does not seem to break tests.\n\nexcept this because test-sha1.sh wasn't moved.\n\n> -check-sha1:: test-sha1$X\n> -       ./test-sha1.sh\n> +check-sha1:: test/sha1$X\n> +       ./test/sha1.sh\n-- \nDuy\n"},{"id":"160789","messageId":"7vmxm4onwk.fsf@alter.siamese.dyndns.org","threadId":"26454","inReplyTo":"1297264469-13675-1-git-send-email-pclouds@gmail.com","subject":"Re: [PATCH/RFC] Move test-*.c to test/ subdirectory","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-02-09T22:15:23Z","receivedAt":"2011-02-09T22:15:23Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:\n\n> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n\nI like the idea of moving test-*.c out of the top-level directory, but at\nthe same time I do not think it is a sane thing to have a new directory\ncalled test/ to have only test helper commandlets.\n\nWith both t/ and test/ directories present at the top-level, even people\nwith Perl background may spot test/ before they notice t/ and expect to\nfind actual test scripts in test/ directory.\n\nPerhaps move them to t/helper/ directory instead?\n"},{"id":"160804","messageId":"1297304069-14764-1-git-send-email-pclouds@gmail.com","threadId":"26454","inReplyTo":"7vmxm4onwk.fsf@alter.siamese.dyndns.org","subject":"[PATCH] Move test-* to t/helper/ subdirectory","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2011-02-10T02:14:29Z","receivedAt":"2011-02-10T02:14:29Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n .gitignore                                         |   19 ------------\n Makefile                                           |   30 ++++++++++----------\n t/helper/.gitignore                                |   19 ++++++++++++\n test-chmtime.c => t/helper/test-chmtime.c          |    0\n test-ctype.c => t/helper/test-ctype.c              |    0\n test-date.c => t/helper/test-date.c                |    0\n test-delta.c => t/helper/test-delta.c              |    0\n .../helper/test-dump-cache-tree.c                  |    0\n test-genrandom.c => t/helper/test-genrandom.c      |    0\n .../helper/test-index-version.c                    |    0\n test-line-buffer.c => t/helper/test-line-buffer.c  |    0\n test-match-trees.c => t/helper/test-match-trees.c  |    0\n test-obj-pool.c => t/helper/test-obj-pool.c        |    0\n .../helper/test-parse-options.c                    |    0\n test-path-utils.c => t/helper/test-path-utils.c    |    0\n test-run-command.c => t/helper/test-run-command.c  |    0\n test-sha1.c => t/helper/test-sha1.c                |    0\n test-sha1.sh => t/helper/test-sha1.sh              |    4 +-\n test-sigchain.c => t/helper/test-sigchain.c        |    0\n test-string-pool.c => t/helper/test-string-pool.c  |    0\n test-subprocess.c => t/helper/test-subprocess.c    |    0\n test-svn-fe.c => t/helper/test-svn-fe.c            |    0\n test-treap.c => t/helper/test-treap.c              |    0\n t/test-lib.sh                                      |    4 +-\n 24 files changed, 38 insertions(+), 38 deletions(-)\n create mode 100644 t/helper/.gitignore\n rename test-chmtime.c => t/helper/test-chmtime.c (100%)\n rename test-ctype.c => t/helper/test-ctype.c (100%)\n rename test-date.c => t/helper/test-date.c (100%)\n rename test-delta.c => t/helper/test-delta.c (100%)\n rename test-dump-cache-tree.c => t/helper/test-dump-cache-tree.c (100%)\n rename test-genrandom.c => t/helper/test-genrandom.c (100%)\n rename test-index-version.c => t/helper/test-index-version.c (100%)\n rename test-line-buffer.c => t/helper/test-line-buffer.c (100%)\n rename test-match-trees.c => t/helper/test-match-trees.c (100%)\n rename test-obj-pool.c => t/helper/test-obj-pool.c (100%)\n rename test-parse-options.c => t/helper/test-parse-options.c (100%)\n rename test-path-utils.c => t/helper/test-path-utils.c (100%)\n rename test-run-command.c => t/helper/test-run-command.c (100%)\n rename test-sha1.c => t/helper/test-sha1.c (100%)\n rename test-sha1.sh => t/helper/test-sha1.sh (96%)\n rename test-sigchain.c => t/helper/test-sigchain.c (100%)\n rename test-string-pool.c => t/helper/test-string-pool.c (100%)\n rename test-subprocess.c => t/helper/test-subprocess.c (100%)\n rename test-svn-fe.c => t/helper/test-svn-fe.c (100%)\n rename test-treap.c => t/helper/test-treap.c (100%)\n\ndiff --git a/.gitignore b/.gitignore\nindex 3dd6ef7..a99a216 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -161,25 +161,6 @@\n /gitweb/GITWEB-BUILD-OPTIONS\n /gitweb/gitweb.cgi\n /gitweb/static/gitweb.min.*\n-/test-chmtime\n-/test-ctype\n-/test-date\n-/test-delta\n-/test-dump-cache-tree\n-/test-genrandom\n-/test-index-version\n-/test-line-buffer\n-/test-match-trees\n-/test-obj-pool\n-/test-parse-options\n-/test-path-utils\n-/test-run-command\n-/test-sha1\n-/test-sigchain\n-/test-string-pool\n-/test-subprocess\n-/test-svn-fe\n-/test-treap\n /common-cmds.h\n *.tar.gz\n *.dsc\ndiff --git a/Makefile b/Makefile\nindex 775ee83..e2b3b92 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -436,7 +436,7 @@ TEST_PROGRAMS_NEED_X += test-svn-fe\n TEST_PROGRAMS_NEED_X += test-treap\n TEST_PROGRAMS_NEED_X += test-index-version\n \n-TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))\n+TEST_PROGRAMS = $(patsubst %,t/helper/%$X,$(TEST_PROGRAMS_NEED_X))\n \n # List built-in command $C whose implementation cmd_$C() is not in\n # builtin/$C.o but is linked in as part of some other command.\n@@ -1829,7 +1829,7 @@ git.o git.spec \\\n \t$(patsubst %.perl,%,$(SCRIPT_PERL)) \\\n \t: GIT-VERSION-FILE\n \n-TEST_OBJS := $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS))\n+TEST_OBJS := $(patsubst %$X,%.o,$(TEST_PROGRAMS))\n GIT_OBJS := $(LIB_OBJS) $(BUILTIN_OBJS) $(PROGRAM_OBJS) $(TEST_OBJS) \\\n \tgit.o\n ifndef NO_CURL\n@@ -1963,12 +1963,12 @@ xdiff-interface.o $(XDIFF_OBJS): \\\n \txdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \\\n \txdiff/xutils.h xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h\n \n-$(VCSSVN_OBJS) $(VCSSVN_TEST_OBJS): $(LIB_H) \\\n+$(VCSSVN_OBJS) $(patsubst %,t/helper/%,$(VCSSVN_TEST_OBJS)): $(LIB_H) \\\n \tvcs-svn/obj_pool.h vcs-svn/trp.h vcs-svn/string_pool.h \\\n \tvcs-svn/line_buffer.h vcs-svn/repo_tree.h vcs-svn/fast_export.h \\\n \tvcs-svn/svndump.h\n \n-test-svn-fe.o: vcs-svn/svndump.h\n+t/helper/test-svn-fe.o: vcs-svn/svndump.h\n endif\n \n exec_cmd.s exec_cmd.o: EXTRA_CPPFLAGS = \\\n@@ -2108,7 +2108,7 @@ bin-wrappers/%: wrap-for-bin.sh\n \t@mkdir -p bin-wrappers\n \t$(QUIET_GEN)sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n \t     -e 's|@@BUILD_DIR@@|$(shell pwd)|' \\\n-\t     -e 's|@@PROG@@|$(@F)|' < $< > $@ && \\\n+\t     -e 's|@@PROG@@|$(patsubst test-%,t/helper/test-%,$(@F))|' < $< > $@ && \\\n \tchmod +x $@\n \n # GNU make supports exporting all variables by \"export\" without parameters.\n@@ -2122,27 +2122,27 @@ export NO_SVN_TESTS\n test: all\n \t$(MAKE) -C t/ all\n \n-test-ctype$X: ctype.o\n+t/helper/test-ctype$X: ctype.o\n \n-test-date$X: date.o ctype.o\n+t/helper/test-date$X: date.o ctype.o\n \n-test-delta$X: diff-delta.o patch-delta.o\n+t/helper/test-delta$X: diff-delta.o patch-delta.o\n \n-test-line-buffer$X: vcs-svn/lib.a\n+t/helper/test-line-buffer$X: vcs-svn/lib.a\n \n-test-parse-options$X: parse-options.o\n+t/helper/test-parse-options$X: parse-options.o\n \n-test-string-pool$X: vcs-svn/lib.a\n+t/helper/test-string-pool$X: vcs-svn/lib.a\n \n-test-svn-fe$X: vcs-svn/lib.a\n+t/helper/test-svn-fe$X: vcs-svn/lib.a\n \n .PRECIOUS: $(TEST_OBJS)\n \n-test-%$X: test-%.o $(GITLIBS)\n+t/helper/test-%$X: t/helper/test-%.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(filter %.a,$^) $(LIBS)\n \n-check-sha1:: test-sha1$X\n-\t./test-sha1.sh\n+check-sha1:: t/helper/test-sha1$X\n+\tt/helper/test-sha1.sh\n \n check: common-cmds.h\n \tif sparse; \\\ndiff --git a/t/helper/.gitignore b/t/helper/.gitignore\nnew file mode 100644\nindex 0000000..8f1b042\n--- /dev/null\n+++ b/t/helper/.gitignore\n@@ -0,0 +1,19 @@\n+/test-chmtime\n+/test-ctype\n+/test-date\n+/test-delta\n+/test-dump-cache-tree\n+/test-genrandom\n+/test-index-version\n+/test-line-buffer\n+/test-match-trees\n+/test-obj-pool\n+/test-parse-options\n+/test-path-utils\n+/test-run-command\n+/test-sha1\n+/test-sigchain\n+/test-string-pool\n+/test-subprocess\n+/test-svn-fe\n+/test-treap\ndiff --git a/test-chmtime.c b/t/helper/test-chmtime.c\nsimilarity index 100%\nrename from test-chmtime.c\nrename to t/helper/test-chmtime.c\ndiff --git a/test-ctype.c b/t/helper/test-ctype.c\nsimilarity index 100%\nrename from test-ctype.c\nrename to t/helper/test-ctype.c\ndiff --git a/test-date.c b/t/helper/test-date.c\nsimilarity index 100%\nrename from test-date.c\nrename to t/helper/test-date.c\ndiff --git a/test-delta.c b/t/helper/test-delta.c\nsimilarity index 100%\nrename from test-delta.c\nrename to t/helper/test-delta.c\ndiff --git a/test-dump-cache-tree.c b/t/helper/test-dump-cache-tree.c\nsimilarity index 100%\nrename from test-dump-cache-tree.c\nrename to t/helper/test-dump-cache-tree.c\ndiff --git a/test-genrandom.c b/t/helper/test-genrandom.c\nsimilarity index 100%\nrename from test-genrandom.c\nrename to t/helper/test-genrandom.c\ndiff --git a/test-index-version.c b/t/helper/test-index-version.c\nsimilarity index 100%\nrename from test-index-version.c\nrename to t/helper/test-index-version.c\ndiff --git a/test-line-buffer.c b/t/helper/test-line-buffer.c\nsimilarity index 100%\nrename from test-line-buffer.c\nrename to t/helper/test-line-buffer.c\ndiff --git a/test-match-trees.c b/t/helper/test-match-trees.c\nsimilarity index 100%\nrename from test-match-trees.c\nrename to t/helper/test-match-trees.c\ndiff --git a/test-obj-pool.c b/t/helper/test-obj-pool.c\nsimilarity index 100%\nrename from test-obj-pool.c\nrename to t/helper/test-obj-pool.c\ndiff --git a/test-parse-options.c b/t/helper/test-parse-options.c\nsimilarity index 100%\nrename from test-parse-options.c\nrename to t/helper/test-parse-options.c\ndiff --git a/test-path-utils.c b/t/helper/test-path-utils.c\nsimilarity index 100%\nrename from test-path-utils.c\nrename to t/helper/test-path-utils.c\ndiff --git a/test-run-command.c b/t/helper/test-run-command.c\nsimilarity index 100%\nrename from test-run-command.c\nrename to t/helper/test-run-command.c\ndiff --git a/test-sha1.c b/t/helper/test-sha1.c\nsimilarity index 100%\nrename from test-sha1.c\nrename to t/helper/test-sha1.c\ndiff --git a/test-sha1.sh b/t/helper/test-sha1.sh\nsimilarity index 96%\nrename from test-sha1.sh\nrename to t/helper/test-sha1.sh\nindex 0f0bc5d..4e691d1 100755\n--- a/test-sha1.sh\n+++ b/t/helper/test-sha1.sh\n@@ -1,7 +1,7 @@\n #!/bin/sh\n \n dd if=/dev/zero bs=1048576 count=100 2>/dev/null |\n-/usr/bin/time ./test-sha1 >/dev/null\n+/usr/bin/time t/helper/test-sha1 >/dev/null\n \n while read expect cnt pfx\n do\n@@ -11,7 +11,7 @@ do\n \t\t\ttest -z \"$pfx\" || echo \"$pfx\"\n \t\t\tdd if=/dev/zero bs=1048576 count=$cnt 2>/dev/null |\n \t\t\tperl -pe 'y/\\000/g/'\n-\t\t} | ./test-sha1 $cnt\n+\t\t} | t/helper/test-sha1 $cnt\n \t`\n \tif test \"$expect\" = \"$actual\"\n \tthen\ndiff --git a/test-sigchain.c b/t/helper/test-sigchain.c\nsimilarity index 100%\nrename from test-sigchain.c\nrename to t/helper/test-sigchain.c\ndiff --git a/test-string-pool.c b/t/helper/test-string-pool.c\nsimilarity index 100%\nrename from test-string-pool.c\nrename to t/helper/test-string-pool.c\ndiff --git a/test-subprocess.c b/t/helper/test-subprocess.c\nsimilarity index 100%\nrename from test-subprocess.c\nrename to t/helper/test-subprocess.c\ndiff --git a/test-svn-fe.c b/t/helper/test-svn-fe.c\nsimilarity index 100%\nrename from test-svn-fe.c\nrename to t/helper/test-svn-fe.c\ndiff --git a/test-treap.c b/t/helper/test-treap.c\nsimilarity index 100%\nrename from test-treap.c\nrename to t/helper/test-treap.c\ndiff --git a/t/test-lib.sh b/t/test-lib.sh\nindex 0fdc541..eebf7a8 100644\n--- a/t/test-lib.sh\n+++ b/t/test-lib.sh\n@@ -984,9 +984,9 @@ then\n \t}\n fi\n \n-if ! test -x \"$GIT_BUILD_DIR\"/test-chmtime; then\n+if ! test -x \"$GIT_BUILD_DIR\"/t/helper/test-chmtime; then\n \techo >&2 'You need to build test-chmtime:'\n-\techo >&2 'Run \"make test-chmtime\" in the source (toplevel) directory'\n+\techo >&2 'Run \"make t/helper/test-chmtime\" in the source (toplevel) directory'\n \texit 1\n fi\n \n-- \n1.7.4.74.g639db\n"},{"id":"161489","messageId":"20110218022701.GA23435@elie","threadId":"26454","inReplyTo":"1297304069-14764-1-git-send-email-pclouds@gmail.com","subject":"[RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T02:27:01Z","receivedAt":"2011-02-18T02:27:01Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Hi,\n\nNguyễn Thái Ngọc Duy wrote:\n\n>  .gitignore                                         |   19 ------------\n>  Makefile                                           |   30 ++++++++++----------\n>  t/helper/.gitignore                                |   19 ++++++++++++\n[...]\n>  24 files changed, 38 insertions(+), 38 deletions(-)\n\nHere's a variation on the theme that just moves source and .o files\n(leaving questions about how to cope with breaking muscle memory for\nthe resulting executables for later).  What do you think?\n\nPatch 1 moves the sources for libgit.a to a subdirectory.  This seems\nappealing anyway, to encourage people to start thinking about how to\nmake it into a standalone and reusable library.\n\nPatch 2 moves source for test programs like test-sha1 to a subdirectory.\n\nPatch 3 dumps header files into an include/ subdirectory.  I'm not\nthrilled with it but it does make the toplevel directory listing\nshorter.\n\nAfter this series:\n\n $ ls | wc -l\n 86\n\nwhich fits nicely on a 113x31 terminal (but certainly not an 80x24\none).\n\nThe change descriptions need work.  Help would be appreciated.\n\nThoughts?\nJonathan Nieder (3):\n  Move libgit.a sources into a libgit/ subdirectory\n  Move test-* into a test-programs/ subdirectory\n  Move header files into a include/ subdirectory\n\n Makefile                                           |  418 ++++++++++----------\n [plus a bunch of renames]\n 208 files changed, 212 insertions(+), 206 deletions(-)\n"},{"id":"161490","messageId":"20110218023126.GB23435@elie","threadId":"26454","inReplyTo":"20110218022701.GA23435@elie","subject":"[PATCH 1/3] Move libgit.a sources into a libgit/ subdirectory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T02:31:26Z","receivedAt":"2011-02-18T02:31:26Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Move sources for libgit.a to a libgit/ subdirectory.  This way, a\nperson wanting to tackle the reusable part of git will know where to\nlook, and those looking to work on individual commands know to look\nelsewhere.\n\nPerhaps some day the libgit/ subdirectory can be managed as an\nindependent subproject (for example if it gets merged with libgit2).\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile                                        |  281 ++++++++++++-----------\n abspath.c => libgit/abspath.c                   |    0\n [ etc etc etc ]\n zlib.c => libgit/zlib.c                         |    0\n 117 files changed, 142 insertions(+), 139 deletions(-)\n rename abspath.c => libgit/abspath.c (100%)\n [ etc ]\n rename zlib.c => libgit/zlib.c (100%)\n\ndiff --git a/Makefile b/Makefile\nindex ade7923..b812c1e 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -561,121 +561,121 @@ LIB_H += utf8.h\n LIB_H += xdiff-interface.h\n LIB_H += xdiff/xdiff.h\n \n-LIB_OBJS += abspath.o\n-LIB_OBJS += advice.o\n-LIB_OBJS += alias.o\n-LIB_OBJS += alloc.o\n-LIB_OBJS += archive.o\n-LIB_OBJS += archive-tar.o\n-LIB_OBJS += archive-zip.o\n-LIB_OBJS += attr.o\n-LIB_OBJS += base85.o\n-LIB_OBJS += bisect.o\n-LIB_OBJS += blob.o\n-LIB_OBJS += branch.o\n-LIB_OBJS += bundle.o\n-LIB_OBJS += cache-tree.o\n-LIB_OBJS += color.o\n-LIB_OBJS += combine-diff.o\n-LIB_OBJS += commit.o\n-LIB_OBJS += config.o\n-LIB_OBJS += connect.o\n-LIB_OBJS += convert.o\n-LIB_OBJS += copy.o\n-LIB_OBJS += csum-file.o\n-LIB_OBJS += ctype.o\n-LIB_OBJS += date.o\n-LIB_OBJS += decorate.o\n-LIB_OBJS += diffcore-break.o\n-LIB_OBJS += diffcore-delta.o\n-LIB_OBJS += diffcore-order.o\n-LIB_OBJS += diffcore-pickaxe.o\n-LIB_OBJS += diffcore-rename.o\n-LIB_OBJS += diff-delta.o\n-LIB_OBJS += diff-lib.o\n-LIB_OBJS += diff-no-index.o\n-LIB_OBJS += diff.o\n-LIB_OBJS += dir.o\n-LIB_OBJS += editor.o\n-LIB_OBJS += entry.o\n-LIB_OBJS += environment.o\n-LIB_OBJS += exec_cmd.o\n-LIB_OBJS += fsck.o\n-LIB_OBJS += graph.o\n-LIB_OBJS += grep.o\n-LIB_OBJS += hash.o\n-LIB_OBJS += help.o\n-LIB_OBJS += hex.o\n-LIB_OBJS += ident.o\n-LIB_OBJS += levenshtein.o\n-LIB_OBJS += list-objects.o\n-LIB_OBJS += ll-merge.o\n-LIB_OBJS += lockfile.o\n-LIB_OBJS += log-tree.o\n-LIB_OBJS += mailmap.o\n-LIB_OBJS += match-trees.o\n-LIB_OBJS += merge-file.o\n-LIB_OBJS += merge-recursive.o\n-LIB_OBJS += name-hash.o\n-LIB_OBJS += notes.o\n-LIB_OBJS += notes-cache.o\n-LIB_OBJS += notes-merge.o\n-LIB_OBJS += object.o\n-LIB_OBJS += pack-check.o\n-LIB_OBJS += pack-refs.o\n-LIB_OBJS += pack-revindex.o\n-LIB_OBJS += pack-write.o\n-LIB_OBJS += pager.o\n-LIB_OBJS += parse-options.o\n-LIB_OBJS += patch-delta.o\n-LIB_OBJS += patch-ids.o\n-LIB_OBJS += path.o\n-LIB_OBJS += pkt-line.o\n-LIB_OBJS += preload-index.o\n-LIB_OBJS += pretty.o\n-LIB_OBJS += progress.o\n-LIB_OBJS += quote.o\n-LIB_OBJS += reachable.o\n-LIB_OBJS += read-cache.o\n-LIB_OBJS += reflog-walk.o\n-LIB_OBJS += refs.o\n-LIB_OBJS += remote.o\n-LIB_OBJS += replace_object.o\n-LIB_OBJS += rerere.o\n-LIB_OBJS += resolve-undo.o\n-LIB_OBJS += revision.o\n-LIB_OBJS += run-command.o\n-LIB_OBJS += server-info.o\n-LIB_OBJS += setup.o\n-LIB_OBJS += sha1-lookup.o\n-LIB_OBJS += sha1_file.o\n-LIB_OBJS += sha1_name.o\n-LIB_OBJS += shallow.o\n-LIB_OBJS += sideband.o\n-LIB_OBJS += sigchain.o\n-LIB_OBJS += strbuf.o\n-LIB_OBJS += string-list.o\n-LIB_OBJS += submodule.o\n-LIB_OBJS += symlinks.o\n-LIB_OBJS += tag.o\n-LIB_OBJS += trace.o\n-LIB_OBJS += transport.o\n-LIB_OBJS += transport-helper.o\n-LIB_OBJS += tree-diff.o\n-LIB_OBJS += tree.o\n-LIB_OBJS += tree-walk.o\n-LIB_OBJS += unpack-trees.o\n-LIB_OBJS += url.o\n-LIB_OBJS += usage.o\n-LIB_OBJS += userdiff.o\n-LIB_OBJS += utf8.o\n-LIB_OBJS += walker.o\n-LIB_OBJS += wrapper.o\n-LIB_OBJS += write_or_die.o\n-LIB_OBJS += ws.o\n-LIB_OBJS += wt-status.o\n-LIB_OBJS += xdiff-interface.o\n-LIB_OBJS += zlib.o\n+LIB_OBJS += libgit/abspath.o\n+LIB_OBJS += libgit/advice.o\n+LIB_OBJS += libgit/alias.o\n+LIB_OBJS += libgit/alloc.o\n+LIB_OBJS += libgit/archive.o\n+LIB_OBJS += libgit/archive-tar.o\n+LIB_OBJS += libgit/archive-zip.o\n+LIB_OBJS += libgit/attr.o\n+LIB_OBJS += libgit/base85.o\n+LIB_OBJS += libgit/bisect.o\n+LIB_OBJS += libgit/blob.o\n+LIB_OBJS += libgit/branch.o\n+LIB_OBJS += libgit/bundle.o\n+LIB_OBJS += libgit/cache-tree.o\n+LIB_OBJS += libgit/color.o\n+LIB_OBJS += libgit/combine-diff.o\n+LIB_OBJS += libgit/commit.o\n+LIB_OBJS += libgit/config.o\n+LIB_OBJS += libgit/connect.o\n+LIB_OBJS += libgit/convert.o\n+LIB_OBJS += libgit/copy.o\n+LIB_OBJS += libgit/csum-file.o\n+LIB_OBJS += libgit/ctype.o\n+LIB_OBJS += libgit/date.o\n+LIB_OBJS += libgit/decorate.o\n+LIB_OBJS += libgit/diffcore-break.o\n+LIB_OBJS += libgit/diffcore-delta.o\n+LIB_OBJS += libgit/diffcore-order.o\n+LIB_OBJS += libgit/diffcore-pickaxe.o\n+LIB_OBJS += libgit/diffcore-rename.o\n+LIB_OBJS += libgit/diff-delta.o\n+LIB_OBJS += libgit/diff-lib.o\n+LIB_OBJS += libgit/diff-no-index.o\n+LIB_OBJS += libgit/diff.o\n+LIB_OBJS += libgit/dir.o\n+LIB_OBJS += libgit/editor.o\n+LIB_OBJS += libgit/entry.o\n+LIB_OBJS += libgit/environment.o\n+LIB_OBJS += libgit/exec_cmd.o\n+LIB_OBJS += libgit/fsck.o\n+LIB_OBJS += libgit/graph.o\n+LIB_OBJS += libgit/grep.o\n+LIB_OBJS += libgit/hash.o\n+LIB_OBJS += libgit/help.o\n+LIB_OBJS += libgit/hex.o\n+LIB_OBJS += libgit/ident.o\n+LIB_OBJS += libgit/levenshtein.o\n+LIB_OBJS += libgit/list-objects.o\n+LIB_OBJS += libgit/ll-merge.o\n+LIB_OBJS += libgit/lockfile.o\n+LIB_OBJS += libgit/log-tree.o\n+LIB_OBJS += libgit/mailmap.o\n+LIB_OBJS += libgit/match-trees.o\n+LIB_OBJS += libgit/merge-file.o\n+LIB_OBJS += libgit/merge-recursive.o\n+LIB_OBJS += libgit/name-hash.o\n+LIB_OBJS += libgit/notes.o\n+LIB_OBJS += libgit/notes-cache.o\n+LIB_OBJS += libgit/notes-merge.o\n+LIB_OBJS += libgit/object.o\n+LIB_OBJS += libgit/pack-check.o\n+LIB_OBJS += libgit/pack-refs.o\n+LIB_OBJS += libgit/pack-revindex.o\n+LIB_OBJS += libgit/pack-write.o\n+LIB_OBJS += libgit/pager.o\n+LIB_OBJS += libgit/parse-options.o\n+LIB_OBJS += libgit/patch-delta.o\n+LIB_OBJS += libgit/patch-ids.o\n+LIB_OBJS += libgit/path.o\n+LIB_OBJS += libgit/pkt-line.o\n+LIB_OBJS += libgit/preload-index.o\n+LIB_OBJS += libgit/pretty.o\n+LIB_OBJS += libgit/progress.o\n+LIB_OBJS += libgit/quote.o\n+LIB_OBJS += libgit/reachable.o\n+LIB_OBJS += libgit/read-cache.o\n+LIB_OBJS += libgit/reflog-walk.o\n+LIB_OBJS += libgit/refs.o\n+LIB_OBJS += libgit/remote.o\n+LIB_OBJS += libgit/replace_object.o\n+LIB_OBJS += libgit/rerere.o\n+LIB_OBJS += libgit/resolve-undo.o\n+LIB_OBJS += libgit/revision.o\n+LIB_OBJS += libgit/run-command.o\n+LIB_OBJS += libgit/server-info.o\n+LIB_OBJS += libgit/setup.o\n+LIB_OBJS += libgit/sha1-lookup.o\n+LIB_OBJS += libgit/sha1_file.o\n+LIB_OBJS += libgit/sha1_name.o\n+LIB_OBJS += libgit/shallow.o\n+LIB_OBJS += libgit/sideband.o\n+LIB_OBJS += libgit/sigchain.o\n+LIB_OBJS += libgit/strbuf.o\n+LIB_OBJS += libgit/string-list.o\n+LIB_OBJS += libgit/submodule.o\n+LIB_OBJS += libgit/symlinks.o\n+LIB_OBJS += libgit/tag.o\n+LIB_OBJS += libgit/trace.o\n+LIB_OBJS += libgit/transport.o\n+LIB_OBJS += libgit/transport-helper.o\n+LIB_OBJS += libgit/tree-diff.o\n+LIB_OBJS += libgit/tree.o\n+LIB_OBJS += libgit/tree-walk.o\n+LIB_OBJS += libgit/unpack-trees.o\n+LIB_OBJS += libgit/url.o\n+LIB_OBJS += libgit/usage.o\n+LIB_OBJS += libgit/userdiff.o\n+LIB_OBJS += libgit/utf8.o\n+LIB_OBJS += libgit/walker.o\n+LIB_OBJS += libgit/wrapper.o\n+LIB_OBJS += libgit/write_or_die.o\n+LIB_OBJS += libgit/ws.o\n+LIB_OBJS += libgit/wt-status.o\n+LIB_OBJS += libgit/xdiff-interface.o\n+LIB_OBJS += libgit/zlib.o\n \n BUILTIN_OBJS += builtin/add.o\n BUILTIN_OBJS += builtin/annotate.o\n@@ -1524,7 +1524,7 @@ ifdef NO_PTHREADS\n else\n \tBASIC_CFLAGS += $(PTHREAD_CFLAGS)\n \tEXTLIBS += $(PTHREAD_LIBS)\n-\tLIB_OBJS += thread-utils.o\n+\tLIB_OBJS += libgit/thread-utils.o\n endif\n \n ifdef HAVE_PATHS_H\n@@ -1683,7 +1683,7 @@ git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \\\n \t\t$(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)\n \n-help.o: common-cmds.h\n+libgit/help.o: common-cmds.h\n \n builtin/help.o: common-cmds.h\n builtin/help.s builtin/help.o: EXTRA_CPPFLAGS = \\\n@@ -1946,21 +1946,22 @@ else\n # gcc detects!\n \n $(GIT_OBJS): $(LIB_H)\n-builtin/branch.o builtin/checkout.o builtin/clone.o builtin/reset.o branch.o transport.o: branch.h\n-builtin/bundle.o bundle.o transport.o: bundle.h\n-builtin/bisect--helper.o builtin/rev-list.o bisect.o: bisect.h\n-builtin/clone.o builtin/fetch-pack.o transport.o: fetch-pack.h\n-builtin/grep.o builtin/pack-objects.o transport-helper.o: thread-utils.h\n-builtin/send-pack.o transport.o: send-pack.h\n+builtin/branch.o builtin/checkout.o builtin/clone.o builtin/reset.o: branch.h\n+libgit/branch.o libgit/transport.o: branch.h\n+builtin/bundle.o libgit/bundle.o libgit/transport.o: bundle.h\n+builtin/bisect--helper.o builtin/rev-list.o libgit/bisect.o: bisect.h\n+builtin/clone.o builtin/fetch-pack.o libgit/transport.o: fetch-pack.h\n+builtin/grep.o builtin/pack-objects.o libgit/transport-helper.o: thread-utils.h\n+builtin/send-pack.o libgit/transport.o: send-pack.h\n builtin/log.o builtin/shortlog.o: shortlog.h\n-builtin/prune.o builtin/reflog.o reachable.o: reachable.h\n-builtin/commit.o builtin/revert.o wt-status.o: wt-status.h\n-builtin/tar-tree.o archive-tar.o: tar.h\n-connect.o transport.o http-backend.o: url.h\n-http-fetch.o http-walker.o remote-curl.o transport.o walker.o: walker.h\n+builtin/prune.o builtin/reflog.o libgit/reachable.o: reachable.h\n+builtin/commit.o builtin/revert.o libgit/wt-status.o: wt-status.h\n+builtin/tar-tree.o libgit/archive-tar.o: tar.h\n+libgit/connect.o libgit/transport.o http-backend.o: url.h\n+http-fetch.o http-walker.o remote-curl.o libgit/transport.o libgit/walker.o: walker.h\n http.o http-walker.o http-push.o http-fetch.o remote-curl.o: http.h url.h\n \n-xdiff-interface.o $(XDIFF_OBJS): \\\n+libgit/xdiff-interface.o $(XDIFF_OBJS): \\\n \txdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \\\n \txdiff/xutils.h xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h\n \n@@ -1972,7 +1973,7 @@ $(VCSSVN_OBJS) $(VCSSVN_TEST_OBJS): $(LIB_H) \\\n test-svn-fe.o: vcs-svn/svndump.h\n endif\n \n-exec_cmd.s exec_cmd.o: EXTRA_CPPFLAGS = \\\n+libgit/exec_cmd.s libgit/exec_cmd.o: EXTRA_CPPFLAGS = \\\n \t'-DGIT_EXEC_PATH=\"$(gitexecdir_SQ)\"' \\\n \t'-DBINDIR=\"$(bindir_relative_SQ)\"' \\\n \t'-DPREFIX=\"$(prefix_SQ)\"'\n@@ -1980,9 +1981,11 @@ exec_cmd.s exec_cmd.o: EXTRA_CPPFLAGS = \\\n builtin/init-db.s builtin/init-db.o: EXTRA_CPPFLAGS = \\\n \t-DDEFAULT_GIT_TEMPLATE_DIR='\"$(template_dir_SQ)\"'\n \n-config.s config.o: EXTRA_CPPFLAGS = -DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"'\n+libgit/config.s libgit/config.o: EXTRA_CPPFLAGS = \\\n+\t-DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"'\n \n-attr.s attr.o: EXTRA_CPPFLAGS = -DETC_GITATTRIBUTES='\"$(ETC_GITATTRIBUTES_SQ)\"'\n+libgit/attr.s libgit/attr.o: EXTRA_CPPFLAGS = \\\n+\t-DETC_GITATTRIBUTES='\"$(ETC_GITATTRIBUTES_SQ)\"'\n \n http.s http.o: EXTRA_CPPFLAGS = -DGIT_HTTP_USER_AGENT='\"git/$(GIT_VERSION)\"'\n \n@@ -2006,10 +2009,10 @@ git-imap-send$X: imap-send.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL) $(LIB_4_CRYPTO)\n \n-git-http-fetch$X: revision.o http.o http-walker.o http-fetch.o $(GITLIBS)\n+git-http-fetch$X: libgit/revision.o http.o http-walker.o http-fetch.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(CURL_LIBCURL)\n-git-http-push$X: revision.o http.o http-push.o $(GITLIBS)\n+git-http-push$X: libgit/revision.o http.o http-push.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)\n \n@@ -2123,15 +2126,15 @@ export NO_SVN_TESTS\n test: all\n \t$(MAKE) -C t/ all\n \n-test-ctype$X: ctype.o\n+test-ctype$X: libgit/ctype.o\n \n-test-date$X: date.o ctype.o\n+test-date$X: libgit/date.o libgit/ctype.o\n \n-test-delta$X: diff-delta.o patch-delta.o\n+test-delta$X: libgit/diff-delta.o libgit/patch-delta.o\n \n test-line-buffer$X: vcs-svn/lib.a\n \n-test-parse-options$X: parse-options.o\n+test-parse-options$X: libgit/parse-options.o\n \n test-string-pool$X: vcs-svn/lib.a\n \n@@ -2316,7 +2319,7 @@ distclean: clean\n \n clean:\n \t$(RM) *.o block-sha1/*.o ppc/*.o compat/*.o compat/*/*.o xdiff/*.o vcs-svn/*.o \\\n-\t\tbuiltin/*.o $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB)\n+\t\tlibgit/*.o builtin/*.o $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB)\n \t$(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X\n \t$(RM) $(TEST_PROGRAMS)\n \t$(RM) -r bin-wrappers\ndiff --git a/abspath.c b/libgit/abspath.c\nsimilarity index 100%\nrename from abspath.c\nrename to libgit/abspath.c\ndiff --git a/advice.c b/libgit/advice.c\nsimilarity index 100%\nrename from advice.c\nrename to libgit/advice.c\ndiff --git a/alias.c b/libgit/alias.c\nsimilarity index 100%\nrename from alias.c\nrename to libgit/alias.c\ndiff --git a/alloc.c b/libgit/alloc.c\nsimilarity index 100%\nrename from alloc.c\nrename to libgit/alloc.c\ndiff --git a/archive-tar.c b/libgit/archive-tar.c\nsimilarity index 100%\nrename from archive-tar.c\nrename to libgit/archive-tar.c\ndiff --git a/archive-zip.c b/libgit/archive-zip.c\nsimilarity index 100%\nrename from archive-zip.c\nrename to libgit/archive-zip.c\ndiff --git a/archive.c b/libgit/archive.c\nsimilarity index 100%\nrename from archive.c\nrename to libgit/archive.c\ndiff --git a/attr.c b/libgit/attr.c\nsimilarity index 100%\nrename from attr.c\nrename to libgit/attr.c\ndiff --git a/base85.c b/libgit/base85.c\nsimilarity index 100%\nrename from base85.c\nrename to libgit/base85.c\ndiff --git a/bisect.c b/libgit/bisect.c\nsimilarity index 100%\nrename from bisect.c\nrename to libgit/bisect.c\ndiff --git a/blob.c b/libgit/blob.c\nsimilarity index 100%\nrename from blob.c\nrename to libgit/blob.c\ndiff --git a/branch.c b/libgit/branch.c\nsimilarity index 100%\nrename from branch.c\nrename to libgit/branch.c\ndiff --git a/bundle.c b/libgit/bundle.c\nsimilarity index 100%\nrename from bundle.c\nrename to libgit/bundle.c\ndiff --git a/cache-tree.c b/libgit/cache-tree.c\nsimilarity index 100%\nrename from cache-tree.c\nrename to libgit/cache-tree.c\ndiff --git a/color.c b/libgit/color.c\nsimilarity index 100%\nrename from color.c\nrename to libgit/color.c\ndiff --git a/combine-diff.c b/libgit/combine-diff.c\nsimilarity index 100%\nrename from combine-diff.c\nrename to libgit/combine-diff.c\ndiff --git a/commit.c b/libgit/commit.c\nsimilarity index 100%\nrename from commit.c\nrename to libgit/commit.c\ndiff --git a/config.c b/libgit/config.c\nsimilarity index 100%\nrename from config.c\nrename to libgit/config.c\ndiff --git a/connect.c b/libgit/connect.c\nsimilarity index 100%\nrename from connect.c\nrename to libgit/connect.c\ndiff --git a/convert.c b/libgit/convert.c\nsimilarity index 100%\nrename from convert.c\nrename to libgit/convert.c\ndiff --git a/copy.c b/libgit/copy.c\nsimilarity index 100%\nrename from copy.c\nrename to libgit/copy.c\ndiff --git a/csum-file.c b/libgit/csum-file.c\nsimilarity index 100%\nrename from csum-file.c\nrename to libgit/csum-file.c\ndiff --git a/ctype.c b/libgit/ctype.c\nsimilarity index 100%\nrename from ctype.c\nrename to libgit/ctype.c\ndiff --git a/date.c b/libgit/date.c\nsimilarity index 100%\nrename from date.c\nrename to libgit/date.c\ndiff --git a/decorate.c b/libgit/decorate.c\nsimilarity index 100%\nrename from decorate.c\nrename to libgit/decorate.c\ndiff --git a/diff-delta.c b/libgit/diff-delta.c\nsimilarity index 100%\nrename from diff-delta.c\nrename to libgit/diff-delta.c\ndiff --git a/diff-lib.c b/libgit/diff-lib.c\nsimilarity index 100%\nrename from diff-lib.c\nrename to libgit/diff-lib.c\ndiff --git a/diff-no-index.c b/libgit/diff-no-index.c\nsimilarity index 100%\nrename from diff-no-index.c\nrename to libgit/diff-no-index.c\ndiff --git a/diff.c b/libgit/diff.c\nsimilarity index 100%\nrename from diff.c\nrename to libgit/diff.c\ndiff --git a/diffcore-break.c b/libgit/diffcore-break.c\nsimilarity index 100%\nrename from diffcore-break.c\nrename to libgit/diffcore-break.c\ndiff --git a/diffcore-delta.c b/libgit/diffcore-delta.c\nsimilarity index 100%\nrename from diffcore-delta.c\nrename to libgit/diffcore-delta.c\ndiff --git a/diffcore-order.c b/libgit/diffcore-order.c\nsimilarity index 100%\nrename from diffcore-order.c\nrename to libgit/diffcore-order.c\ndiff --git a/diffcore-pickaxe.c b/libgit/diffcore-pickaxe.c\nsimilarity index 100%\nrename from diffcore-pickaxe.c\nrename to libgit/diffcore-pickaxe.c\ndiff --git a/diffcore-rename.c b/libgit/diffcore-rename.c\nsimilarity index 100%\nrename from diffcore-rename.c\nrename to libgit/diffcore-rename.c\ndiff --git a/dir.c b/libgit/dir.c\nsimilarity index 100%\nrename from dir.c\nrename to libgit/dir.c\ndiff --git a/editor.c b/libgit/editor.c\nsimilarity index 100%\nrename from editor.c\nrename to libgit/editor.c\ndiff --git a/entry.c b/libgit/entry.c\nsimilarity index 100%\nrename from entry.c\nrename to libgit/entry.c\ndiff --git a/environment.c b/libgit/environment.c\nsimilarity index 100%\nrename from environment.c\nrename to libgit/environment.c\ndiff --git a/exec_cmd.c b/libgit/exec_cmd.c\nsimilarity index 100%\nrename from exec_cmd.c\nrename to libgit/exec_cmd.c\ndiff --git a/fsck.c b/libgit/fsck.c\nsimilarity index 100%\nrename from fsck.c\nrename to libgit/fsck.c\ndiff --git a/graph.c b/libgit/graph.c\nsimilarity index 100%\nrename from graph.c\nrename to libgit/graph.c\ndiff --git a/grep.c b/libgit/grep.c\nsimilarity index 100%\nrename from grep.c\nrename to libgit/grep.c\ndiff --git a/hash.c b/libgit/hash.c\nsimilarity index 100%\nrename from hash.c\nrename to libgit/hash.c\ndiff --git a/help.c b/libgit/help.c\nsimilarity index 100%\nrename from help.c\nrename to libgit/help.c\ndiff --git a/hex.c b/libgit/hex.c\nsimilarity index 100%\nrename from hex.c\nrename to libgit/hex.c\ndiff --git a/ident.c b/libgit/ident.c\nsimilarity index 100%\nrename from ident.c\nrename to libgit/ident.c\ndiff --git a/levenshtein.c b/libgit/levenshtein.c\nsimilarity index 100%\nrename from levenshtein.c\nrename to libgit/levenshtein.c\ndiff --git a/list-objects.c b/libgit/list-objects.c\nsimilarity index 100%\nrename from list-objects.c\nrename to libgit/list-objects.c\ndiff --git a/ll-merge.c b/libgit/ll-merge.c\nsimilarity index 100%\nrename from ll-merge.c\nrename to libgit/ll-merge.c\ndiff --git a/lockfile.c b/libgit/lockfile.c\nsimilarity index 100%\nrename from lockfile.c\nrename to libgit/lockfile.c\ndiff --git a/log-tree.c b/libgit/log-tree.c\nsimilarity index 100%\nrename from log-tree.c\nrename to libgit/log-tree.c\ndiff --git a/mailmap.c b/libgit/mailmap.c\nsimilarity index 100%\nrename from mailmap.c\nrename to libgit/mailmap.c\ndiff --git a/match-trees.c b/libgit/match-trees.c\nsimilarity index 100%\nrename from match-trees.c\nrename to libgit/match-trees.c\ndiff --git a/merge-file.c b/libgit/merge-file.c\nsimilarity index 100%\nrename from merge-file.c\nrename to libgit/merge-file.c\ndiff --git a/merge-recursive.c b/libgit/merge-recursive.c\nsimilarity index 100%\nrename from merge-recursive.c\nrename to libgit/merge-recursive.c\ndiff --git a/name-hash.c b/libgit/name-hash.c\nsimilarity index 100%\nrename from name-hash.c\nrename to libgit/name-hash.c\ndiff --git a/notes-cache.c b/libgit/notes-cache.c\nsimilarity index 100%\nrename from notes-cache.c\nrename to libgit/notes-cache.c\ndiff --git a/notes-merge.c b/libgit/notes-merge.c\nsimilarity index 100%\nrename from notes-merge.c\nrename to libgit/notes-merge.c\ndiff --git a/notes.c b/libgit/notes.c\nsimilarity index 100%\nrename from notes.c\nrename to libgit/notes.c\ndiff --git a/object.c b/libgit/object.c\nsimilarity index 100%\nrename from object.c\nrename to libgit/object.c\ndiff --git a/pack-check.c b/libgit/pack-check.c\nsimilarity index 100%\nrename from pack-check.c\nrename to libgit/pack-check.c\ndiff --git a/pack-refs.c b/libgit/pack-refs.c\nsimilarity index 100%\nrename from pack-refs.c\nrename to libgit/pack-refs.c\ndiff --git a/pack-revindex.c b/libgit/pack-revindex.c\nsimilarity index 100%\nrename from pack-revindex.c\nrename to libgit/pack-revindex.c\ndiff --git a/pack-write.c b/libgit/pack-write.c\nsimilarity index 100%\nrename from pack-write.c\nrename to libgit/pack-write.c\ndiff --git a/pager.c b/libgit/pager.c\nsimilarity index 100%\nrename from pager.c\nrename to libgit/pager.c\ndiff --git a/parse-options.c b/libgit/parse-options.c\nsimilarity index 100%\nrename from parse-options.c\nrename to libgit/parse-options.c\ndiff --git a/patch-delta.c b/libgit/patch-delta.c\nsimilarity index 100%\nrename from patch-delta.c\nrename to libgit/patch-delta.c\ndiff --git a/patch-ids.c b/libgit/patch-ids.c\nsimilarity index 100%\nrename from patch-ids.c\nrename to libgit/patch-ids.c\ndiff --git a/path.c b/libgit/path.c\nsimilarity index 100%\nrename from path.c\nrename to libgit/path.c\ndiff --git a/pkt-line.c b/libgit/pkt-line.c\nsimilarity index 100%\nrename from pkt-line.c\nrename to libgit/pkt-line.c\ndiff --git a/preload-index.c b/libgit/preload-index.c\nsimilarity index 100%\nrename from preload-index.c\nrename to libgit/preload-index.c\ndiff --git a/pretty.c b/libgit/pretty.c\nsimilarity index 100%\nrename from pretty.c\nrename to libgit/pretty.c\ndiff --git a/progress.c b/libgit/progress.c\nsimilarity index 100%\nrename from progress.c\nrename to libgit/progress.c\ndiff --git a/quote.c b/libgit/quote.c\nsimilarity index 100%\nrename from quote.c\nrename to libgit/quote.c\ndiff --git a/reachable.c b/libgit/reachable.c\nsimilarity index 100%\nrename from reachable.c\nrename to libgit/reachable.c\ndiff --git a/read-cache.c b/libgit/read-cache.c\nsimilarity index 100%\nrename from read-cache.c\nrename to libgit/read-cache.c\ndiff --git a/reflog-walk.c b/libgit/reflog-walk.c\nsimilarity index 100%\nrename from reflog-walk.c\nrename to libgit/reflog-walk.c\ndiff --git a/refs.c b/libgit/refs.c\nsimilarity index 100%\nrename from refs.c\nrename to libgit/refs.c\ndiff --git a/remote.c b/libgit/remote.c\nsimilarity index 100%\nrename from remote.c\nrename to libgit/remote.c\ndiff --git a/replace_object.c b/libgit/replace_object.c\nsimilarity index 100%\nrename from replace_object.c\nrename to libgit/replace_object.c\ndiff --git a/rerere.c b/libgit/rerere.c\nsimilarity index 100%\nrename from rerere.c\nrename to libgit/rerere.c\ndiff --git a/resolve-undo.c b/libgit/resolve-undo.c\nsimilarity index 100%\nrename from resolve-undo.c\nrename to libgit/resolve-undo.c\ndiff --git a/revision.c b/libgit/revision.c\nsimilarity index 100%\nrename from revision.c\nrename to libgit/revision.c\ndiff --git a/run-command.c b/libgit/run-command.c\nsimilarity index 100%\nrename from run-command.c\nrename to libgit/run-command.c\ndiff --git a/server-info.c b/libgit/server-info.c\nsimilarity index 100%\nrename from server-info.c\nrename to libgit/server-info.c\ndiff --git a/setup.c b/libgit/setup.c\nsimilarity index 100%\nrename from setup.c\nrename to libgit/setup.c\ndiff --git a/sha1-lookup.c b/libgit/sha1-lookup.c\nsimilarity index 100%\nrename from sha1-lookup.c\nrename to libgit/sha1-lookup.c\ndiff --git a/sha1_file.c b/libgit/sha1_file.c\nsimilarity index 100%\nrename from sha1_file.c\nrename to libgit/sha1_file.c\ndiff --git a/sha1_name.c b/libgit/sha1_name.c\nsimilarity index 100%\nrename from sha1_name.c\nrename to libgit/sha1_name.c\ndiff --git a/shallow.c b/libgit/shallow.c\nsimilarity index 100%\nrename from shallow.c\nrename to libgit/shallow.c\ndiff --git a/sideband.c b/libgit/sideband.c\nsimilarity index 100%\nrename from sideband.c\nrename to libgit/sideband.c\ndiff --git a/sigchain.c b/libgit/sigchain.c\nsimilarity index 100%\nrename from sigchain.c\nrename to libgit/sigchain.c\ndiff --git a/strbuf.c b/libgit/strbuf.c\nsimilarity index 100%\nrename from strbuf.c\nrename to libgit/strbuf.c\ndiff --git a/string-list.c b/libgit/string-list.c\nsimilarity index 100%\nrename from string-list.c\nrename to libgit/string-list.c\ndiff --git a/submodule.c b/libgit/submodule.c\nsimilarity index 100%\nrename from submodule.c\nrename to libgit/submodule.c\ndiff --git a/symlinks.c b/libgit/symlinks.c\nsimilarity index 100%\nrename from symlinks.c\nrename to libgit/symlinks.c\ndiff --git a/tag.c b/libgit/tag.c\nsimilarity index 100%\nrename from tag.c\nrename to libgit/tag.c\ndiff --git a/thread-utils.c b/libgit/thread-utils.c\nsimilarity index 100%\nrename from thread-utils.c\nrename to libgit/thread-utils.c\ndiff --git a/trace.c b/libgit/trace.c\nsimilarity index 100%\nrename from trace.c\nrename to libgit/trace.c\ndiff --git a/transport-helper.c b/libgit/transport-helper.c\nsimilarity index 100%\nrename from transport-helper.c\nrename to libgit/transport-helper.c\ndiff --git a/transport.c b/libgit/transport.c\nsimilarity index 100%\nrename from transport.c\nrename to libgit/transport.c\ndiff --git a/tree-diff.c b/libgit/tree-diff.c\nsimilarity index 100%\nrename from tree-diff.c\nrename to libgit/tree-diff.c\ndiff --git a/tree-walk.c b/libgit/tree-walk.c\nsimilarity index 100%\nrename from tree-walk.c\nrename to libgit/tree-walk.c\ndiff --git a/tree.c b/libgit/tree.c\nsimilarity index 100%\nrename from tree.c\nrename to libgit/tree.c\ndiff --git a/unpack-trees.c b/libgit/unpack-trees.c\nsimilarity index 100%\nrename from unpack-trees.c\nrename to libgit/unpack-trees.c\ndiff --git a/url.c b/libgit/url.c\nsimilarity index 100%\nrename from url.c\nrename to libgit/url.c\ndiff --git a/usage.c b/libgit/usage.c\nsimilarity index 100%\nrename from usage.c\nrename to libgit/usage.c\ndiff --git a/userdiff.c b/libgit/userdiff.c\nsimilarity index 100%\nrename from userdiff.c\nrename to libgit/userdiff.c\ndiff --git a/utf8.c b/libgit/utf8.c\nsimilarity index 100%\nrename from utf8.c\nrename to libgit/utf8.c\ndiff --git a/walker.c b/libgit/walker.c\nsimilarity index 100%\nrename from walker.c\nrename to libgit/walker.c\ndiff --git a/wrapper.c b/libgit/wrapper.c\nsimilarity index 100%\nrename from wrapper.c\nrename to libgit/wrapper.c\ndiff --git a/write_or_die.c b/libgit/write_or_die.c\nsimilarity index 100%\nrename from write_or_die.c\nrename to libgit/write_or_die.c\ndiff --git a/ws.c b/libgit/ws.c\nsimilarity index 100%\nrename from ws.c\nrename to libgit/ws.c\ndiff --git a/wt-status.c b/libgit/wt-status.c\nsimilarity index 100%\nrename from wt-status.c\nrename to libgit/wt-status.c\ndiff --git a/xdiff-interface.c b/libgit/xdiff-interface.c\nsimilarity index 100%\nrename from xdiff-interface.c\nrename to libgit/xdiff-interface.c\ndiff --git a/zlib.c b/libgit/zlib.c\nsimilarity index 100%\nrename from zlib.c\nrename to libgit/zlib.c\n-- \n1.7.4.1\n"},{"id":"161491","messageId":"20110218023355.GC23435@elie","threadId":"26454","inReplyTo":"20110218022701.GA23435@elie","subject":"[PATCH 2/3] Move test-* into a test-programs/ subdirectory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T02:33:55Z","receivedAt":"2011-02-18T02:33:55Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Move the source to test programs such as test-sha1 to a subdirectory\nwhere they will distract people working on git proper.\n\nThe test programs themselves will still go to the top level when\nbuilt, so experimenters do not have to hunt around for them.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile                                           |   15 +++++++++------\n test-chmtime.c => test-programs/test-chmtime.c     |    0\n [ etc etc ]\n .../test-string-pool.c                             |    0\n .../test-subprocess.c                              |    0\n test-svn-fe.c => test-programs/test-svn-fe.c       |    0\n test-treap.c => test-programs/test-treap.c         |    0\n 21 files changed, 9 insertions(+), 6 deletions(-)\n rename test-chmtime.c => test-programs/test-chmtime.c (100%)\n [...]\n rename test-treap.c => test-programs/test-treap.c (100%)\n\ndiff --git a/Makefile b/Makefile\nindex b812c1e..f458f65 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1830,7 +1830,7 @@ git.o git.spec \\\n \t$(patsubst %.perl,%,$(SCRIPT_PERL)) \\\n \t: GIT-VERSION-FILE\n \n-TEST_OBJS := $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS))\n+TEST_OBJS := $(patsubst test-%$X,test-programs/test-%.o,$(TEST_PROGRAMS))\n GIT_OBJS := $(LIB_OBJS) $(BUILTIN_OBJS) $(PROGRAM_OBJS) $(TEST_OBJS) \\\n \tgit.o\n ifndef NO_CURL\n@@ -1840,8 +1840,11 @@ XDIFF_OBJS = xdiff/xdiffi.o xdiff/xprepare.o xdiff/xutils.o xdiff/xemit.o \\\n \txdiff/xmerge.o xdiff/xpatience.o\n VCSSVN_OBJS = vcs-svn/string_pool.o vcs-svn/line_buffer.o \\\n \tvcs-svn/repo_tree.o vcs-svn/fast_export.o vcs-svn/svndump.o\n-VCSSVN_TEST_OBJS = test-obj-pool.o test-string-pool.o \\\n-\ttest-line-buffer.o test-treap.o\n+VCSSVN_TEST_OBJS =\n+VCSSVN_TEST_OBJS += test-programs/test-obj-pool.o\n+VCSSVN_TEST_OBJS += test-programs/test-string-pool.o\n+VCSSVN_TEST_OBJS += test-programs/test-line-buffer.o\n+VCSSVN_TEST_OBJS += test-programs/test-treap.o\n OBJECTS := $(GIT_OBJS) $(XDIFF_OBJS) $(VCSSVN_OBJS)\n \n dep_files := $(foreach f,$(OBJECTS),$(dir $f).depend/$(notdir $f).d)\n@@ -1970,7 +1973,7 @@ $(VCSSVN_OBJS) $(VCSSVN_TEST_OBJS): $(LIB_H) \\\n \tvcs-svn/line_buffer.h vcs-svn/repo_tree.h vcs-svn/fast_export.h \\\n \tvcs-svn/svndump.h\n \n-test-svn-fe.o: vcs-svn/svndump.h\n+test-programs/test-svn-fe.o: vcs-svn/svndump.h\n endif\n \n libgit/exec_cmd.s libgit/exec_cmd.o: EXTRA_CPPFLAGS = \\\n@@ -2142,7 +2145,7 @@ test-svn-fe$X: vcs-svn/lib.a\n \n .PRECIOUS: $(TEST_OBJS)\n \n-test-%$X: test-%.o $(GITLIBS)\n+test-%$X: test-programs/test-%.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(filter %.a,$^) $(LIBS)\n \n check-sha1:: test-sha1$X\n@@ -2321,7 +2324,7 @@ clean:\n \t$(RM) *.o block-sha1/*.o ppc/*.o compat/*.o compat/*/*.o xdiff/*.o vcs-svn/*.o \\\n \t\tlibgit/*.o builtin/*.o $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB)\n \t$(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X\n-\t$(RM) $(TEST_PROGRAMS)\n+\t$(RM) test-programs/*.o $(TEST_PROGRAMS)\n \t$(RM) -r bin-wrappers\n \t$(RM) -r $(dep_dirs)\n \t$(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h $(ETAGS_TARGET) tags cscope*\ndiff --git a/test-chmtime.c b/test-programs/test-chmtime.c\nsimilarity index 100%\nrename from test-chmtime.c\nrename to test-programs/test-chmtime.c\ndiff --git a/test-ctype.c b/test-programs/test-ctype.c\nsimilarity index 100%\nrename from test-ctype.c\nrename to test-programs/test-ctype.c\ndiff --git a/test-date.c b/test-programs/test-date.c\nsimilarity index 100%\nrename from test-date.c\nrename to test-programs/test-date.c\ndiff --git a/test-delta.c b/test-programs/test-delta.c\nsimilarity index 100%\nrename from test-delta.c\nrename to test-programs/test-delta.c\ndiff --git a/test-dump-cache-tree.c b/test-programs/test-dump-cache-tree.c\nsimilarity index 100%\nrename from test-dump-cache-tree.c\nrename to test-programs/test-dump-cache-tree.c\ndiff --git a/test-genrandom.c b/test-programs/test-genrandom.c\nsimilarity index 100%\nrename from test-genrandom.c\nrename to test-programs/test-genrandom.c\ndiff --git a/test-index-version.c b/test-programs/test-index-version.c\nsimilarity index 100%\nrename from test-index-version.c\nrename to test-programs/test-index-version.c\ndiff --git a/test-line-buffer.c b/test-programs/test-line-buffer.c\nsimilarity index 100%\nrename from test-line-buffer.c\nrename to test-programs/test-line-buffer.c\ndiff --git a/test-match-trees.c b/test-programs/test-match-trees.c\nsimilarity index 100%\nrename from test-match-trees.c\nrename to test-programs/test-match-trees.c\ndiff --git a/test-mktemp.c b/test-programs/test-mktemp.c\nsimilarity index 100%\nrename from test-mktemp.c\nrename to test-programs/test-mktemp.c\ndiff --git a/test-obj-pool.c b/test-programs/test-obj-pool.c\nsimilarity index 100%\nrename from test-obj-pool.c\nrename to test-programs/test-obj-pool.c\ndiff --git a/test-parse-options.c b/test-programs/test-parse-options.c\nsimilarity index 100%\nrename from test-parse-options.c\nrename to test-programs/test-parse-options.c\ndiff --git a/test-path-utils.c b/test-programs/test-path-utils.c\nsimilarity index 100%\nrename from test-path-utils.c\nrename to test-programs/test-path-utils.c\ndiff --git a/test-run-command.c b/test-programs/test-run-command.c\nsimilarity index 100%\nrename from test-run-command.c\nrename to test-programs/test-run-command.c\ndiff --git a/test-sha1.c b/test-programs/test-sha1.c\nsimilarity index 100%\nrename from test-sha1.c\nrename to test-programs/test-sha1.c\ndiff --git a/test-sigchain.c b/test-programs/test-sigchain.c\nsimilarity index 100%\nrename from test-sigchain.c\nrename to test-programs/test-sigchain.c\ndiff --git a/test-string-pool.c b/test-programs/test-string-pool.c\nsimilarity index 100%\nrename from test-string-pool.c\nrename to test-programs/test-string-pool.c\ndiff --git a/test-subprocess.c b/test-programs/test-subprocess.c\nsimilarity index 100%\nrename from test-subprocess.c\nrename to test-programs/test-subprocess.c\ndiff --git a/test-svn-fe.c b/test-programs/test-svn-fe.c\nsimilarity index 100%\nrename from test-svn-fe.c\nrename to test-programs/test-svn-fe.c\ndiff --git a/test-treap.c b/test-programs/test-treap.c\nsimilarity index 100%\nrename from test-treap.c\nrename to test-programs/test-treap.c\n-- \n1.7.4.1\n"},{"id":"161492","messageId":"20110218023750.GD23435@elie","threadId":"26454","inReplyTo":"20110218022701.GA23435@elie","subject":"[PATCH 3/3] Move header files into a include/ subdirectory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T02:37:50Z","receivedAt":"2011-02-18T02:37:50Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Move most of git's header files to an include/ subdirectory.\nThis leaves us with 71 fewer files in the toplevel directory,\nmaking the high-level structure of the codebase a little easier\nto see.\n\nThree headers stay behind, at least for now: git-compat-util.h,\nstrbuf.h, and cache.h are referred to by some system-specific code\n(in compat/) using paths starting with \"..\".  Making these three core\nheaders especially visible doesn't seem like a bad idea, anyway.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile                                       |  146 ++++++++++++------------\n advice.h => include/advice.h                   |    0\n [ etc etc ]\n 72 files changed, 73 insertions(+), 73 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex f458f65..1e96504 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -333,7 +333,7 @@ SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__\n # Those must not be GNU-specific; they are shared with perl/ which may\n # be built by a different compiler. (Note that this is an artifact now\n # but it still might be nice to keep that distinction.)\n-BASIC_CFLAGS = -I.\n+BASIC_CFLAGS = -I. -Iinclude\n BASIC_LDFLAGS =\n \n # Guard against environment variables\n@@ -491,15 +491,15 @@ LIB_FILE=libgit.a\n XDIFF_LIB=xdiff/lib.a\n VCSSVN_LIB=vcs-svn/lib.a\n \n-LIB_H += advice.h\n-LIB_H += archive.h\n-LIB_H += attr.h\n-LIB_H += blob.h\n-LIB_H += builtin.h\n+LIB_H += include/advice.h\n+LIB_H += include/archive.h\n+LIB_H += include/attr.h\n+LIB_H += include/blob.h\n+LIB_H += include/builtin.h\n LIB_H += cache.h\n-LIB_H += cache-tree.h\n-LIB_H += color.h\n-LIB_H += commit.h\n+LIB_H += include/cache-tree.h\n+LIB_H += include/color.h\n+LIB_H += include/commit.h\n LIB_H += compat/bswap.h\n LIB_H += compat/cygwin.h\n LIB_H += compat/mingw.h\n@@ -507,58 +507,58 @@ LIB_H += compat/win32/pthread.h\n LIB_H += compat/win32/syslog.h\n LIB_H += compat/win32/sys/poll.h\n LIB_H += compat/win32/dirent.h\n-LIB_H += csum-file.h\n-LIB_H += decorate.h\n-LIB_H += delta.h\n-LIB_H += diffcore.h\n-LIB_H += diff.h\n-LIB_H += dir.h\n-LIB_H += exec_cmd.h\n-LIB_H += fsck.h\n+LIB_H += include/csum-file.h\n+LIB_H += include/decorate.h\n+LIB_H += include/delta.h\n+LIB_H += include/diffcore.h\n+LIB_H += include/diff.h\n+LIB_H += include/dir.h\n+LIB_H += include/exec_cmd.h\n+LIB_H += include/fsck.h\n LIB_H += git-compat-util.h\n-LIB_H += graph.h\n-LIB_H += grep.h\n-LIB_H += hash.h\n-LIB_H += help.h\n-LIB_H += levenshtein.h\n-LIB_H += list-objects.h\n-LIB_H += ll-merge.h\n-LIB_H += log-tree.h\n-LIB_H += mailmap.h\n-LIB_H += merge-recursive.h\n-LIB_H += notes.h\n-LIB_H += notes-cache.h\n-LIB_H += notes-merge.h\n-LIB_H += object.h\n-LIB_H += pack.h\n-LIB_H += pack-refs.h\n-LIB_H += pack-revindex.h\n-LIB_H += parse-options.h\n-LIB_H += patch-ids.h\n-LIB_H += pkt-line.h\n-LIB_H += progress.h\n-LIB_H += quote.h\n-LIB_H += reflog-walk.h\n-LIB_H += refs.h\n-LIB_H += remote.h\n-LIB_H += rerere.h\n-LIB_H += resolve-undo.h\n-LIB_H += revision.h\n-LIB_H += run-command.h\n-LIB_H += sha1-lookup.h\n-LIB_H += sideband.h\n-LIB_H += sigchain.h\n+LIB_H += include/graph.h\n+LIB_H += include/grep.h\n+LIB_H += include/hash.h\n+LIB_H += include/help.h\n+LIB_H += include/levenshtein.h\n+LIB_H += include/list-objects.h\n+LIB_H += include/ll-merge.h\n+LIB_H += include/log-tree.h\n+LIB_H += include/mailmap.h\n+LIB_H += include/merge-recursive.h\n+LIB_H += include/notes.h\n+LIB_H += include/notes-cache.h\n+LIB_H += include/notes-merge.h\n+LIB_H += include/object.h\n+LIB_H += include/pack.h\n+LIB_H += include/pack-refs.h\n+LIB_H += include/pack-revindex.h\n+LIB_H += include/parse-options.h\n+LIB_H += include/patch-ids.h\n+LIB_H += include/pkt-line.h\n+LIB_H += include/progress.h\n+LIB_H += include/quote.h\n+LIB_H += include/reflog-walk.h\n+LIB_H += include/refs.h\n+LIB_H += include/remote.h\n+LIB_H += include/rerere.h\n+LIB_H += include/resolve-undo.h\n+LIB_H += include/revision.h\n+LIB_H += include/run-command.h\n+LIB_H += include/sha1-lookup.h\n+LIB_H += include/sideband.h\n+LIB_H += include/sigchain.h\n LIB_H += strbuf.h\n-LIB_H += string-list.h\n-LIB_H += submodule.h\n-LIB_H += tag.h\n-LIB_H += transport.h\n-LIB_H += tree.h\n-LIB_H += tree-walk.h\n-LIB_H += unpack-trees.h\n-LIB_H += userdiff.h\n-LIB_H += utf8.h\n-LIB_H += xdiff-interface.h\n+LIB_H += include/string-list.h\n+LIB_H += include/submodule.h\n+LIB_H += include/tag.h\n+LIB_H += include/transport.h\n+LIB_H += include/tree.h\n+LIB_H += include/tree-walk.h\n+LIB_H += include/unpack-trees.h\n+LIB_H += include/userdiff.h\n+LIB_H += include/utf8.h\n+LIB_H += include/xdiff-interface.h\n LIB_H += xdiff/xdiff.h\n \n LIB_OBJS += libgit/abspath.o\n@@ -1949,20 +1949,20 @@ else\n # gcc detects!\n \n $(GIT_OBJS): $(LIB_H)\n-builtin/branch.o builtin/checkout.o builtin/clone.o builtin/reset.o: branch.h\n-libgit/branch.o libgit/transport.o: branch.h\n-builtin/bundle.o libgit/bundle.o libgit/transport.o: bundle.h\n-builtin/bisect--helper.o builtin/rev-list.o libgit/bisect.o: bisect.h\n-builtin/clone.o builtin/fetch-pack.o libgit/transport.o: fetch-pack.h\n-builtin/grep.o builtin/pack-objects.o libgit/transport-helper.o: thread-utils.h\n-builtin/send-pack.o libgit/transport.o: send-pack.h\n-builtin/log.o builtin/shortlog.o: shortlog.h\n-builtin/prune.o builtin/reflog.o libgit/reachable.o: reachable.h\n-builtin/commit.o builtin/revert.o libgit/wt-status.o: wt-status.h\n-builtin/tar-tree.o libgit/archive-tar.o: tar.h\n-libgit/connect.o libgit/transport.o http-backend.o: url.h\n-http-fetch.o http-walker.o remote-curl.o libgit/transport.o libgit/walker.o: walker.h\n-http.o http-walker.o http-push.o http-fetch.o remote-curl.o: http.h url.h\n+builtin/branch.o builtin/checkout.o builtin/clone.o builtin/reset.o: include/branch.h\n+libgit/branch.o libgit/transport.o: include/branch.h\n+builtin/bundle.o libgit/bundle.o libgit/transport.o: include/bundle.h\n+builtin/bisect--helper.o builtin/rev-list.o libgit/bisect.o: include/bisect.h\n+builtin/clone.o builtin/fetch-pack.o libgit/transport.o: include/fetch-pack.h\n+builtin/grep.o builtin/pack-objects.o libgit/transport-helper.o: include/thread-utils.h\n+builtin/send-pack.o libgit/transport.o: include/send-pack.h\n+builtin/log.o builtin/shortlog.o: include/shortlog.h\n+builtin/prune.o builtin/reflog.o libgit/reachable.o: include/reachable.h\n+builtin/commit.o builtin/revert.o libgit/wt-status.o: include/wt-status.h\n+builtin/tar-tree.o libgit/archive-tar.o: include/tar.h\n+libgit/connect.o libgit/transport.o http-backend.o: include/url.h\n+http-fetch.o http-walker.o remote-curl.o libgit/transport.o libgit/walker.o: include/walker.h\n+http.o http-walker.o http-push.o http-fetch.o remote-curl.o: include/http.h include/url.h\n \n libgit/xdiff-interface.o $(XDIFF_OBJS): \\\n \txdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \\\ndiff --git a/advice.h b/include/advice.h\nsimilarity index 100%\nrename from advice.h\nrename to include/advice.h\ndiff --git a/archive.h b/include/archive.h\nsimilarity index 100%\nrename from archive.h\nrename to include/archive.h\ndiff --git a/attr.h b/include/attr.h\nsimilarity index 100%\nrename from attr.h\nrename to include/attr.h\ndiff --git a/bisect.h b/include/bisect.h\nsimilarity index 100%\nrename from bisect.h\nrename to include/bisect.h\ndiff --git a/blob.h b/include/blob.h\nsimilarity index 100%\nrename from blob.h\nrename to include/blob.h\ndiff --git a/branch.h b/include/branch.h\nsimilarity index 100%\nrename from branch.h\nrename to include/branch.h\ndiff --git a/builtin.h b/include/builtin.h\nsimilarity index 100%\nrename from builtin.h\nrename to include/builtin.h\ndiff --git a/bundle.h b/include/bundle.h\nsimilarity index 100%\nrename from bundle.h\nrename to include/bundle.h\ndiff --git a/cache-tree.h b/include/cache-tree.h\nsimilarity index 100%\nrename from cache-tree.h\nrename to include/cache-tree.h\ndiff --git a/color.h b/include/color.h\nsimilarity index 100%\nrename from color.h\nrename to include/color.h\ndiff --git a/commit.h b/include/commit.h\nsimilarity index 100%\nrename from commit.h\nrename to include/commit.h\ndiff --git a/csum-file.h b/include/csum-file.h\nsimilarity index 100%\nrename from csum-file.h\nrename to include/csum-file.h\ndiff --git a/decorate.h b/include/decorate.h\nsimilarity index 100%\nrename from decorate.h\nrename to include/decorate.h\ndiff --git a/delta.h b/include/delta.h\nsimilarity index 100%\nrename from delta.h\nrename to include/delta.h\ndiff --git a/diff.h b/include/diff.h\nsimilarity index 100%\nrename from diff.h\nrename to include/diff.h\ndiff --git a/diffcore.h b/include/diffcore.h\nsimilarity index 100%\nrename from diffcore.h\nrename to include/diffcore.h\ndiff --git a/dir.h b/include/dir.h\nsimilarity index 100%\nrename from dir.h\nrename to include/dir.h\ndiff --git a/exec_cmd.h b/include/exec_cmd.h\nsimilarity index 100%\nrename from exec_cmd.h\nrename to include/exec_cmd.h\ndiff --git a/fetch-pack.h b/include/fetch-pack.h\nsimilarity index 100%\nrename from fetch-pack.h\nrename to include/fetch-pack.h\ndiff --git a/fsck.h b/include/fsck.h\nsimilarity index 100%\nrename from fsck.h\nrename to include/fsck.h\ndiff --git a/graph.h b/include/graph.h\nsimilarity index 100%\nrename from graph.h\nrename to include/graph.h\ndiff --git a/grep.h b/include/grep.h\nsimilarity index 100%\nrename from grep.h\nrename to include/grep.h\ndiff --git a/hash.h b/include/hash.h\nsimilarity index 100%\nrename from hash.h\nrename to include/hash.h\ndiff --git a/help.h b/include/help.h\nsimilarity index 100%\nrename from help.h\nrename to include/help.h\ndiff --git a/http.h b/include/http.h\nsimilarity index 100%\nrename from http.h\nrename to include/http.h\ndiff --git a/levenshtein.h b/include/levenshtein.h\nsimilarity index 100%\nrename from levenshtein.h\nrename to include/levenshtein.h\ndiff --git a/list-objects.h b/include/list-objects.h\nsimilarity index 100%\nrename from list-objects.h\nrename to include/list-objects.h\ndiff --git a/ll-merge.h b/include/ll-merge.h\nsimilarity index 100%\nrename from ll-merge.h\nrename to include/ll-merge.h\ndiff --git a/log-tree.h b/include/log-tree.h\nsimilarity index 100%\nrename from log-tree.h\nrename to include/log-tree.h\ndiff --git a/mailmap.h b/include/mailmap.h\nsimilarity index 100%\nrename from mailmap.h\nrename to include/mailmap.h\ndiff --git a/merge-recursive.h b/include/merge-recursive.h\nsimilarity index 100%\nrename from merge-recursive.h\nrename to include/merge-recursive.h\ndiff --git a/notes-cache.h b/include/notes-cache.h\nsimilarity index 100%\nrename from notes-cache.h\nrename to include/notes-cache.h\ndiff --git a/notes-merge.h b/include/notes-merge.h\nsimilarity index 100%\nrename from notes-merge.h\nrename to include/notes-merge.h\ndiff --git a/notes.h b/include/notes.h\nsimilarity index 100%\nrename from notes.h\nrename to include/notes.h\ndiff --git a/object.h b/include/object.h\nsimilarity index 100%\nrename from object.h\nrename to include/object.h\ndiff --git a/pack-refs.h b/include/pack-refs.h\nsimilarity index 100%\nrename from pack-refs.h\nrename to include/pack-refs.h\ndiff --git a/pack-revindex.h b/include/pack-revindex.h\nsimilarity index 100%\nrename from pack-revindex.h\nrename to include/pack-revindex.h\ndiff --git a/pack.h b/include/pack.h\nsimilarity index 100%\nrename from pack.h\nrename to include/pack.h\ndiff --git a/parse-options.h b/include/parse-options.h\nsimilarity index 100%\nrename from parse-options.h\nrename to include/parse-options.h\ndiff --git a/patch-ids.h b/include/patch-ids.h\nsimilarity index 100%\nrename from patch-ids.h\nrename to include/patch-ids.h\ndiff --git a/pkt-line.h b/include/pkt-line.h\nsimilarity index 100%\nrename from pkt-line.h\nrename to include/pkt-line.h\ndiff --git a/progress.h b/include/progress.h\nsimilarity index 100%\nrename from progress.h\nrename to include/progress.h\ndiff --git a/quote.h b/include/quote.h\nsimilarity index 100%\nrename from quote.h\nrename to include/quote.h\ndiff --git a/reachable.h b/include/reachable.h\nsimilarity index 100%\nrename from reachable.h\nrename to include/reachable.h\ndiff --git a/reflog-walk.h b/include/reflog-walk.h\nsimilarity index 100%\nrename from reflog-walk.h\nrename to include/reflog-walk.h\ndiff --git a/refs.h b/include/refs.h\nsimilarity index 100%\nrename from refs.h\nrename to include/refs.h\ndiff --git a/remote.h b/include/remote.h\nsimilarity index 100%\nrename from remote.h\nrename to include/remote.h\ndiff --git a/rerere.h b/include/rerere.h\nsimilarity index 100%\nrename from rerere.h\nrename to include/rerere.h\ndiff --git a/resolve-undo.h b/include/resolve-undo.h\nsimilarity index 100%\nrename from resolve-undo.h\nrename to include/resolve-undo.h\ndiff --git a/revision.h b/include/revision.h\nsimilarity index 100%\nrename from revision.h\nrename to include/revision.h\ndiff --git a/run-command.h b/include/run-command.h\nsimilarity index 100%\nrename from run-command.h\nrename to include/run-command.h\ndiff --git a/send-pack.h b/include/send-pack.h\nsimilarity index 100%\nrename from send-pack.h\nrename to include/send-pack.h\ndiff --git a/sha1-lookup.h b/include/sha1-lookup.h\nsimilarity index 100%\nrename from sha1-lookup.h\nrename to include/sha1-lookup.h\ndiff --git a/shortlog.h b/include/shortlog.h\nsimilarity index 100%\nrename from shortlog.h\nrename to include/shortlog.h\ndiff --git a/sideband.h b/include/sideband.h\nsimilarity index 100%\nrename from sideband.h\nrename to include/sideband.h\ndiff --git a/sigchain.h b/include/sigchain.h\nsimilarity index 100%\nrename from sigchain.h\nrename to include/sigchain.h\ndiff --git a/string-list.h b/include/string-list.h\nsimilarity index 100%\nrename from string-list.h\nrename to include/string-list.h\ndiff --git a/submodule.h b/include/submodule.h\nsimilarity index 100%\nrename from submodule.h\nrename to include/submodule.h\ndiff --git a/tag.h b/include/tag.h\nsimilarity index 100%\nrename from tag.h\nrename to include/tag.h\ndiff --git a/tar.h b/include/tar.h\nsimilarity index 100%\nrename from tar.h\nrename to include/tar.h\ndiff --git a/thread-utils.h b/include/thread-utils.h\nsimilarity index 100%\nrename from thread-utils.h\nrename to include/thread-utils.h\ndiff --git a/transport.h b/include/transport.h\nsimilarity index 100%\nrename from transport.h\nrename to include/transport.h\ndiff --git a/tree-walk.h b/include/tree-walk.h\nsimilarity index 100%\nrename from tree-walk.h\nrename to include/tree-walk.h\ndiff --git a/tree.h b/include/tree.h\nsimilarity index 100%\nrename from tree.h\nrename to include/tree.h\ndiff --git a/unpack-trees.h b/include/unpack-trees.h\nsimilarity index 100%\nrename from unpack-trees.h\nrename to include/unpack-trees.h\ndiff --git a/url.h b/include/url.h\nsimilarity index 100%\nrename from url.h\nrename to include/url.h\ndiff --git a/userdiff.h b/include/userdiff.h\nsimilarity index 100%\nrename from userdiff.h\nrename to include/userdiff.h\ndiff --git a/utf8.h b/include/utf8.h\nsimilarity index 100%\nrename from utf8.h\nrename to include/utf8.h\ndiff --git a/walker.h b/include/walker.h\nsimilarity index 100%\nrename from walker.h\nrename to include/walker.h\ndiff --git a/wt-status.h b/include/wt-status.h\nsimilarity index 100%\nrename from wt-status.h\nrename to include/wt-status.h\ndiff --git a/xdiff-interface.h b/include/xdiff-interface.h\nsimilarity index 100%\nrename from xdiff-interface.h\nrename to include/xdiff-interface.h\n-- \n1.7.4.1\n"},{"id":"161493","messageId":"AANLkTikFLkXKKhZoDGAgh+i8H2fv+QNEVj7vEVABxee2@mail.gmail.com","threadId":"26454","inReplyTo":"20110218023126.GB23435@elie","subject":"Re: [PATCH 1/3] Move libgit.a sources into a libgit/ subdirectory","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2011-02-18T03:47:16Z","receivedAt":"2011-02-18T03:47:16Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"2011/2/18 Jonathan Nieder <jrnieder@gmail.com>:\n> Move sources for libgit.a to a libgit/ subdirectory.  This way, a\n> person wanting to tackle the reusable part of git will know where to\n> look, and those looking to work on individual commands know to look\n> elsewhere.\n\nYou missed a few (on purpose?): block-sha1, ppc and compat.\n\nlibgit.a is produced at toplevel so I need a few more keystrokes to\nreach files inside libgit. Maybe move libgit.a to libgit too?\n\n> Perhaps some day the libgit/ subdirectory can be managed as an\n> independent subproject (for example if it gets merged with libgit2).\n\nWith die() all over the place in libgit.a, I doubt it would become an\nindependent project. Although this certainly makes it easier to\nreimplement libgit as a thin wrapper around libgit2.\n\n> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>\n-- \nDuy\n"},{"id":"161494","messageId":"AANLkTi=VhJi4eDrtRPHukckQKo9TYCcnh1_u0_tnv24z@mail.gmail.com","threadId":"26454","inReplyTo":"20110218023750.GD23435@elie","subject":"Re: [PATCH 3/3] Move header files into a include/ subdirectory","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2011-02-18T03:52:21Z","receivedAt":"2011-02-18T03:52:21Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"2011/2/18 Jonathan Nieder <jrnieder@gmail.com>:\n> Move most of git's header files to an include/ subdirectory.\n> This leaves us with 71 fewer files in the toplevel directory,\n> making the high-level structure of the codebase a little easier\n> to see.\n>\n> Three headers stay behind, at least for now: git-compat-util.h,\n> strbuf.h, and cache.h are referred to by some system-specific code\n> (in compat/) using paths starting with \"..\".  Making these three core\n> headers especially visible doesn't seem like a bad idea, anyway.\n\nPerhaps it's time to split a large portion of cache.h to libgit.h and\nmake cache.h include libgit.h.\n\ncache.h and git-compat-util.h at topdir is ok to me. strbuf.h should\ngo to libgit though, imo.\n\n> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>\n-- \nDuy\n"},{"id":"161495","messageId":"AANLkTik8wUrUnjTiUxUZbg3paaQEc7UERQ6J6jUzA2u5@mail.gmail.com","threadId":"26454","inReplyTo":"20110218022701.GA23435@elie","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2011-02-18T03:56:37Z","receivedAt":"2011-02-18T03:56:37Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"2011/2/18 Jonathan Nieder <jrnieder@gmail.com>:\n> Hi,\n>\n> Nguyễn Thái Ngọc Duy wrote:\n>\n>>  .gitignore                                         |   19 ------------\n>>  Makefile                                           |   30 ++++++++++----------\n>>  t/helper/.gitignore                                |   19 ++++++++++++\n> [...]\n>>  24 files changed, 38 insertions(+), 38 deletions(-)\n>\n> Here's a variation on the theme that just moves source and .o files\n> (leaving questions about how to cope with breaking muscle memory for\n> the resulting executables for later).  What do you think?\n\nExternal commands are now more visible. Nice.\n-- \nDuy\n"},{"id":"161497","messageId":"20110218041358.GB15643@elie","threadId":"26454","inReplyTo":"AANLkTikFLkXKKhZoDGAgh+i8H2fv+QNEVj7vEVABxee2@mail.gmail.com","subject":"Re: [PATCH 1/3] Move libgit.a sources into a libgit/ subdirectory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T04:14:05Z","receivedAt":"2011-02-18T04:14:05Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Nguyen Thai Ngoc Duy wrote:\n> 2011/2/18 Jonathan Nieder <jrnieder@gmail.com>:\n\n>> Move sources for libgit.a to a libgit/ subdirectory.  This way, a\n>> person wanting to tackle the reusable part of git will know where to\n>> look, and those looking to work on individual commands know to look\n>> elsewhere.\n>\n> You missed a few (on purpose?): block-sha1, ppc and compat.\n\nYes, on purpose.  They're separately reusable.\n\n> libgit.a is produced at toplevel so I need a few more keystrokes to\n> reach files inside libgit. Maybe move libgit.a to libgit too?\n\nMm, good idea.\n\n> With die() all over the place in libgit.a, I doubt it would become an\n> independent project. Although this certainly makes it easier to\n> reimplement libgit as a thin wrapper around libgit2.\n\nI think it's more realistic to replace functions in libgit one by one\nwith reentrant versions.\n\nJonathan\n\n-- 8< --\nSubject: Rename libgit.a to libgit/lib.a\n\nThis makes the libgit files easier to reach through tab completion.\n\ncgit uses \"make -C git libgit.a\" in its build process.  Make sure\nthat continues to work by installing a symlink libgit.a -> libgit/lib.a\non request.\n\nRequested-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile                |    5 ++++-\n contrib/svn-fe/Makefile |    6 +++---\n 2 files changed, 7 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex b812c1e..3d701d2 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -487,7 +487,7 @@ endif\n export PERL_PATH\n export PYTHON_PATH\n \n-LIB_FILE=libgit.a\n+LIB_FILE=libgit/lib.a\n XDIFF_LIB=xdiff/lib.a\n VCSSVN_LIB=vcs-svn/lib.a\n \n@@ -2029,6 +2029,9 @@ $(REMOTE_CURL_PRIMARY): remote-curl.o http.o http-walker.o $(GITLIBS)\n $(LIB_FILE): $(LIB_OBJS)\n \t$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)\n \n+libgit.a: $(LIB_FILE)\n+\tln -sf $(LIB_FILE) $@\n+\n $(XDIFF_LIB): $(XDIFF_OBJS)\n \t$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(XDIFF_OBJS)\n \ndiff --git a/contrib/svn-fe/Makefile b/contrib/svn-fe/Makefile\nindex 360d8da..9dcad63 100644\n--- a/contrib/svn-fe/Makefile\n+++ b/contrib/svn-fe/Makefile\n@@ -10,7 +10,7 @@ ALL_CFLAGS = $(CFLAGS)\n ALL_LDFLAGS = $(LDFLAGS)\n EXTLIBS =\n \n-GIT_LIB = ../../libgit.a\n+GIT_LIB = ../../libgit/lib.a\n VCSSVN_LIB = ../../vcs-svn/lib.a\n LIBS = $(VCSSVN_LIB) $(GIT_LIB) $(EXTLIBS)\n \n@@ -54,8 +54,8 @@ svn-fe.1: svn-fe.txt\n ../../vcs-svn/lib.a: FORCE\n \t$(QUIET_SUBDIR0)../.. $(QUIET_SUBDIR1) vcs-svn/lib.a\n \n-../../libgit.a: FORCE\n-\t$(QUIET_SUBDIR0)../.. $(QUIET_SUBDIR1) libgit.a\n+../../libgit/lib.a: FORCE\n+\t$(QUIET_SUBDIR0)../.. $(QUIET_SUBDIR1) libgit/lib.a\n \n clean:\n \t$(RM) svn-fe$X svn-fe.o svn-fe.html svn-fe.xml svn-fe.1\n-- \n1.7.4.1\n"},{"id":"161499","messageId":"20110218041840.GB12348@sigill.intra.peff.net","threadId":"26454","inReplyTo":"20110218041358.GB15643@elie","subject":"Re: [PATCH 1/3] Move libgit.a sources into a libgit/ subdirectory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2011-02-18T04:18:40Z","receivedAt":"2011-02-18T04:18:40Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Feb 17, 2011 at 10:14:05PM -0600, Jonathan Nieder wrote:\n\n> Nguyen Thai Ngoc Duy wrote:\n> > 2011/2/18 Jonathan Nieder <jrnieder@gmail.com>:\n> \n> >> Move sources for libgit.a to a libgit/ subdirectory.  This way, a\n> >> person wanting to tackle the reusable part of git will know where to\n> >> look, and those looking to work on individual commands know to look\n> >> elsewhere.\n> >\n> > You missed a few (on purpose?): block-sha1, ppc and compat.\n> \n> Yes, on purpose.  They're separately reusable.\n\nI wonder if there should perhaps be lib/, with all of the libgit.a\nsources in it, and then lib/block-sha1, lib/ppc, lib/compat, etc. Those\nthings do end up inside libgit.a, don't they?\n\n-Peff\n"},{"id":"161500","messageId":"20110218042916.GC15643@elie","threadId":"26454","inReplyTo":"AANLkTi=VhJi4eDrtRPHukckQKo9TYCcnh1_u0_tnv24z@mail.gmail.com","subject":"[RFC/PATCH 4 to 6/3] Move remaining header files into a include/ subdirectory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T04:29:16Z","receivedAt":"2011-02-18T04:29:16Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Nguyen Thai Ngoc Duy wrote:\n\n> Perhaps it's time to split a large portion of cache.h to libgit.h and\n> make cache.h include libgit.h.\n\nInteresting idea.  Is this a sneaky way of renaming cache.h to git.h?\nWhich translation units could include libgit.h without cache.h?\n\n> cache.h and git-compat-util.h at topdir is ok to me. strbuf.h should\n> go to libgit though, imo.\n\nIf libgit is to be self-contained, they all should be in libgit.\nNot sure how I feel about that.\n\nHere's a series to move those three headers to include/.\n\nJonathan Nieder (3):\n  compat: do not use relative paths for git-compat-util.h et al\n  block-sha1: do not use relative path for git-compat-util.h\n  Move git-compat-util.h et al to include/\n\n Makefile                                       |    6 +++---\n block-sha1/sha1.c                              |    2 +-\n compat/basename.c                              |    2 +-\n compat/cygwin.c                                |    4 ++--\n compat/fopen.c                                 |    2 +-\n compat/inet_ntop.c                             |    2 +-\n compat/inet_pton.c                             |    2 +-\n compat/memmem.c                                |    2 +-\n compat/mingw.c                                 |    4 ++--\n compat/mkdtemp.c                               |    2 +-\n compat/mmap.c                                  |    2 +-\n compat/msvc.c                                  |    4 ++--\n compat/pread.c                                 |    2 +-\n compat/qsort.c                                 |    2 +-\n compat/setenv.c                                |    2 +-\n compat/snprintf.c                              |    2 +-\n compat/strcasestr.c                            |    2 +-\n compat/strlcpy.c                               |    2 +-\n compat/strtok_r.c                              |    2 +-\n compat/strtoumax.c                             |    2 +-\n compat/unsetenv.c                              |    2 +-\n compat/win32/dirent.c                          |    2 +-\n compat/win32/pthread.c                         |    2 +-\n compat/win32/syslog.c                          |    4 ++--\n compat/win32mmap.c                             |    2 +-\n compat/winansi.c                               |    2 +-\n cache.h => include/cache.h                     |    0\n git-compat-util.h => include/git-compat-util.h |    0\n strbuf.h => include/strbuf.h                   |    0\n 29 files changed, 32 insertions(+), 32 deletions(-)\n rename cache.h => include/cache.h (100%)\n rename git-compat-util.h => include/git-compat-util.h (100%)\n rename strbuf.h => include/strbuf.h (100%)\n\n-- \n1.7.4.1\n"},{"id":"161501","messageId":"AANLkTinH8wmxwwMhqNr1YZ-mpQEM1ufQa0AyDxxaR+4c@mail.gmail.com","threadId":"26454","inReplyTo":"20110218023126.GB23435@elie","subject":"Re: [PATCH 1/3] Move libgit.a sources into a libgit/ subdirectory","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2011-02-18T04:31:25Z","receivedAt":"2011-02-18T04:31:25Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"2011/2/18 Jonathan Nieder <jrnieder@gmail.com>:\n> Perhaps some day the libgit/ subdirectory can be managed as an\n> independent subproject (for example if it gets merged with libgit2).\n\nAnother note. The boundary between libgit and \"git\" binary is not\nperfectly clear. For example transport.c can make fetch_pack() call,\nwhich resides in builtin/fetch-pack.c. But this is a good move anyway.\nWe can gradually move all shared functionalities to libgit.\n-- \nDuy\n"},{"id":"161502","messageId":"20110218043231.GD15643@elie","threadId":"26454","inReplyTo":"20110218042916.GC15643@elie","subject":"[PATCH 4/3] compat: do not use relative paths to refer to git-compat-util.h et al","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T04:32:31Z","receivedAt":"2011-02-18T04:32:31Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Constructs like '#include \"../cache.h\"' referring to the toplevel of\nthe git sources from a subdirectory make it hard to move files around.\nLuckily \"cache.h\" works from any directory because the Makefile\nsupplies -I. in BASIC_CFLAGS explicitly.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n compat/basename.c      |    2 +-\n compat/cygwin.c        |    4 ++--\n compat/fopen.c         |    2 +-\n compat/inet_ntop.c     |    2 +-\n compat/inet_pton.c     |    2 +-\n compat/memmem.c        |    2 +-\n compat/mingw.c         |    4 ++--\n compat/mkdtemp.c       |    2 +-\n compat/mmap.c          |    2 +-\n compat/msvc.c          |    4 ++--\n compat/pread.c         |    2 +-\n compat/qsort.c         |    2 +-\n compat/setenv.c        |    2 +-\n compat/snprintf.c      |    2 +-\n compat/strcasestr.c    |    2 +-\n compat/strlcpy.c       |    2 +-\n compat/strtok_r.c      |    2 +-\n compat/strtoumax.c     |    2 +-\n compat/unsetenv.c      |    2 +-\n compat/win32/dirent.c  |    2 +-\n compat/win32/pthread.c |    2 +-\n compat/win32/syslog.c  |    4 ++--\n compat/win32mmap.c     |    2 +-\n compat/winansi.c       |    2 +-\n 24 files changed, 28 insertions(+), 28 deletions(-)\n\ndiff --git a/compat/basename.c b/compat/basename.c\nindex d8f8a3c..4382378 100644\n--- a/compat/basename.c\n+++ b/compat/basename.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n /* Adapted from libiberty's basename.c.  */\n char *gitbasename (char *path)\ndiff --git a/compat/cygwin.c b/compat/cygwin.c\nindex b4a51b9..23c5138 100644\n--- a/compat/cygwin.c\n+++ b/compat/cygwin.c\n@@ -1,7 +1,7 @@\n #define WIN32_LEAN_AND_MEAN\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n+#include \"cache.h\" /* to read configuration */\n #include \"win32.h\"\n-#include \"../cache.h\" /* to read configuration */\n \n static inline void filetime_to_timespec(const FILETIME *ft, struct timespec *ts)\n {\ndiff --git a/compat/fopen.c b/compat/fopen.c\nindex b5ca142..e777c44 100644\n--- a/compat/fopen.c\n+++ b/compat/fopen.c\n@@ -9,7 +9,7 @@\n  *  fopen after including git-compat-util.h is inadequate in this case.\n  */\n #undef FREAD_READS_DIRECTORIES\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n FILE *git_fopen(const char *path, const char *mode)\n {\ndiff --git a/compat/inet_ntop.c b/compat/inet_ntop.c\nindex ea249c6..d2c2b48 100644\n--- a/compat/inet_ntop.c\n+++ b/compat/inet_ntop.c\n@@ -18,7 +18,7 @@\n #include <errno.h>\n #include <sys/types.h>\n \n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n #include <stdio.h>\n #include <string.h>\ndiff --git a/compat/inet_pton.c b/compat/inet_pton.c\nindex 2ec995e..8ff1d9d 100644\n--- a/compat/inet_pton.c\n+++ b/compat/inet_pton.c\n@@ -18,7 +18,7 @@\n #include <errno.h>\n #include <sys/types.h>\n \n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n #include <stdio.h>\n #include <string.h>\ndiff --git a/compat/memmem.c b/compat/memmem.c\nindex 56bcb42..2df3e7b 100644\n--- a/compat/memmem.c\n+++ b/compat/memmem.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n void *gitmemmem(const void *haystack, size_t haystack_len,\n                 const void *needle, size_t needle_len)\ndiff --git a/compat/mingw.c b/compat/mingw.c\nindex bee6054..e43bba3 100644\n--- a/compat/mingw.c\n+++ b/compat/mingw.c\n@@ -1,7 +1,7 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n+#include \"strbuf.h\"\n #include \"win32.h\"\n #include <conio.h>\n-#include \"../strbuf.h\"\n \n int err_win_to_posix(DWORD winerr)\n {\ndiff --git a/compat/mkdtemp.c b/compat/mkdtemp.c\nindex 1136119..4349e15 100644\n--- a/compat/mkdtemp.c\n+++ b/compat/mkdtemp.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n char *gitmkdtemp(char *template)\n {\ndiff --git a/compat/mmap.c b/compat/mmap.c\nindex c9d46d1..a62533e 100644\n--- a/compat/mmap.c\n+++ b/compat/mmap.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n void *git_mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset)\n {\ndiff --git a/compat/msvc.c b/compat/msvc.c\nindex 71843d7..e55b546 100644\n--- a/compat/msvc.c\n+++ b/compat/msvc.c\n@@ -1,6 +1,6 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n+#include \"strbuf.h\"\n #include \"win32.h\"\n #include <conio.h>\n-#include \"../strbuf.h\"\n \n #include \"mingw.c\"\ndiff --git a/compat/pread.c b/compat/pread.c\nindex 978cac4..429f7dd 100644\n--- a/compat/pread.c\n+++ b/compat/pread.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n ssize_t git_pread(int fd, void *buf, size_t count, off_t offset)\n {\ndiff --git a/compat/qsort.c b/compat/qsort.c\nindex d93dce2..a490959 100644\n--- a/compat/qsort.c\n+++ b/compat/qsort.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n /*\n  * A merge sort implementation, simplified from the qsort implementation\ndiff --git a/compat/setenv.c b/compat/setenv.c\nindex 3a22ea7..bf1016f 100644\n--- a/compat/setenv.c\n+++ b/compat/setenv.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n int gitsetenv(const char *name, const char *value, int replace)\n {\ndiff --git a/compat/snprintf.c b/compat/snprintf.c\nindex e1e0e75..376eeff 100644\n--- a/compat/snprintf.c\n+++ b/compat/snprintf.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n /*\n  * The size parameter specifies the available space, i.e. includes\ndiff --git a/compat/strcasestr.c b/compat/strcasestr.c\nindex 26896de..d666093 100644\n--- a/compat/strcasestr.c\n+++ b/compat/strcasestr.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n char *gitstrcasestr(const char *haystack, const char *needle)\n {\ndiff --git a/compat/strlcpy.c b/compat/strlcpy.c\nindex 4024c36..780b39f 100644\n--- a/compat/strlcpy.c\n+++ b/compat/strlcpy.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n size_t gitstrlcpy(char *dest, const char *src, size_t size)\n {\ndiff --git a/compat/strtok_r.c b/compat/strtok_r.c\nindex 7b5d568..6eec7f8 100644\n--- a/compat/strtok_r.c\n+++ b/compat/strtok_r.c\n@@ -17,7 +17,7 @@\n    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA\n    02111-1307 USA.  */\n \n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n /* Parse S into tokens separated by characters in DELIM.\n    If S is NULL, the saved pointer in SAVE_PTR is used as\ndiff --git a/compat/strtoumax.c b/compat/strtoumax.c\nindex 5541353..50fe26d 100644\n--- a/compat/strtoumax.c\n+++ b/compat/strtoumax.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n uintmax_t gitstrtoumax (const char *nptr, char **endptr, int base)\n {\ndiff --git a/compat/unsetenv.c b/compat/unsetenv.c\nindex eb29f5e..8f38d37 100644\n--- a/compat/unsetenv.c\n+++ b/compat/unsetenv.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n void gitunsetenv (const char *name)\n {\ndiff --git a/compat/win32/dirent.c b/compat/win32/dirent.c\nindex 7a0debe..038188e 100644\n--- a/compat/win32/dirent.c\n+++ b/compat/win32/dirent.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n #include \"dirent.h\"\n \n struct DIR {\ndiff --git a/compat/win32/pthread.c b/compat/win32/pthread.c\nindex 010e875..3b1f381 100644\n--- a/compat/win32/pthread.c\n+++ b/compat/win32/pthread.c\n@@ -7,7 +7,7 @@\n  * no need for double-checking.\n  */\n \n-#include \"../../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n #include \"pthread.h\"\n \n #include <errno.h>\ndiff --git a/compat/win32/syslog.c b/compat/win32/syslog.c\nindex 42b95a9..9c4c8e2 100644\n--- a/compat/win32/syslog.c\n+++ b/compat/win32/syslog.c\n@@ -1,5 +1,5 @@\n-#include \"../../git-compat-util.h\"\n-#include \"../../strbuf.h\"\n+#include \"git-compat-util.h\"\n+#include \"strbuf.h\"\n \n static HANDLE ms_eventlog;\n \ndiff --git a/compat/win32mmap.c b/compat/win32mmap.c\nindex b58aa69..756fe8a 100644\n--- a/compat/win32mmap.c\n+++ b/compat/win32mmap.c\n@@ -1,4 +1,4 @@\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n void *git_mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset)\n {\ndiff --git a/compat/winansi.c b/compat/winansi.c\nindex dedce21..82a5d9c 100644\n--- a/compat/winansi.c\n+++ b/compat/winansi.c\n@@ -2,7 +2,7 @@\n  * Copyright 2008 Peter Harris <git@peter.is-a-geek.org>\n  */\n \n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n /*\n  Functions to be wrapped:\n-- \n1.7.4.1\n"},{"id":"161504","messageId":"20110218043413.GE15643@elie","threadId":"26454","inReplyTo":"20110218042916.GC15643@elie","subject":"[PATCH 5/3] block-sha1: do not use relative path for git-compat-util.h","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T04:34:14Z","receivedAt":"2011-02-18T04:34:14Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Rely on the includepath instead of specifying a path to\ngit-compat-util.h explicitly.  This way, git-compat-util.h can move\nmore easily.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n block-sha1/sha1.c |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/block-sha1/sha1.c b/block-sha1/sha1.c\nindex c0054a0..71464fa 100644\n--- a/block-sha1/sha1.c\n+++ b/block-sha1/sha1.c\n@@ -7,7 +7,7 @@\n  */\n \n /* this is only to get definitions for memcpy(), ntohl() and htonl() */\n-#include \"../git-compat-util.h\"\n+#include \"git-compat-util.h\"\n \n #include \"sha1.h\"\n \n-- \n1.7.4.1\n"},{"id":"161505","messageId":"20110218043536.GF15643@elie","threadId":"26454","inReplyTo":"20110218042916.GC15643@elie","subject":"[PATCH 6/3] Move git-compat-util.h, strbuf.h, and cache.h to include/","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T04:35:36Z","receivedAt":"2011-02-18T04:35:36Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Having one directory for all core headers except a few and another\ndirectory for the most important ones is too confusing.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile                                       |    6 +++---\n cache.h => include/cache.h                     |    0\n git-compat-util.h => include/git-compat-util.h |    0\n strbuf.h => include/strbuf.h                   |    0\n 4 files changed, 3 insertions(+), 3 deletions(-)\n rename cache.h => include/cache.h (100%)\n rename git-compat-util.h => include/git-compat-util.h (100%)\n rename strbuf.h => include/strbuf.h (100%)\n\ndiff --git a/Makefile b/Makefile\nindex 1e96504..9ce9ccd 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -496,7 +496,7 @@ LIB_H += include/archive.h\n LIB_H += include/attr.h\n LIB_H += include/blob.h\n LIB_H += include/builtin.h\n-LIB_H += cache.h\n+LIB_H += include/cache.h\n LIB_H += include/cache-tree.h\n LIB_H += include/color.h\n LIB_H += include/commit.h\n@@ -515,7 +515,7 @@ LIB_H += include/diff.h\n LIB_H += include/dir.h\n LIB_H += include/exec_cmd.h\n LIB_H += include/fsck.h\n-LIB_H += git-compat-util.h\n+LIB_H += include/git-compat-util.h\n LIB_H += include/graph.h\n LIB_H += include/grep.h\n LIB_H += include/hash.h\n@@ -548,7 +548,7 @@ LIB_H += include/run-command.h\n LIB_H += include/sha1-lookup.h\n LIB_H += include/sideband.h\n LIB_H += include/sigchain.h\n-LIB_H += strbuf.h\n+LIB_H += include/strbuf.h\n LIB_H += include/string-list.h\n LIB_H += include/submodule.h\n LIB_H += include/tag.h\ndiff --git a/cache.h b/include/cache.h\nsimilarity index 100%\nrename from cache.h\nrename to include/cache.h\ndiff --git a/git-compat-util.h b/include/git-compat-util.h\nsimilarity index 100%\nrename from git-compat-util.h\nrename to include/git-compat-util.h\ndiff --git a/strbuf.h b/include/strbuf.h\nsimilarity index 100%\nrename from strbuf.h\nrename to include/strbuf.h\n-- \n1.7.4.1\n"},{"id":"161506","messageId":"20110218045139.GG15643@elie","threadId":"26454","inReplyTo":"AANLkTik8wUrUnjTiUxUZbg3paaQEc7UERQ6J6jUzA2u5@mail.gmail.com","subject":"[RFC/PATCH 7 - 9/3] Thinning the git toplevel directory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T04:51:39Z","receivedAt":"2011-02-18T04:51:39Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Nguyen Thai Ngoc Duy wrote:\n\n> External commands are now more visible. Nice.\n\nHere's a series to make them more visible, by putting them in a\n\"nonbuiltin/\" subdirectory.  The name is a placeholder, of course.\n\nWithout a good name for the directory, this just makes things _harder_\nto find, but maybe you can fix that.\n\nJonathan Nieder (3):\n  Move test-sha1.sh to test-programs/\n  Move build helpers to scripts/ subdirectory\n  Move non-builtin git commands and script libraries to a subdirectory\n\n Makefile                                           |  157 ++++++++++----------\n .../add--interactive.perl                          |    0\n git-am.sh => nonbuiltin/am.sh                      |    0\n git-archimport.perl => nonbuiltin/archimport.perl  |    0\n git-bisect.sh => nonbuiltin/bisect.sh              |    0\n check-racy.c => nonbuiltin/check-racy.c            |    0\n .../cvsexportcommit.perl                           |    0\n git-cvsimport.perl => nonbuiltin/cvsimport.perl    |    0\n git-cvsserver.perl => nonbuiltin/cvsserver.perl    |    0\n daemon.c => nonbuiltin/daemon.c                    |    0\n .../difftool--helper.sh                            |    0\n git-difftool.perl => nonbuiltin/difftool.perl      |    0\n fast-import.c => nonbuiltin/fast-import.c          |    0\n .../filter-branch.sh                               |    0\n http-backend.c => nonbuiltin/http-backend.c        |    0\n http-fetch.c => nonbuiltin/http-fetch.c            |    0\n http-push.c => nonbuiltin/http-push.c              |    0\n imap-send.c => nonbuiltin/imap-send.c              |    0\n git-instaweb.sh => nonbuiltin/instaweb.sh          |    0\n git-lost-found.sh => nonbuiltin/lost-found.sh      |    0\n .../merge-octopus.sh                               |    0\n .../merge-one-file.sh                              |    0\n .../merge-resolve.sh                               |    0\n .../mergetool--lib.sh                              |    0\n git-mergetool.sh => nonbuiltin/mergetool.sh        |    0\n git-parse-remote.sh => nonbuiltin/parse-remote.sh  |    0\n git-pull.sh => nonbuiltin/pull.sh                  |    0\n git-quiltimport.sh => nonbuiltin/quiltimport.sh    |    0\n .../rebase--interactive.sh                         |    0\n git-rebase.sh => nonbuiltin/rebase.sh              |    0\n git-relink.perl => nonbuiltin/relink.perl          |    0\n remote-curl.c => nonbuiltin/remote-curl.c          |    0\n .../remote-testgit.py                              |    0\n git-repack.sh => nonbuiltin/repack.sh              |    0\n git-request-pull.sh => nonbuiltin/request-pull.sh  |    0\n git-send-email.perl => nonbuiltin/send-email.perl  |    0\n git-sh-setup.sh => nonbuiltin/sh-setup.sh          |    0\n shell.c => nonbuiltin/shell.c                      |    0\n show-index.c => nonbuiltin/show-index.c            |    0\n git-stash.sh => nonbuiltin/stash.sh                |    0\n git-submodule.sh => nonbuiltin/submodule.sh        |    0\n git-svn.perl => nonbuiltin/svn.perl                |    0\n upload-pack.c => nonbuiltin/upload-pack.c          |    0\n git-web--browse.sh => nonbuiltin/web--browse.sh    |    0\n GIT-VERSION-GEN => scripts/GIT-VERSION-GEN         |    0\n check_bindir => scripts/check-bindir.sh            |    0\n check-builtins.sh => scripts/check-builtins.sh     |    0\n fixup-builtins => scripts/fixup-builtins.sh        |    0\n generate-cmdlist.sh => scripts/generate-cmdlist.sh |    0\n unimplemented.sh => scripts/unimplemented.sh       |    0\n wrap-for-bin.sh => scripts/wrap-for-bin.sh         |    0\n test-sha1.sh => test-programs/test-sha1.sh         |    0\n 52 files changed, 80 insertions(+), 77 deletions(-)\n rename git-add--interactive.perl => nonbuiltin/add--interactive.perl (100%)\n rename git-am.sh => nonbuiltin/am.sh (100%)\n rename git-archimport.perl => nonbuiltin/archimport.perl (100%)\n rename git-bisect.sh => nonbuiltin/bisect.sh (100%)\n rename check-racy.c => nonbuiltin/check-racy.c (100%)\n rename git-cvsexportcommit.perl => nonbuiltin/cvsexportcommit.perl (100%)\n rename git-cvsimport.perl => nonbuiltin/cvsimport.perl (100%)\n rename git-cvsserver.perl => nonbuiltin/cvsserver.perl (100%)\n rename daemon.c => nonbuiltin/daemon.c (100%)\n rename git-difftool--helper.sh => nonbuiltin/difftool--helper.sh (100%)\n rename git-difftool.perl => nonbuiltin/difftool.perl (100%)\n rename fast-import.c => nonbuiltin/fast-import.c (100%)\n rename git-filter-branch.sh => nonbuiltin/filter-branch.sh (100%)\n rename http-backend.c => nonbuiltin/http-backend.c (100%)\n rename http-fetch.c => nonbuiltin/http-fetch.c (100%)\n rename http-push.c => nonbuiltin/http-push.c (100%)\n rename imap-send.c => nonbuiltin/imap-send.c (100%)\n rename git-instaweb.sh => nonbuiltin/instaweb.sh (100%)\n rename git-lost-found.sh => nonbuiltin/lost-found.sh (100%)\n rename git-merge-octopus.sh => nonbuiltin/merge-octopus.sh (100%)\n rename git-merge-one-file.sh => nonbuiltin/merge-one-file.sh (100%)\n rename git-merge-resolve.sh => nonbuiltin/merge-resolve.sh (100%)\n rename git-mergetool--lib.sh => nonbuiltin/mergetool--lib.sh (100%)\n rename git-mergetool.sh => nonbuiltin/mergetool.sh (100%)\n rename git-parse-remote.sh => nonbuiltin/parse-remote.sh (100%)\n rename git-pull.sh => nonbuiltin/pull.sh (100%)\n rename git-quiltimport.sh => nonbuiltin/quiltimport.sh (100%)\n rename git-rebase--interactive.sh => nonbuiltin/rebase--interactive.sh (100%)\n rename git-rebase.sh => nonbuiltin/rebase.sh (100%)\n rename git-relink.perl => nonbuiltin/relink.perl (100%)\n rename remote-curl.c => nonbuiltin/remote-curl.c (100%)\n rename git-remote-testgit.py => nonbuiltin/remote-testgit.py (100%)\n rename git-repack.sh => nonbuiltin/repack.sh (100%)\n rename git-request-pull.sh => nonbuiltin/request-pull.sh (100%)\n rename git-send-email.perl => nonbuiltin/send-email.perl (100%)\n rename git-sh-setup.sh => nonbuiltin/sh-setup.sh (100%)\n rename shell.c => nonbuiltin/shell.c (100%)\n rename show-index.c => nonbuiltin/show-index.c (100%)\n rename git-stash.sh => nonbuiltin/stash.sh (100%)\n rename git-submodule.sh => nonbuiltin/submodule.sh (100%)\n rename git-svn.perl => nonbuiltin/svn.perl (100%)\n rename upload-pack.c => nonbuiltin/upload-pack.c (100%)\n rename git-web--browse.sh => nonbuiltin/web--browse.sh (100%)\n rename GIT-VERSION-GEN => scripts/GIT-VERSION-GEN (100%)\n rename check_bindir => scripts/check-bindir.sh (100%)\n rename check-builtins.sh => scripts/check-builtins.sh (100%)\n rename fixup-builtins => scripts/fixup-builtins.sh (100%)\n rename generate-cmdlist.sh => scripts/generate-cmdlist.sh (100%)\n rename unimplemented.sh => scripts/unimplemented.sh (100%)\n rename wrap-for-bin.sh => scripts/wrap-for-bin.sh (100%)\n rename test-sha1.sh => test-programs/test-sha1.sh (100%)\n"},{"id":"161507","messageId":"20110218045229.GH15643@elie","threadId":"26454","inReplyTo":"20110218045139.GG15643@elie","subject":"[PATCH 7/3] Move test-sha1.sh to test-programs/","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T04:52:29Z","receivedAt":"2011-02-18T04:52:29Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Probably it should go in t/ as a new test but I am lazy.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\n Makefile                                   |    2 +-\n test-sha1.sh => test-programs/test-sha1.sh |    0\n 2 files changed, 1 insertions(+), 1 deletions(-)\n rename test-sha1.sh => test-programs/test-sha1.sh (100%)\n\ndiff --git a/Makefile b/Makefile\nindex 9ce9ccd..61981e5 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2149,7 +2149,7 @@ test-%$X: test-programs/test-%.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(filter %.a,$^) $(LIBS)\n \n check-sha1:: test-sha1$X\n-\t./test-sha1.sh\n+\ttest-programs/test-sha1.sh\n \n check: common-cmds.h\n \tif sparse; \\\ndiff --git a/test-sha1.sh b/test-programs/test-sha1.sh\nsimilarity index 100%\nrename from test-sha1.sh\nrename to test-programs/test-sha1.sh\n-- \n1.7.4.1\n"},{"id":"161508","messageId":"20110218045526.GI15643@elie","threadId":"26454","inReplyTo":"20110218045139.GG15643@elie","subject":"[PATCH 8/3] Move build helpers to scripts/ subdirectory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T04:55:26Z","receivedAt":"2011-02-18T04:55:26Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"So the toplevel directory can be less cluttered and new build\nsystem hackers can know where to look to get acquainted with it.\n\nWhile we're renaming things, make the names of these scripts\nfollow a more consistent scheme (using dashes rather than\nunderscores to separate words and including a .sh suffix).\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nI think I'd prefer to omit the .sh suffix for helpers like\ngenerate-cmdlist but this way follows the prevailing style.\n\n Makefile                                           |   22 ++++++++++----------\n GIT-VERSION-GEN => scripts/GIT-VERSION-GEN         |    0\n check_bindir => scripts/check-bindir.sh            |    0\n check-builtins.sh => scripts/check-builtins.sh     |    0\n fixup-builtins => scripts/fixup-builtins.sh        |    0\n generate-cmdlist.sh => scripts/generate-cmdlist.sh |    0\n unimplemented.sh => scripts/unimplemented.sh       |    0\n wrap-for-bin.sh => scripts/wrap-for-bin.sh         |    0\n 8 files changed, 11 insertions(+), 11 deletions(-)\n rename GIT-VERSION-GEN => scripts/GIT-VERSION-GEN (100%)\n rename check_bindir => scripts/check-bindir.sh (100%)\n rename check-builtins.sh => scripts/check-builtins.sh (100%)\n rename fixup-builtins => scripts/fixup-builtins.sh (100%)\n rename generate-cmdlist.sh => scripts/generate-cmdlist.sh (100%)\n rename unimplemented.sh => scripts/unimplemented.sh (100%)\n rename wrap-for-bin.sh => scripts/wrap-for-bin.sh (100%)\n\ndiff --git a/Makefile b/Makefile\nindex 61981e5..1c10e29 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -244,7 +244,7 @@ all::\n # Define NATIVE_CRLF if your platform uses CRLF for line endings.\n \n GIT-VERSION-FILE: FORCE\n-\t@$(SHELL_PATH) ./GIT-VERSION-GEN\n+\t@$(SHELL_PATH) scripts/GIT-VERSION-GEN\n -include GIT-VERSION-FILE\n \n uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')\n@@ -1697,10 +1697,10 @@ $(BUILT_INS): git$X\n \tln -s git$X $@ 2>/dev/null || \\\n \tcp git$X $@\n \n-common-cmds.h: ./generate-cmdlist.sh command-list.txt\n+common-cmds.h: scripts/generate-cmdlist.sh command-list.txt\n \n common-cmds.h: $(wildcard Documentation/git-*.txt)\n-\t$(QUIET_GEN)./generate-cmdlist.sh > $@+ && mv $@+ $@\n+\t$(QUIET_GEN)scripts/generate-cmdlist.sh > $@+ && mv $@+ $@\n \n define cmd_munge_script\n $(RM) $@ $@+ && \\\n@@ -1785,11 +1785,11 @@ git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/static/gitweb.css gitweb/\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n else # NO_PERL\n-$(patsubst %.perl,%,$(SCRIPT_PERL)) git-instaweb: % : unimplemented.sh\n+$(patsubst %.perl,%,$(SCRIPT_PERL)) git-instaweb: % : scripts/unimplemented.sh\n \t$(QUIET_GEN)$(RM) $@ $@+ && \\\n \tsed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n \t    -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \\\n-\t    unimplemented.sh >$@+ && \\\n+\t    $< >$@+ && \\\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n endif # NO_PERL\n@@ -1808,11 +1808,11 @@ $(patsubst %.py,%,$(SCRIPT_PYTHON)): % : %.py\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n else # NO_PYTHON\n-$(patsubst %.py,%,$(SCRIPT_PYTHON)): % : unimplemented.sh\n+$(patsubst %.py,%,$(SCRIPT_PYTHON)): % : scripts/unimplemented.sh\n \t$(QUIET_GEN)$(RM) $@ $@+ && \\\n \tsed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n \t    -e 's|@@REASON@@|NO_PYTHON=$(NO_PYTHON)|g' \\\n-\t    unimplemented.sh >$@+ && \\\n+\t    $< >$@+ && \\\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n endif # NO_PYTHON\n@@ -2111,7 +2111,7 @@ test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $(\n \n all:: $(TEST_PROGRAMS) $(test_bindir_programs)\n \n-bin-wrappers/%: wrap-for-bin.sh\n+bin-wrappers/%: scripts/wrap-for-bin.sh\n \t@mkdir -p bin-wrappers\n \t$(QUIET_GEN)sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n \t     -e 's|@@BUILD_DIR@@|$(shell pwd)|' \\\n@@ -2164,7 +2164,7 @@ check: common-cmds.h\n \tfi\n \n remove-dashes:\n-\t./fixup-builtins $(BUILT_INS) $(PROGRAMS) $(SCRIPTS)\n+\tscripts/fixup-builtins.sh $(BUILT_INS) $(PROGRAMS) $(SCRIPTS)\n \n ### Installation rules\n \n@@ -2236,7 +2236,7 @@ endif\n \t\tln -s \"git-remote-http$X\" \"$$execdir/$$p\" 2>/dev/null || \\\n \t\tcp \"$$execdir/git-remote-http$X\" \"$$execdir/$$p\" || exit; \\\n \tdone && \\\n-\t./check_bindir \"z$$bindir\" \"z$$execdir\" \"$$bindir/git-add$X\"\n+\tscripts/check-bindir.sh \"z$$bindir\" \"z$$execdir\" \"$$bindir/git-add$X\"\n \n install-gitweb:\n \t$(MAKE) -C gitweb install\n@@ -2415,7 +2415,7 @@ check-docs::\n ### Make sure built-ins do not have dups and listed in git.c\n #\n check-builtins::\n-\t./check-builtins.sh\n+\tscripts/check-builtins.sh\n \n ### Test suite coverage testing\n #\ndiff --git a/GIT-VERSION-GEN b/scripts/GIT-VERSION-GEN\nsimilarity index 100%\nrename from GIT-VERSION-GEN\nrename to scripts/GIT-VERSION-GEN\ndiff --git a/check_bindir b/scripts/check-bindir.sh\nsimilarity index 100%\nrename from check_bindir\nrename to scripts/check-bindir.sh\ndiff --git a/check-builtins.sh b/scripts/check-builtins.sh\nsimilarity index 100%\nrename from check-builtins.sh\nrename to scripts/check-builtins.sh\ndiff --git a/fixup-builtins b/scripts/fixup-builtins.sh\nsimilarity index 100%\nrename from fixup-builtins\nrename to scripts/fixup-builtins.sh\ndiff --git a/generate-cmdlist.sh b/scripts/generate-cmdlist.sh\nsimilarity index 100%\nrename from generate-cmdlist.sh\nrename to scripts/generate-cmdlist.sh\ndiff --git a/unimplemented.sh b/scripts/unimplemented.sh\nsimilarity index 100%\nrename from unimplemented.sh\nrename to scripts/unimplemented.sh\ndiff --git a/wrap-for-bin.sh b/scripts/wrap-for-bin.sh\nsimilarity index 100%\nrename from wrap-for-bin.sh\nrename to scripts/wrap-for-bin.sh\n-- \n1.7.4.1\n"},{"id":"161509","messageId":"20110218050405.GJ15643@elie","threadId":"26454","inReplyTo":"20110218045139.GG15643@elie","subject":"[PATCH 9/3] Move non-builtin git commands and script libraries to a subdirectory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T05:04:05Z","receivedAt":"2011-02-18T05:04:05Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Create a nonbuiltin/ directory for the standalone programs, scripts,\nand script libraries that are installed in gitexecdir and implement\nnon-builtin git commands.\n\nSo now each file git-subcommand in /usr/libexec/git-core is a hard\nlink to git, a copy of scripts/unimplemented.sh, or builtin from a\nfile named nonbuiltin/subcommand.<something>, where <something> is c,\nsh, or perl.\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n---\nThe patch would probably be cleaner if\n\n\tBUILT_SCRIPT_SH := $(patsubst %.sh,%,$(SCRIPT_SH))\n\net al were factored out first.\n\n Makefile                                           |  137 ++++++++++----------\n [ ... and a bunch of renames ... ]\n 44 files changed, 70 insertions(+), 67 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 1c10e29..6f8a11c 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -358,44 +358,44 @@ TEST_PROGRAMS_NEED_X =\n # interactive shell sessions without exporting it.\n unexport CDPATH\n \n-SCRIPT_SH += git-am.sh\n-SCRIPT_SH += git-bisect.sh\n-SCRIPT_SH += git-difftool--helper.sh\n-SCRIPT_SH += git-filter-branch.sh\n-SCRIPT_SH += git-lost-found.sh\n-SCRIPT_SH += git-merge-octopus.sh\n-SCRIPT_SH += git-merge-one-file.sh\n-SCRIPT_SH += git-merge-resolve.sh\n-SCRIPT_SH += git-mergetool.sh\n-SCRIPT_SH += git-pull.sh\n-SCRIPT_SH += git-quiltimport.sh\n-SCRIPT_SH += git-rebase--interactive.sh\n-SCRIPT_SH += git-rebase.sh\n-SCRIPT_SH += git-repack.sh\n-SCRIPT_SH += git-request-pull.sh\n-SCRIPT_SH += git-stash.sh\n-SCRIPT_SH += git-submodule.sh\n-SCRIPT_SH += git-web--browse.sh\n+SCRIPT_SH += nonbuiltin/am.sh\n+SCRIPT_SH += nonbuiltin/bisect.sh\n+SCRIPT_SH += nonbuiltin/difftool--helper.sh\n+SCRIPT_SH += nonbuiltin/filter-branch.sh\n+SCRIPT_SH += nonbuiltin/lost-found.sh\n+SCRIPT_SH += nonbuiltin/merge-octopus.sh\n+SCRIPT_SH += nonbuiltin/merge-one-file.sh\n+SCRIPT_SH += nonbuiltin/merge-resolve.sh\n+SCRIPT_SH += nonbuiltin/mergetool.sh\n+SCRIPT_SH += nonbuiltin/pull.sh\n+SCRIPT_SH += nonbuiltin/quiltimport.sh\n+SCRIPT_SH += nonbuiltin/rebase--interactive.sh\n+SCRIPT_SH += nonbuiltin/rebase.sh\n+SCRIPT_SH += nonbuiltin/repack.sh\n+SCRIPT_SH += nonbuiltin/request-pull.sh\n+SCRIPT_SH += nonbuiltin/stash.sh\n+SCRIPT_SH += nonbuiltin/submodule.sh\n+SCRIPT_SH += nonbuiltin/web--browse.sh\n \n SCRIPT_LIB += git-mergetool--lib\n SCRIPT_LIB += git-parse-remote\n SCRIPT_LIB += git-sh-setup\n \n-SCRIPT_PERL += git-add--interactive.perl\n-SCRIPT_PERL += git-difftool.perl\n-SCRIPT_PERL += git-archimport.perl\n-SCRIPT_PERL += git-cvsexportcommit.perl\n-SCRIPT_PERL += git-cvsimport.perl\n-SCRIPT_PERL += git-cvsserver.perl\n-SCRIPT_PERL += git-relink.perl\n-SCRIPT_PERL += git-send-email.perl\n-SCRIPT_PERL += git-svn.perl\n+SCRIPT_PERL += nonbuiltin/add--interactive.perl\n+SCRIPT_PERL += nonbuiltin/difftool.perl\n+SCRIPT_PERL += nonbuiltin/archimport.perl\n+SCRIPT_PERL += nonbuiltin/cvsexportcommit.perl\n+SCRIPT_PERL += nonbuiltin/cvsimport.perl\n+SCRIPT_PERL += nonbuiltin/cvsserver.perl\n+SCRIPT_PERL += nonbuiltin/relink.perl\n+SCRIPT_PERL += nonbuiltin/send-email.perl\n+SCRIPT_PERL += nonbuiltin/svn.perl\n \n-SCRIPT_PYTHON += git-remote-testgit.py\n+SCRIPT_PYTHON += nonbuiltin/remote-testgit.py\n \n-SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \\\n-\t  $(patsubst %.perl,%,$(SCRIPT_PERL)) \\\n-\t  $(patsubst %.py,%,$(SCRIPT_PYTHON)) \\\n+SCRIPTS = $(patsubst nonbuiltin/%.sh,git-%,$(SCRIPT_SH)) \\\n+\t  $(patsubst nonbuiltin/%.perl,git-%,$(SCRIPT_PERL)) \\\n+\t  $(patsubst nonbuiltin/%.py,git-%,$(SCRIPT_PYTHON)) \\\n \t  git-instaweb\n \n ETAGS_TARGET = TAGS\n@@ -406,15 +406,15 @@ EXTRA_PROGRAMS =\n # ... and all the rest that could be moved out of bindir to gitexecdir\n PROGRAMS += $(EXTRA_PROGRAMS)\n \n-PROGRAM_OBJS += daemon.o\n-PROGRAM_OBJS += fast-import.o\n-PROGRAM_OBJS += imap-send.o\n-PROGRAM_OBJS += shell.o\n-PROGRAM_OBJS += show-index.o\n-PROGRAM_OBJS += upload-pack.o\n-PROGRAM_OBJS += http-backend.o\n+PROGRAM_OBJS += nonbuiltin/daemon.o\n+PROGRAM_OBJS += nonbuiltin/fast-import.o\n+PROGRAM_OBJS += nonbuiltin/imap-send.o\n+PROGRAM_OBJS += nonbuiltin/shell.o\n+PROGRAM_OBJS += nonbuiltin/show-index.o\n+PROGRAM_OBJS += nonbuiltin/upload-pack.o\n+PROGRAM_OBJS += nonbuiltin/http-backend.o\n \n-PROGRAMS += $(patsubst %.o,git-%$X,$(PROGRAM_OBJS))\n+PROGRAMS += $(patsubst nonbuiltin/%.o,git-%$X,$(PROGRAM_OBJS))\n \n TEST_PROGRAMS_NEED_X += test-chmtime\n TEST_PROGRAMS_NEED_X += test-ctype\n@@ -1267,12 +1267,12 @@ else\n \tREMOTE_CURL_PRIMARY = git-remote-http$X\n \tREMOTE_CURL_ALIASES = git-remote-https$X git-remote-ftp$X git-remote-ftps$X\n \tREMOTE_CURL_NAMES = $(REMOTE_CURL_PRIMARY) $(REMOTE_CURL_ALIASES)\n-\tPROGRAM_OBJS += http-fetch.o\n+\tPROGRAM_OBJS += nonbuiltin/http-fetch.o\n \tPROGRAMS += $(REMOTE_CURL_NAMES)\n \tcurl_check := $(shell (echo 070908; curl-config --vernum) | sort -r | sed -ne 2p)\n \tifeq \"$(curl_check)\" \"070908\"\n \t\tifndef NO_EXPAT\n-\t\t\tPROGRAM_OBJS += http-push.o\n+\t\t\tPROGRAM_OBJS += nonbuiltin/http-push.o\n \t\tendif\n \tendif\n \tifndef NO_EXPAT\n@@ -1710,25 +1710,25 @@ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n     -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \\\n     -e 's/@@NO_CURL@@/$(NO_CURL)/g' \\\n     -e $(BROKEN_PATH_FIX) \\\n-    $@.sh >$@+\n+    $< >$@+\n endef\n \n-$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh\n+$(patsubst nonbuiltin/%.sh,git-%,$(SCRIPT_SH)) : git-% : nonbuiltin/%.sh\n \t$(QUIET_GEN)$(cmd_munge_script) && \\\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n \n-$(SCRIPT_LIB) : % : %.sh\n+$(SCRIPT_LIB) : git-% : nonbuiltin/%.sh\n \t$(QUIET_GEN)$(cmd_munge_script) && \\\n \tmv $@+ $@\n \n ifndef NO_PERL\n-$(patsubst %.perl,%,$(SCRIPT_PERL)): perl/perl.mak\n+$(patsubst nonbuiltin/%.perl,git-%,$(SCRIPT_PERL)): perl/perl.mak\n \n perl/perl.mak: GIT-CFLAGS perl/Makefile perl/Makefile.PL\n \t$(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' $(@F)\n \n-$(patsubst %.perl,%,$(SCRIPT_PERL)): % : %.perl\n+$(patsubst nonbuiltin/%.perl,git-%,$(SCRIPT_PERL)): git-% : nonbuiltin/%.perl\n \t$(QUIET_GEN)$(RM) $@ $@+ && \\\n \tINSTLIBDIR=`MAKEFLAGS= $(MAKE) -C perl -s --no-print-directory instlibdir` && \\\n \tsed -e '1{' \\\n@@ -1739,7 +1739,7 @@ $(patsubst %.perl,%,$(SCRIPT_PERL)): % : %.perl\n \t    -e '\tx' \\\n \t    -e '}' \\\n \t    -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \\\n-\t    $@.perl >$@+ && \\\n+\t    $< >$@+ && \\\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n \n@@ -1774,18 +1774,18 @@ gitweb/static/gitweb.min.css: gitweb/static/gitweb.css\n endif # CSSMIN\n \n \n-git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/static/gitweb.css gitweb/static/gitweb.js\n+git-instaweb: nonbuiltin/instaweb.sh gitweb/gitweb.cgi gitweb/static/gitweb.css gitweb/static/gitweb.js\n \t$(QUIET_GEN)$(RM) $@ $@+ && \\\n \tsed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n \t    -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \\\n \t    -e 's/@@NO_CURL@@/$(NO_CURL)/g' \\\n \t    -e 's|@@GITWEBDIR@@|$(gitwebdir_SQ)|g' \\\n \t    -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \\\n-\t    $@.sh > $@+ && \\\n+\t    $< >$@+ && \\\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n else # NO_PERL\n-$(patsubst %.perl,%,$(SCRIPT_PERL)) git-instaweb: % : scripts/unimplemented.sh\n+$(patsubst nonbuiltin/%.perl,git-%,$(SCRIPT_PERL)) git-instaweb: git-% : scripts/unimplemented.sh\n \t$(QUIET_GEN)$(RM) $@ $@+ && \\\n \tsed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n \t    -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \\\n@@ -1795,8 +1795,8 @@ $(patsubst %.perl,%,$(SCRIPT_PERL)) git-instaweb: % : scripts/unimplemented.sh\n endif # NO_PERL\n \n ifndef NO_PYTHON\n-$(patsubst %.py,%,$(SCRIPT_PYTHON)): GIT-CFLAGS\n-$(patsubst %.py,%,$(SCRIPT_PYTHON)): % : %.py\n+$(patsubst nonbuiltin/%.py,git-%,$(SCRIPT_PYTHON)): GIT-CFLAGS\n+$(patsubst nonbuiltin/%.py,git-%,$(SCRIPT_PYTHON)): git-% : nonbuiltin/%.py\n \t$(QUIET_GEN)$(RM) $@ $@+ && \\\n \tINSTLIBDIR=`MAKEFLAGS= $(MAKE) -C git_remote_helpers -s \\\n \t\t--no-print-directory prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' \\\n@@ -1804,11 +1804,11 @@ $(patsubst %.py,%,$(SCRIPT_PYTHON)): % : %.py\n \tsed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \\\n \t    -e 's|\\(os\\.getenv(\"GITPYTHONLIB\"\\)[^)]*)|\\1,\"@@INSTLIBDIR@@\")|' \\\n \t    -e 's|@@INSTLIBDIR@@|'\"$$INSTLIBDIR\"'|g' \\\n-\t    $@.py >$@+ && \\\n+\t    $< >$@+ && \\\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n else # NO_PYTHON\n-$(patsubst %.py,%,$(SCRIPT_PYTHON)): % : scripts/unimplemented.sh\n+$(patsubst nonbuiltin/%.py,git-%,$(SCRIPT_PYTHON)): git-% : scripts/unimplemented.sh\n \t$(QUIET_GEN)$(RM) $@ $@+ && \\\n \tsed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n \t    -e 's|@@REASON@@|NO_PYTHON=$(NO_PYTHON)|g' \\\n@@ -1826,15 +1826,15 @@ configure: configure.ac\n \n # These can record GIT_VERSION\n git.o git.spec \\\n-\t$(patsubst %.sh,%,$(SCRIPT_SH)) \\\n-\t$(patsubst %.perl,%,$(SCRIPT_PERL)) \\\n+\t$(patsubst nonbuiltin/%.sh,git-%,$(SCRIPT_SH)) \\\n+\t$(patsubst nonbuiltin/%.perl,git-%,$(SCRIPT_PERL)) \\\n \t: GIT-VERSION-FILE\n \n TEST_OBJS := $(patsubst test-%$X,test-programs/test-%.o,$(TEST_PROGRAMS))\n GIT_OBJS := $(LIB_OBJS) $(BUILTIN_OBJS) $(PROGRAM_OBJS) $(TEST_OBJS) \\\n \tgit.o\n ifndef NO_CURL\n-\tGIT_OBJS += http.o http-walker.o remote-curl.o\n+\tGIT_OBJS += http.o http-walker.o nonbuiltin/remote-curl.o\n endif\n XDIFF_OBJS = xdiff/xdiffi.o xdiff/xprepare.o xdiff/xutils.o xdiff/xemit.o \\\n \txdiff/xmerge.o xdiff/xpatience.o\n@@ -1960,9 +1960,11 @@ builtin/log.o builtin/shortlog.o: include/shortlog.h\n builtin/prune.o builtin/reflog.o libgit/reachable.o: include/reachable.h\n builtin/commit.o builtin/revert.o libgit/wt-status.o: include/wt-status.h\n builtin/tar-tree.o libgit/archive-tar.o: include/tar.h\n-libgit/connect.o libgit/transport.o http-backend.o: include/url.h\n-http-fetch.o http-walker.o remote-curl.o libgit/transport.o libgit/walker.o: include/walker.h\n-http.o http-walker.o http-push.o http-fetch.o remote-curl.o: include/http.h include/url.h\n+libgit/connect.o libgit/transport.o nonbuiltin/http-backend.o: include/url.h\n+nonbuiltin/http-fetch.o nonbuiltin/remote-curl.o http-walker.o: include/walker.h\n+libgit/transport.o libgit/walker.o: include/walker.h\n+nonbuiltin/http-push.o nonbuiltin/http-fetch.o: include/http.h include/url.h\n+nonbuiltin/remote-curl.o http.o http-walker.o: include/http.h include/url.h\n \n libgit/xdiff-interface.o $(XDIFF_OBJS): \\\n \txdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \\\n@@ -2005,17 +2007,17 @@ compat/nedmalloc/nedmalloc.o: EXTRA_CPPFLAGS = \\\n \t-DNDEBUG -DOVERRIDE_STRDUP -DREPLACE_SYSTEM_ALLOCATOR\n endif\n \n-git-%$X: %.o $(GITLIBS)\n+git-%$X: nonbuiltin/%.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)\n \n-git-imap-send$X: imap-send.o $(GITLIBS)\n+git-imap-send$X: nonbuiltin/imap-send.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL) $(LIB_4_CRYPTO)\n \n-git-http-fetch$X: libgit/revision.o http.o http-walker.o http-fetch.o $(GITLIBS)\n+git-http-fetch$X: libgit/revision.o http.o http-walker.o nonbuiltin/http-fetch.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(CURL_LIBCURL)\n-git-http-push$X: libgit/revision.o http.o http-push.o $(GITLIBS)\n+git-http-push$X: libgit/revision.o http.o nonbuiltin/http-push.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)\n \n@@ -2025,7 +2027,7 @@ $(REMOTE_CURL_ALIASES): $(REMOTE_CURL_PRIMARY)\n \tln -s $< $@ 2>/dev/null || \\\n \tcp $< $@\n \n-$(REMOTE_CURL_PRIMARY): remote-curl.o http.o http-walker.o $(GITLIBS)\n+$(REMOTE_CURL_PRIMARY): nonbuiltin/remote-curl.o http.o http-walker.o $(GITLIBS)\n \t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)\n \n@@ -2321,8 +2323,9 @@ distclean: clean\n \t$(RM) configure\n \n clean:\n-\t$(RM) *.o block-sha1/*.o ppc/*.o compat/*.o compat/*/*.o xdiff/*.o vcs-svn/*.o \\\n-\t\tlibgit/*.o builtin/*.o $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB)\n+\t$(RM) *.o block-sha1/*.o ppc/*.o compat/*.o compat/*/*.o xdiff/*.o vcs-svn/*.o\n+\t$(RM) libgit/*.o builtin/*.o nonbuiltin/*.o\n+\t$(RM) $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB)\n \t$(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X\n \t$(RM) test-programs/*.o $(TEST_PROGRAMS)\n \t$(RM) -r bin-wrappers\ndiff --git a/git-add--interactive.perl b/nonbuiltin/add--interactive.perl\nsimilarity index 100%\nrename from git-add--interactive.perl\nrename to nonbuiltin/add--interactive.perl\ndiff --git a/git-am.sh b/nonbuiltin/am.sh\nsimilarity index 100%\nrename from git-am.sh\nrename to nonbuiltin/am.sh\ndiff --git a/git-archimport.perl b/nonbuiltin/archimport.perl\nsimilarity index 100%\nrename from git-archimport.perl\nrename to nonbuiltin/archimport.perl\ndiff --git a/git-bisect.sh b/nonbuiltin/bisect.sh\nsimilarity index 100%\nrename from git-bisect.sh\nrename to nonbuiltin/bisect.sh\ndiff --git a/check-racy.c b/nonbuiltin/check-racy.c\nsimilarity index 100%\nrename from check-racy.c\nrename to nonbuiltin/check-racy.c\ndiff --git a/git-cvsexportcommit.perl b/nonbuiltin/cvsexportcommit.perl\nsimilarity index 100%\nrename from git-cvsexportcommit.perl\nrename to nonbuiltin/cvsexportcommit.perl\ndiff --git a/git-cvsimport.perl b/nonbuiltin/cvsimport.perl\nsimilarity index 100%\nrename from git-cvsimport.perl\nrename to nonbuiltin/cvsimport.perl\ndiff --git a/git-cvsserver.perl b/nonbuiltin/cvsserver.perl\nsimilarity index 100%\nrename from git-cvsserver.perl\nrename to nonbuiltin/cvsserver.perl\ndiff --git a/daemon.c b/nonbuiltin/daemon.c\nsimilarity index 100%\nrename from daemon.c\nrename to nonbuiltin/daemon.c\ndiff --git a/git-difftool--helper.sh b/nonbuiltin/difftool--helper.sh\nsimilarity index 100%\nrename from git-difftool--helper.sh\nrename to nonbuiltin/difftool--helper.sh\ndiff --git a/git-difftool.perl b/nonbuiltin/difftool.perl\nsimilarity index 100%\nrename from git-difftool.perl\nrename to nonbuiltin/difftool.perl\ndiff --git a/fast-import.c b/nonbuiltin/fast-import.c\nsimilarity index 100%\nrename from fast-import.c\nrename to nonbuiltin/fast-import.c\ndiff --git a/git-filter-branch.sh b/nonbuiltin/filter-branch.sh\nsimilarity index 100%\nrename from git-filter-branch.sh\nrename to nonbuiltin/filter-branch.sh\ndiff --git a/http-backend.c b/nonbuiltin/http-backend.c\nsimilarity index 100%\nrename from http-backend.c\nrename to nonbuiltin/http-backend.c\ndiff --git a/http-fetch.c b/nonbuiltin/http-fetch.c\nsimilarity index 100%\nrename from http-fetch.c\nrename to nonbuiltin/http-fetch.c\ndiff --git a/http-push.c b/nonbuiltin/http-push.c\nsimilarity index 100%\nrename from http-push.c\nrename to nonbuiltin/http-push.c\ndiff --git a/imap-send.c b/nonbuiltin/imap-send.c\nsimilarity index 100%\nrename from imap-send.c\nrename to nonbuiltin/imap-send.c\ndiff --git a/git-instaweb.sh b/nonbuiltin/instaweb.sh\nsimilarity index 100%\nrename from git-instaweb.sh\nrename to nonbuiltin/instaweb.sh\ndiff --git a/git-lost-found.sh b/nonbuiltin/lost-found.sh\nsimilarity index 100%\nrename from git-lost-found.sh\nrename to nonbuiltin/lost-found.sh\ndiff --git a/git-merge-octopus.sh b/nonbuiltin/merge-octopus.sh\nsimilarity index 100%\nrename from git-merge-octopus.sh\nrename to nonbuiltin/merge-octopus.sh\ndiff --git a/git-merge-one-file.sh b/nonbuiltin/merge-one-file.sh\nsimilarity index 100%\nrename from git-merge-one-file.sh\nrename to nonbuiltin/merge-one-file.sh\ndiff --git a/git-merge-resolve.sh b/nonbuiltin/merge-resolve.sh\nsimilarity index 100%\nrename from git-merge-resolve.sh\nrename to nonbuiltin/merge-resolve.sh\ndiff --git a/git-mergetool--lib.sh b/nonbuiltin/mergetool--lib.sh\nsimilarity index 100%\nrename from git-mergetool--lib.sh\nrename to nonbuiltin/mergetool--lib.sh\ndiff --git a/git-mergetool.sh b/nonbuiltin/mergetool.sh\nsimilarity index 100%\nrename from git-mergetool.sh\nrename to nonbuiltin/mergetool.sh\ndiff --git a/git-parse-remote.sh b/nonbuiltin/parse-remote.sh\nsimilarity index 100%\nrename from git-parse-remote.sh\nrename to nonbuiltin/parse-remote.sh\ndiff --git a/git-pull.sh b/nonbuiltin/pull.sh\nsimilarity index 100%\nrename from git-pull.sh\nrename to nonbuiltin/pull.sh\ndiff --git a/git-quiltimport.sh b/nonbuiltin/quiltimport.sh\nsimilarity index 100%\nrename from git-quiltimport.sh\nrename to nonbuiltin/quiltimport.sh\ndiff --git a/git-rebase--interactive.sh b/nonbuiltin/rebase--interactive.sh\nsimilarity index 100%\nrename from git-rebase--interactive.sh\nrename to nonbuiltin/rebase--interactive.sh\ndiff --git a/git-rebase.sh b/nonbuiltin/rebase.sh\nsimilarity index 100%\nrename from git-rebase.sh\nrename to nonbuiltin/rebase.sh\ndiff --git a/git-relink.perl b/nonbuiltin/relink.perl\nsimilarity index 100%\nrename from git-relink.perl\nrename to nonbuiltin/relink.perl\ndiff --git a/remote-curl.c b/nonbuiltin/remote-curl.c\nsimilarity index 100%\nrename from remote-curl.c\nrename to nonbuiltin/remote-curl.c\ndiff --git a/git-remote-testgit.py b/nonbuiltin/remote-testgit.py\nsimilarity index 100%\nrename from git-remote-testgit.py\nrename to nonbuiltin/remote-testgit.py\ndiff --git a/git-repack.sh b/nonbuiltin/repack.sh\nsimilarity index 100%\nrename from git-repack.sh\nrename to nonbuiltin/repack.sh\ndiff --git a/git-request-pull.sh b/nonbuiltin/request-pull.sh\nsimilarity index 100%\nrename from git-request-pull.sh\nrename to nonbuiltin/request-pull.sh\ndiff --git a/git-send-email.perl b/nonbuiltin/send-email.perl\nsimilarity index 100%\nrename from git-send-email.perl\nrename to nonbuiltin/send-email.perl\ndiff --git a/git-sh-setup.sh b/nonbuiltin/sh-setup.sh\nsimilarity index 100%\nrename from git-sh-setup.sh\nrename to nonbuiltin/sh-setup.sh\ndiff --git a/shell.c b/nonbuiltin/shell.c\nsimilarity index 100%\nrename from shell.c\nrename to nonbuiltin/shell.c\ndiff --git a/show-index.c b/nonbuiltin/show-index.c\nsimilarity index 100%\nrename from show-index.c\nrename to nonbuiltin/show-index.c\ndiff --git a/git-stash.sh b/nonbuiltin/stash.sh\nsimilarity index 100%\nrename from git-stash.sh\nrename to nonbuiltin/stash.sh\ndiff --git a/git-submodule.sh b/nonbuiltin/submodule.sh\nsimilarity index 100%\nrename from git-submodule.sh\nrename to nonbuiltin/submodule.sh\ndiff --git a/git-svn.perl b/nonbuiltin/svn.perl\nsimilarity index 100%\nrename from git-svn.perl\nrename to nonbuiltin/svn.perl\ndiff --git a/upload-pack.c b/nonbuiltin/upload-pack.c\nsimilarity index 100%\nrename from upload-pack.c\nrename to nonbuiltin/upload-pack.c\ndiff --git a/git-web--browse.sh b/nonbuiltin/web--browse.sh\nsimilarity index 100%\nrename from git-web--browse.sh\nrename to nonbuiltin/web--browse.sh\n-- \n1.7.4.1\n"},{"id":"161510","messageId":"20110218055849.GK15643@elie","threadId":"26454","inReplyTo":"20110218041840.GB12348@sigill.intra.peff.net","subject":"Re: [PATCH 1/3] Move libgit.a sources into a libgit/ subdirectory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T05:58:49Z","receivedAt":"2011-02-18T05:58:49Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Jeff King wrote:\n\n> I wonder if there should perhaps be lib/, with all of the libgit.a\n> sources in it, and then lib/block-sha1, lib/ppc, lib/compat, etc. Those\n> things do end up inside libgit.a, don't they?\n\nHmph.  Let's see:\n\n - our xdiff changes ought to move upstream so other projects can\n   use them.  That is, xdiff ought to be installable as a shared\n   library.  So maybe that can stay out of libgit/.\n\n - block-sha1/ and ppc/ are just alternatives to openssl sha1, which\n   can be installed as a system library.  Maybe keeping block-sha1\n   out of libgit/ would provide an incentive to make block-sha1 usable\n   as a system library for other projects to try out, too.\n\n - most of compat/ is needed if Windows and old Unixen are to be able\n   to build libgit/.  So it probably should be part of libgit.\n\n - compat/bswap.h is needed for libgit.\n\n - compat/strlcpy.c is part of libbsd, so if such dependencies are ok\n   it could stay out.\n\nI really didn't want too many extra levels of hierarchy, so except for\nbswap.h I think this is okay for until libgit grows a Makefile.  I\nmight be overlooking some glibc-only functions, though.\n"},{"id":"161523","messageId":"20110218092518.GB30648@elie","threadId":"26454","inReplyTo":"AANLkTik8wUrUnjTiUxUZbg3paaQEc7UERQ6J6jUzA2u5@mail.gmail.com","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T09:25:18Z","receivedAt":"2011-02-18T09:25:18Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Nguyen Thai Ngoc Duy wrote:\n> 2011/2/18 Jonathan Nieder <jrnieder@gmail.com>:\n\n>> Here's a variation on the theme that just moves source and .o files\n>> (leaving questions about how to cope with breaking muscle memory for\n>> the resulting executables for later).  What do you think?\n>\n> External commands are now more visible. Nice.\n\nThanks again for both of your help.  I've put up an updated series at\n\n git://repo.or.cz/git/jrn.git flatten-source\n\nChanges since the series sent to the list:\n\n - put headers in libgit/ with the source files.  I don't\n   know what I was thinking before.\n\n - renamed nonbuiltin/ to commands/.  Names like\n   commands/add--interactive.perl even seem to make a kind of sense.\n\n - moved the http support mini-library to http/.\n\n - renamed git_remote_helpers to python/, though I'm not very happy\n   about that.\n\nThis is all very off-the-cuff.  I'd be happy for others to pick this\nup and remold it to their taste (after all, I'm too used to the\ncurrent layout to remember what matters).  It doesn't feel cooked yet.\n"},{"id":"161533","messageId":"20110218110810.GC7262@sigill.intra.peff.net","threadId":"26454","inReplyTo":"20110218092518.GB30648@elie","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2011-02-18T11:08:10Z","receivedAt":"2011-02-18T11:08:10Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Feb 18, 2011 at 03:25:18AM -0600, Jonathan Nieder wrote:\n\n> Thanks again for both of your help.  I've put up an updated series at\n> \n>  git://repo.or.cz/git/jrn.git flatten-source\n\ns/flatten/un&/\n\n> Changes since the series sent to the list:\n> \n>  - put headers in libgit/ with the source files.  I don't\n>    know what I was thinking before.\n\nThat is much nicer, I think.\n\n>  - renamed nonbuiltin/ to commands/.  Names like\n>    commands/add--interactive.perl even seem to make a kind of sense.\n\nDefinitely a better name.\n\n>  - moved the http support mini-library to http/.\n\nSeems like a weird one-off to me, as it only has two files.\n\n>  - renamed git_remote_helpers to python/, though I'm not very happy\n>    about that.\n\nI think this has been discussed a couple of times, and there was some\nconfusion about what the directory means. It is \"this is a python\nlibrary called git_remote_helpers\". It is not \"this is generic python\ncode for git\", nor is it \"this is generic remote helper code\". So I\nthink python/git_remote_helpers would probably be a more appropriate\nname in case we ever grow more python code.\n\n> This is all very off-the-cuff.  I'd be happy for others to pick this\n> up and remold it to their taste (after all, I'm too used to the\n> current layout to remember what matters).  It doesn't feel cooked yet.\n\nTwo overall comments that are vague and you can feel free to ignore:\n\n  1. I was one of the initial complainers of a source reorganization.\n     But my complaint was mainly \"let's only do it if there is some real\n     benefit\". Unlike simply shoving everything most of what's in the\n     top-level into a src/ directory, I think this is shaping up to be a\n     real reorganization, and the structure is easier to look at.\n\n  2. I found it most instructive to actually checkout the result and\n     look at the organization from a new user perspective. Here are my\n     impressions:\n\n       - There are a still a lot of directories. I wonder if we should\n         be going deeper. Like commands/builtin. Or lib/*.\n\n       - Some names seem funny. Like \"gitk-git\", which really should\n         just be \"gitk\". But I think that is a limitation of the subtree\n         merge. Maybe it's time for us to eat our own submodules\n         dogfood? :)\n\n       - Before build, \"ls | wc -l\" reports 35 entries. Afterwards, it\n         reports 213, and any structure you uncovered in reorganization\n         is lost. Maybe that doesn't matter, since the clean tree is\n         what people will see first when they are getting their\n         bearings. Or maybe not, since maybe they build first, then\n         hack. I dunno. I'm not sure what the solution is. There are\n         some obvious things, like throwing the test-* built executables\n         into test-programs (which will require some magic in\n         test-lib.sh to find them). Maybe git-* should stay in commands.\n         I dunno.\n\n-Peff\n"},{"id":"161535","messageId":"20110218123306.GA1428@elie","threadId":"26454","inReplyTo":"20110218110810.GC7262@sigill.intra.peff.net","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-18T12:33:07Z","receivedAt":"2011-02-18T12:33:07Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Jeff King wrote:\n> On Fri, Feb 18, 2011 at 03:25:18AM -0600, Jonathan Nieder wrote:\n\n>>  - moved the http support mini-library to http/.\n>\n> Seems like a weird one-off to me, as it only has two files.\n\nThat was just to get the files out of the toplevel.  I suspect the\nreason they are not part of libgit is to isolate the expat and curl\nlinkage.\n\nHmm, maybe an http/README explaining that would be nice.\n\n> So I\n> think python/git_remote_helpers would probably be a more appropriate\n> name in case we ever grow more python code.\n\nGood idea.  So the layout would be:\n\n python/\n\tMakefile\n\tgit_remote_helpers/\n\t\t...\n\n>        - There are a still a lot of directories. I wonder if we should\n>          be going deeper. Like commands/builtin. Or lib/*.\n\nFor reference:\n\n Documentation/\n block-sha1/\tfast, portable sha1 routine\n builtin/   \tbuilt-in (busybox style) commands\n commands/  \tstand-alone commands\n compat/    \tcompatibility replacements, platform-specific code\n contrib/   \tcontributed software\n gitk-git/  \tgitk\n gitweb/    \tweb interface\n git-gui/   \tgui\n http/      \tcode for use in HTTP support commands (wraps curl and expat)\n libgit/    \tcode for use in multiple commands\n perl/      \tGit.pm\n ppc/       \tfast sha1 routine in powerpc assembler\n python/    \tpython-fastimport + a remote-helper protocol helper\n scripts/   \tbuild scripts\n t/         \ttests\n templates/ \trepository skeleton\n test-programs/\tsample programs to exercise libgit, vcs-svn, and the sha1 lib\n xdiff/     \tdiff generator\n vcs-svn/   \tsvn interop\n\nTo give an extreme example :), this could be pruned to\n\n Documentation/\n commands/\n contrib/\n libgit/\n scripts/\n templates/\n testsuite/\n xdiff/\n\nby\n\n - not distinguishing builtins from non-builtins by filename\n - dropping gitk, git gui, and gitweb from the tree\n - moving test programs into the testsuite\n - moving sha1 implementations and compatibility code under libgit\n - including http support files in libgit/ even though they are not\n   part of libgit.a\n - moving perl and python libraries under libgit\n \n>        - Some names seem funny. Like \"gitk-git\", which really should\n>          just be \"gitk\".\n\nI think it was originally to make the transition from file to\ndirectory smoother.\n\n>                          But I think that is a limitation of the subtree\n>          merge.\n\nShould work fine, no?  Since / in common ancestor matches gitk/ in\nHEAD, that would be the detected shift.  (Caveat: I haven't tried it.)\n\n>        - Before build, \"ls | wc -l\" reports 35 entries. Afterwards, it\n>          reports 213, and any structure you uncovered in reorganization\n>          is lost.\n\nI think the best way to fix this is to provide support[1] for\n\n make O=build/\n\nfor those who want to maintain a clean source tree.\n\nThanks for some good ideas.\nJonathan\n\n[1] There's a skeleton of such support here:\nhttp://thread.gmane.org/gmane.comp.version-control.git/165720/focus=165850\nI don't think I'm the right one to take it further, though, since I\ndon't really like to use \"make O=elsewhere\".\n"},{"id":"161536","messageId":"AANLkTikj_JsxZ2p1uGyNxhTqznrTow2YyFEBvggTzFqV@mail.gmail.com","threadId":"26454","inReplyTo":"20110218092518.GB30648@elie","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2011-02-18T12:33:27Z","receivedAt":"2011-02-18T12:33:27Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Fri, Feb 18, 2011 at 4:25 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n> Changes since the series sent to the list:\n> ...\n>  - renamed nonbuiltin/ to commands/.  Names like\n>   commands/add--interactive.perl even seem to make a kind of sense.\n\nI suggest cmds/ to avoid tab-completion conflict with compat.\n\n>  - moved the http support mini-library to http/.\n\nMove them to commands/ as well?\n\n>  - renamed git_remote_helpers to python/, though I'm not very happy\n>   about that.\n\nIt don't like having \"perl\" and \"python\" directories (makes me thing\nwhat if another language appears). If they are just bindings (python\ndir may not be), how about \"bindings\" directory and throw them all\nflat in there?\n\n> This is all very off-the-cuff.  I'd be happy for others to pick this\n> up and remold it to their taste (after all, I'm too used to the\n> current layout to remember what matters).  It doesn't feel cooked yet.\n\nA few more things:\n\n - I like the fact that you leave only git.c in topdir. Straight entry\npoint for newcomers.\n - On the same topic of newcomers, should we pull\nDocumentation/technical out to topdir? A symlink is OK.\n - test-programs should be still in t/ though. I'm not an advocate for\ndeep layout, but it makes sense to me to keep test programs close to\ntest scripts.\n - perhaps we can merge block-sha1 and ppc into one? We can rename\nppc/sha1.* to sha1/ppc-sha1.*\n - I agree with Jeff that generated files should stay in the same\nplace with source files. Although I tend to use \"git ls\", untracked\nfiles do not bother me much ;-)\n-- \nDuy\n"},{"id":"161558","messageId":"7vei75p3zr.fsf@alter.siamese.dyndns.org","threadId":"26454","inReplyTo":"20110218092518.GB30648@elie","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-02-18T18:55:04Z","receivedAt":"2011-02-18T18:55:04Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Nieder <jrnieder@gmail.com> writes:\n\n> Thanks again for both of your help.  I've put up an updated series at\n>\n>  git://repo.or.cz/git/jrn.git flatten-source\n\nHuh?  Did you mean deepen or unflatten?\n\n> Changes since the series sent to the list:\n>\n>  - put headers in libgit/ with the source files.  I don't\n>    know what I was thinking before.\n\nNicer; I liked Jeff's \"lib/\" even better, though.\n\n>  - renamed nonbuiltin/ to commands/.  Names like\n>    commands/add--interactive.perl even seem to make a kind of sense.\n\nYes. \"nonbuiltin/\" made me stop reading the patches ;-).\n\n>  - moved the http support mini-library to http/.\n\nI don't understand the motivation behind this---wouldn't it belong to\n\"libgit/\" and if not why not?\n\n>  - renamed git_remote_helpers to python/, though I'm not very happy\n>    about that.\n\nI am not fond of naming a directory after a language _unless_ the contents\nof the directory is _all_ about laying the foundation of something else\nthat happens to be implemented in that language.  Existing \"perl/\" is all\nabout providing the Git.pm module to be used by Perl scripts that live\noutside the directory and is a very good example of naming the directory\nafter the language.  Does the contents of the new \"python/\" directory\nsatisfy that criteria?  If so, then it is fine.  If we plan to add more\nremote-helpers and if we plan to allow these helpers written in other\nlanguages, you might need to resurrect a separate \"remote-helpers/\"\ndirectory, move some parts of the files you placed in \"python/\" that are\nnot \"foundations for talking to git from Python\" but are about \"being a\nremote-helper\" to a subdirectory of it, so that new helper implementations\nwritten in other languages can live next to that subdirectory.\n\nFor exactly the same reason \"scripts/\" is a name I am not entirely happy\nabout in your tree.  \"test-programs/\" is a very good name, but \"scripts/\"\nonly tells us that the contents _happen to be_ done as scripts, and does\nnot tell us _what they are for_; perhaps \"build-helpers/\" might be more\nunderstandable.\n\nThanks.\n"},{"id":"161569","messageId":"4D5F0A7C.1080507@gmail.com","threadId":"26454","inReplyTo":"20110218092518.GB30648@elie","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Piotr Krukowiecki","fromEmail":"piotr.krukowiecki@gmail.com","sentAt":"2011-02-19T00:10:36Z","receivedAt":"2011-02-19T00:10:36Z","isPatch":true,"sender":{"key":"piotr.krukowiecki@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3259959?v=4"},"body":"W dniu 18.02.2011 10:25, Jonathan Nieder pisze:\n> Thanks again for both of your help.  I've put up an updated series at\n> \n>  git://repo.or.cz/git/jrn.git flatten-source\n\nThanks, I like the idea of cleaning the working tree.\n\nI'm not really happy with current layout. In general it is hard\nto find anything. Usually I can do \"grep term category\". In this case\nit's not possible because there are no categories. Sources, tests, \nbuild scripts, objects, user and tech docs are all mixed with each other\nand placed in (almost) random locations.\n\n\nMy suggestions - put each category in their own dir/name space:\n\n- sources - developer related files you can hack \n\n- technical/developer documentation like format descriptions, \n  coding guidelines etc.\n\n- end user documentation like command documentation, howtos, faqs etc\n\n- build result - objects, final binaries, generated documentation etc \n  The advantage besides unclutterting is possibility to have sources on\n  read-only medium.\n\n- test sources, probably with test scripts\n\n- build scripts where possible, for example cat-texi.perl,\n  install-doc-quick.sh etc\n\n- leave important documentation in top level: \n  * \"readme\" - introduction/index of repository \n  * \"install\" - installation instructions,\n  * \"news\" - what's new in this release\n  * license etc\n\nThe categories may be split into more subdirs if needed.\nSome other top directories are of course also needed.\n\n\n> Changes since the series sent to the list:\n> \n>  - put headers in libgit/ with the source files.  I don't\n>    know what I was thinking before.\n\nI'd either keep all headers with sources, or put all headers in a separate\ndirectory structure.\n\nAs for other changes in jrn.git:\n\n- no need for git.c in top dir - if one wants to hack git then git.c\n  is not enough, and the other people don't need it.\n\n- using links is not portable, not all file systems support them\n  (the RelNotes link)\n\n\nJust my .02c\n\n-- \nPiotr Krukowiecki\n"},{"id":"161571","messageId":"7v39nkooem.fsf@alter.siamese.dyndns.org","threadId":"26454","inReplyTo":"4D5F0A7C.1080507@gmail.com","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-02-19T00:31:45Z","receivedAt":"2011-02-19T00:31:45Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Piotr Krukowiecki <piotr.krukowiecki@gmail.com> writes:\n\n> My suggestions - put each category in their own dir/name space:\n>\n> - sources - developer related files you can hack \n>\n> - technical/developer documentation like format descriptions, \n>   coding guidelines etc.\n>\n> - end user documentation like command documentation, howtos, faqs etc\n\nMild nak.  We are talking about a source tree; there is no end-user\ndocumentation.  Only the sources to it.\n\n> - build result - objects, final binaries, generated documentation etc \n>   The advantage besides unclutterting is possibility to have sources on\n>   read-only medium.\n\nThis is somewhere between a meh to mild nak.  \"git grep\" knows to ignore\nuntracked cruft, so this does not help nor hinder \"finding\" at all. Even\nthough I personally tend to value seeing frotz.o sitting immediately next\nto frotz.c, some people may value read-only source tree more than that.\n"},{"id":"161574","messageId":"20110219005030.GB27316@elie","threadId":"26454","inReplyTo":"7v39nkooem.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-19T00:50:30Z","receivedAt":"2011-02-19T00:50:30Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Junio C Hamano wrote:\n> Piotr Krukowiecki <piotr.krukowiecki@gmail.com> writes:\n\n>> - build result - objects, final binaries, generated documentation etc \n>>   The advantage besides unclutterting is possibility to have sources on\n>>   read-only medium.\n>\n> This is somewhere between a meh to mild nak.  \"git grep\" knows to ignore\n> untracked cruft, so this does not help nor hinder \"finding\" at all. Even\n> though I personally tend to value seeing frotz.o sitting immediately next\n> to frotz.c, some people may value read-only source tree more than that.\n\nAt the risk of becoming repetitive: it is quite possible for make to\ntake an O=elsewhere/ parameter to support both types.\n\nI am also in the camp of preferring to see frotz.o next to frotz.c.\nAfter editing frotz.c, I can do \"make frotz.o\" to make sure it still\ncompiles.\n"},{"id":"161595","messageId":"AANLkTikb0W-yLihPtvm5LDUKgxgRg_a5Rsq7pjnpZLCt@mail.gmail.com","threadId":"26454","inReplyTo":"7v39nkooem.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Piotr Krukowiecki","fromEmail":"piotr.krukowiecki@gmail.com","sentAt":"2011-02-19T09:24:53Z","receivedAt":"2011-02-19T09:24:53Z","isPatch":true,"sender":{"key":"piotr.krukowiecki@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3259959?v=4"},"body":"On Sat, Feb 19, 2011 at 1:31 AM, Junio C Hamano <gitster@pobox.com> wrote:\n> Piotr Krukowiecki <piotr.krukowiecki@gmail.com> writes:\n>\n>> My suggestions - put each category in their own dir/name space:\n>>\n>> - sources - developer related files you can hack\n>>\n>> - technical/developer documentation like format descriptions,\n>>   coding guidelines etc.\n>>\n>> - end user documentation like command documentation, howtos, faqs etc\n>\n> Mild nak.  We are talking about a source tree; there is no end-user\n> documentation.  Only the sources to it.\n\nThat's what I was talking about. Examples of what I consider \"end user docs\":\n\n   - git-add.txt, git-bisect.txt etc - probably for all commands in\ncommand-list.txt.\n     Not sure about porcelain vs plumbing, but since division is not\nclear I'd put\n     them all together.\n\n     Note that not everyone compiles docs into man pages - for example I don't\n     have needed tools on my laptop and it's not that fast too. I just\nhave to use\n     raw .txt files instead.\n\n   - config.txt, probably some of howto/*\n\n\nExamples of \"devel docs\": howto/maintain-git.txt, technical/*, CodingGuidelines\n\n\n>> - build result - objects, final binaries, generated documentation etc\n>>   The advantage besides unclutterting is possibility to have sources on\n>>   read-only medium.\n>\n> This is somewhere between a meh to mild nak.  \"git grep\" knows to ignore\n> untracked cruft, so this does not help nor hinder \"finding\" at all. Even\n\nIt requires me to use git-grep. I might be used to plain \"grep\". I\nmight not have\ngit installed yet. I might use some other tool for browsing/searching\nthe source.\n\nHaving \"cruft\" mixed with sources gives you restrictions without giving any\nadvantages (at least I don't see any - if you do please tell me) .\n\n\n-- \nPiotrek\n"},{"id":"161596","messageId":"4D5F8D1F.3000901@gmail.com","threadId":"26454","inReplyTo":"20110219005030.GB27316@elie","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Piotr Krukowiecki","fromEmail":"piotr.krukowiecki@gmail.com","sentAt":"2011-02-19T09:27:59Z","receivedAt":"2011-02-19T09:27:59Z","isPatch":true,"sender":{"key":"piotr.krukowiecki@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3259959?v=4"},"body":"W dniu 19.02.2011 01:50, Jonathan Nieder pisze:\n> At the risk of becoming repetitive: it is quite possible for make to\n> take an O=elsewhere/ parameter to support both types.\n\nI'm ok with O=elsewhere\n\n\n> I am also in the camp of preferring to see frotz.o next to frotz.c.\n> After editing frotz.c, I can do \"make frotz.o\" to make sure it still\n> compiles.\n\n\"make frotz.o\" has nothing to do with where the objects are generated, IMO.\n\nIs this the only reason you prefer having objects with sources? \n\n\n-- \nPiotr Krukowiecki\n"},{"id":"161597","messageId":"20110219094104.GA31980@elie","threadId":"26454","inReplyTo":"AANLkTikb0W-yLihPtvm5LDUKgxgRg_a5Rsq7pjnpZLCt@mail.gmail.com","subject":"Advertising the prebuilt htmldocs and manpages","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-19T09:41:04Z","receivedAt":"2011-02-19T09:41:04Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Piotr Krukowiecki wrote:\n> On Sat, Feb 19, 2011 at 1:31 AM, Junio C Hamano <gitster@pobox.com> wrote:\n\n>> We are talking about a source tree; there is no end-user\n>> documentation.  Only the sources to it.\n[...]\n>      Note that not everyone compiles docs into man pages - for example I don't\n>      have needed tools on my laptop and it's not that fast too. I just\n> have to use\n>      raw .txt files instead.\n\nThe INSTALL file explains:\n\n   Alternatively, pre-formatted documentation is available in\n   \"html\" and \"man\" branches of the git repository itself.  For\n   example, you could:\n[...]\n   There are also \"make quick-install-doc\", \"make quick-install-man\"\n   and \"make quick-install-html\" which install preformatted man pages\n   and html documentation.\n\nIt does not explain that http://www.kernel.org/pub/software/scm/git/\ncontains git-manpages-* and git-htmldocs-* tarballs for people who\ndo not have git yet, though.\n\nThe README file says:\n\n   Many Git online resources are accessible from http://git-scm.com/\n   including full documentation and Git related tools.\n\nMaybe this (especially quick-install-doc) can be made more\ndiscoverable somehow.\n"},{"id":"161603","messageId":"20110219111103.GA1841@elie","threadId":"26454","inReplyTo":"7vei75p3zr.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-19T11:11:03Z","receivedAt":"2011-02-19T11:11:03Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Junio C Hamano wrote:\n> Jonathan Nieder <jrnieder@gmail.com> writes:\n\n>>  git://repo.or.cz/git/jrn.git flatten-source\n>\n> Huh?  Did you mean deepen or unflatten?\n\nThe branch name was unflatten-source.  Sorry about that.\n\nI've pushed some more simple tweaks.\n\n - remove the \".sh\" suffix from most build helpers\n - rename scripts/ to build-helpers/.  Much nicer.\n - rename libgit/ to lib/.  The shorter pathnames this allows are much\n   nicer.\n - move compat/ under the lib/ umbrella\n - merge builtins/ with commands/.  It never was clear to me why\n   making a command builtin should require changing its filename.\n - rename gitk-git/ to gitk/\n - rename t/ to tests/, to get a sense for what that feels like\n\nSome remaining details:\n\n>>  - moved the http support mini-library to http/.\n>\n> I don't understand the motivation behind this---wouldn't it belong to\n> \"libgit/\" and if not why not?\n\nThey are not linked into the main git binary, to avoid a dependency on\nlibcurl and libexpat.  So it might (or might not) be useful to keep\nthem in a subdir to avoid tempting people to use those functions when\nnot appropriate.\n\nlib/http/, with a README explaining their special status?\n\n>>  - renamed git_remote_helpers to python/, though I'm not very happy\n>>    about that.\n>\n> I am not fond of naming a directory after a language _unless_ the contents\n> of the directory is _all_ about laying the foundation of something else\n> that happens to be implemented in that language.\n\n\"git remote-testgit\" uses it for\n - basic utility functions (die, debug, warn)\n - accessing a git repository and listing its branches (GitRepo)\n - running git fast-export (GitExporter) and keeping a marks file\n   between runs\n - running git fast-import (GitImporter) and keeping a marks file\n   between runs\n - maintaining a mirror of a non-local git repo (NonLocalGit) to\n   be able to run fast-export from it\n\nI am guessing a longer term plan is for it to acquire subpackages with\nanalagous functionality accessing other version control systems.  It\nwould be tempting to do\n\n other-vcs/\n\tbazaar/\n\tgit/\n\tmercurial/\n\tsubversion/\n\n(intermixing C and Python code) but that doesn't work because it does\nnot match the structure of the git_remote_helpers package.\n\nSide note: I am not sure I like the git_remote_helpers name.  Wouldn't\na good goal be for these modules to be usable by other VCSes'\nimport/export scripts, too?\n\nThanks for the comments.\n"},{"id":"161718","messageId":"AANLkTikK+htiiZXMBtKjuy9ZpEEoVi-BG+c5_HzLdFUP@mail.gmail.com","threadId":"26454","inReplyTo":"20110219111103.GA1841@elie","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2011-02-19T23:05:39Z","receivedAt":"2011-02-19T23:05:39Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"Heya,\n\nOn Sat, Feb 19, 2011 at 12:11, Jonathan Nieder <jrnieder@gmail.com> wrote:\n> Side note: I am not sure I like the git_remote_helpers name.  Wouldn't\n> a good goal be for these modules to be usable by other VCSes'\n> import/export scripts, too?\n\nThe reusable code (the fast-import library) is already living in it's\nown library on pypi, I don't think there's much other code that is\nreusable accross VCSes?\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"161719","messageId":"20110219231551.GC8884@elie","threadId":"26454","inReplyTo":"AANLkTikK+htiiZXMBtKjuy9ZpEEoVi-BG+c5_HzLdFUP@mail.gmail.com","subject":"The git_remote_helpers package (Re: [RFC/PATCH 0/3] Thinning the git toplevel directory)","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-19T23:15:52Z","receivedAt":"2011-02-19T23:15:52Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Sverre Rabbelier wrote:\n> On Sat, Feb 19, 2011 at 12:11, Jonathan Nieder <jrnieder@gmail.com> wrote:\n\n>> Side note: I am not sure I like the git_remote_helpers name.  Wouldn't\n>> a good goal be for these modules to be usable by other VCSes'\n>> import/export scripts, too?\n>\n> The reusable code (the fast-import library) is already living in it's\n> own library on pypi, I don't think there's much other code that is\n> reusable accross VCSes?\n\nSorry for the thinko.  I see your point.\n\nMy thinking before was that if we have packages like\n\n git_remote_helpers.git\n git_remote_helpers.hg\n\nto take care of such things as cloning remote repos in preparation fro\nrunning fast-export from them, then other VCSes (e.g., bazaar) might\nwant to use these packages in their foreign VCS support, too.  But\nthat is probably too theoretical and it is always easy to expose what\nothers actually need when the time comes.\n\nThanks,\nJonathan\n"},{"id":"161737","messageId":"7v4o7zmc3e.fsf@alter.siamese.dyndns.org","threadId":"26454","inReplyTo":"20110219094104.GA31980@elie","subject":"Re: Advertising the prebuilt htmldocs and manpages","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-02-20T06:52:53Z","receivedAt":"2011-02-20T06:52:53Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Nieder <jrnieder@gmail.com> writes:\n\n> The INSTALL file explains:\n> ...\n> The README file says:\n> ...\n> Maybe this (especially quick-install-doc) can be made more\n> discoverable somehow.\n\nIf all-caps INSTALL and README are not discoverable, there is not much\nhope that anything can be made more discoverable, is there?\n"},{"id":"161740","messageId":"20110220094032.GA9340@elie","threadId":"26454","inReplyTo":"7v4o7zmc3e.fsf@alter.siamese.dyndns.org","subject":"Re: Advertising the prebuilt htmldocs and manpages","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-20T09:40:32Z","receivedAt":"2011-02-20T09:40:32Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Junio C Hamano wrote:\n\n> If all-caps INSTALL and README are not discoverable, there is not much\n> hope that anything can be made more discoverable, is there?\n\nI dunno.  Something like the following could work, but I don't think\nit's worth it.\n\ndiff --git a/Documentation/Makefile b/Documentation/Makefile\nindex 36989b7..9217c05 100644\n--- a/Documentation/Makefile\n+++ b/Documentation/Makefile\n@@ -161,7 +161,22 @@ html: $(DOC_HTML)\n \n $(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7): asciidoc.conf\n \n-man: man1 man5 man7\n+man_toolchain_test:\n+\t@$(ASCIIDOC) --version >/dev/null && \\\n+\txmlto --version >/dev/null || \\\n+\t{ \\\n+\t\tprintf '%s\\n' \\\n+\t\t'' \\\n+\t\t'Building the manpages requires asciidoc and xmlto.' \\\n+\t\t'Alternatively, pre-formatted documentation is' \\\n+\t\t'available in the \"man\" branch of the git repository itself.' \\\n+\t\t'See the INSTALL file for details.' \\\n+\t\t'' && \\\n+\t\tfalse; \\\n+\t}\n+.PHONY: man_toolchain_chest\n+\n+man: man_toolchain_test man1 man5 man7\n man1: $(DOC_MAN1)\n man5: $(DOC_MAN5)\n man7: $(DOC_MAN7)\n"},{"id":"161889","messageId":"20110222155637.GC27178@sigill.intra.peff.net","threadId":"26454","inReplyTo":"20110219111103.GA1841@elie","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2011-02-22T15:56:37Z","receivedAt":"2011-02-22T15:56:37Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Sat, Feb 19, 2011 at 05:11:03AM -0600, Jonathan Nieder wrote:\n\n>  - merge builtins/ with commands/.  It never was clear to me why\n>    making a command builtin should require changing its filename.\n\nThis may be a bit too radical, but maybe the Makefile should use this\nstructure to save maintenance effort. In other words, is there any\nreason not to just have:\n\n  BUILTIN_SOURCES = $(wildcard builtin/*.c)\n  BUILTIN_OBJS = $(patsubst builtin/%.c, builtin/%.o, $(BUILTIN_SOURCES))\n\nand similar for LIB_OBJS and LIB_H?\n\nIt is one less thing to need to do when writing new code, and one less\nthing to have silly textual conflicts on. It probably doesn't matter\nthat much, though; we don't actually add new files or commands all that\noften.\n\nSpeaking of Makefiles, one downside to all of this directory\nsegmentation is that you can't run \"make\" from the subdirectories. I\ndon't know how much we care. Certainly we could put a dummy Makefile\nin each subdir that just goes to the toplevel and runs make.\n\n-Peff\n"},{"id":"161910","messageId":"7v4o7vdfz2.fsf@alter.siamese.dyndns.org","threadId":"26454","inReplyTo":"20110222155637.GC27178@sigill.intra.peff.net","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-02-22T19:30:41Z","receivedAt":"2011-02-22T19:30:41Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> On Sat, Feb 19, 2011 at 05:11:03AM -0600, Jonathan Nieder wrote:\n>\n>>  - merge builtins/ with commands/.  It never was clear to me why\n>>    making a command builtin should require changing its filename.\n>\n> This may be a bit too radical, but maybe the Makefile should use this\n> structure to save maintenance effort. In other words, is there any\n> reason not to just have:\n>\n>   BUILTIN_SOURCES = $(wildcard builtin/*.c)\n>   BUILTIN_OBJS = $(patsubst builtin/%.c, builtin/%.o, $(BUILTIN_SOURCES))\n>\n> and similar for LIB_OBJS and LIB_H?\n\nThe developers would have to be careful not to put a throw-away test\nprograms written in C (especially the ones that has its own \"main()\") in\nbuiltin/ (or lib/) directories if we go that route.  This obviously cuts\nboth ways; it sometimes is handy.\n\n> It is one less thing to need to do when writing new code, and one less\n> thing to have silly textual conflicts on. It probably doesn't matter\n> that much, though; we don't actually add new files or commands all that\n> often.\n\nYeah, you would need to add an entry to the builtin command list yourself\nanyway, until we also autogenerate it, which I doubt will ever happen nor\nis necessarily a good idea.\n\n> Speaking of Makefiles, one downside to all of this directory\n> segmentation is that you can't run \"make\" from the subdirectories.\n\nI had an impression that \"make -C lib/\" would be one of the goals, iow,\nwhen we split the directory structure, the next step would be to split the\ntop-level Makefile so that each directory is covered by its own Makefile,\njust like Documentation/ is already usable that way.\n\nNot that libgit.a in its current shape is very useful outside the context\nof the git.git proper, though.\n"},{"id":"161911","messageId":"AANLkTint8HXdoHJqEozASemU5g2gssPbGPefQWqd_4hu@mail.gmail.com","threadId":"26454","inReplyTo":"7v4o7vdfz2.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2011-02-22T19:32:20Z","receivedAt":"2011-02-22T19:32:20Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"Heya,\n\nOn Tue, Feb 22, 2011 at 20:30, Junio C Hamano <gitster@pobox.com> wrote:\n> Not that libgit.a in its current shape is very useful outside the context\n> of the git.git proper, though.\n\nWhich is where libgit2 comes in right? ;)\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"162004","messageId":"20110223045143.GA11846@sigill.intra.peff.net","threadId":"26454","inReplyTo":"7v4o7vdfz2.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2011-02-23T04:51:43Z","receivedAt":"2011-02-23T04:51:43Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Feb 22, 2011 at 11:30:41AM -0800, Junio C Hamano wrote:\n\n> > It is one less thing to need to do when writing new code, and one less\n> > thing to have silly textual conflicts on. It probably doesn't matter\n> > that much, though; we don't actually add new files or commands all that\n> > often.\n> \n> Yeah, you would need to add an entry to the builtin command list yourself\n> anyway, until we also autogenerate it, which I doubt will ever happen nor\n> is necessarily a good idea.\n\nYou also have to add the declaration to builtin.h. It is kind of a\nhassle to have to add it in three places (Makefile, command list, and\ndeclaration) in addition to the actual code. But again, it's not like we\ndo this that often.\n\n> > Speaking of Makefiles, one downside to all of this directory\n> > segmentation is that you can't run \"make\" from the subdirectories.\n> \n> I had an impression that \"make -C lib/\" would be one of the goals, iow,\n> when we split the directory structure, the next step would be to split the\n> top-level Makefile so that each directory is covered by its own Makefile,\n> just like Documentation/ is already usable that way.\n\nUgh. I am not thrilled at the prospect of more recursive make. As it is\nnow, we have already dealt with bugs from the little bit of recursion\nthere is (e.g., propagating information between Makefiles) and weird\nheisenbugs (I still occasionally get build failures on recursing into\nthe perl subdir during a parallel make). And then of course it's easy to\nmisuse; running \"make\" in t/ is not necessarily testing the latest\nversion. In my experience recursive make always comes with this sort of\nflakiness.\n\nRight now the actual C build process is entirely in the top-level\nMakefile. I really like that I can trust it to handle dependencies\ncorrectly, because it means I can bisect without resorting to \"make\nclean\" for each step.\n\n-Peff\n"},{"id":"162008","messageId":"20110223082929.GB30485@elie","threadId":"26454","inReplyTo":"20110223045143.GA11846@sigill.intra.peff.net","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-23T08:29:29Z","receivedAt":"2011-02-23T08:29:29Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Jeff King wrote:\n> On Tue, Feb 22, 2011 at 11:30:41AM -0800, Junio C Hamano wrote:\n\n>> I had an impression that \"make -C lib/\" would be one of the goals, iow,\n>> when we split the directory structure, the next step would be to split the\n>> top-level Makefile so that each directory is covered by its own Makefile,\n>> just like Documentation/ is already usable that way.\n>\n> Ugh.\n\nTwo half-baked ideas:\n\n A. top-level Makefile generates GIT-BUILD-OPTIONS and does not do\n    any work itself --- it just calls \"make\" in subdirectories to\n    do the real work.  Other Makefiles slurp in\n\n     - GIT-BUILD-OPTIONS, to get the build options\n     - build-helpers/Makefile, for some pattern rules describing\n       how to build things\n\n    Benefit:\n\n    GIT-BUILD-OPTIONS becomes the normal way to pass build options,\n    so it is well tested and robust.\n\n    Downsides:\n\n    If the project grows too much, all those \"make\" calls start to\n    take time.  It is possible for parallel \"make\" invocations to\n    trample on each other's work if they are not well coordinated.\n\n B. top-level Makefile slurps in Makefiles from subdirs.  Other\n    Makefiles would\n\n     - check if basic rules (pattern rules and GIT-BUILD-OPTIONS\n       generation) have been slurped in yet, and if not, include\n       them;\n     - check if build options have been slurped in yet, and\n       if not, include GIT-BUILD-OPTIONS;\n     - keep careful track of what directory \"make\" was run from; [*]\n     - define variables listing targets to be built in this\n       directory and rules describing how to build them.\n\n    Benefit:\n\n    GIT-BUILD-OPTIONS becomes the normal [...].  Single \"make\"\n    process, fast and predictable.  \"make\" still works from\n    subdirectories.\n\n    Downside:\n\n    [*] is a little hazy and sounds hackish.\n\nI admit that I have some irrational excitement about a lib/ that could\neventually be built and used separately from git.  Mostly because I\nthink it could encourage people to make lib/ code comprehensible and\nhard to misuse and to keep commands/ code minimal.\n\n>           I really like that I can trust it to handle dependencies\n> correctly, because it means I can bisect without resorting to \"make\n> clean\" for each step.\n\nCross-directory dependencies have to be declared just as carefully as\ndependencies within a directory.  I wonder if there is any reason not\nto make \"make\" under t/ imply \"make -C .. all\".\n\nSleepily,\nJonathan\n"},{"id":"162010","messageId":"20110223084329.GA10738@sigill.intra.peff.net","threadId":"26454","inReplyTo":"20110223082929.GB30485@elie","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2011-02-23T08:43:29Z","receivedAt":"2011-02-23T08:43:29Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Feb 23, 2011 at 02:29:29AM -0600, Jonathan Nieder wrote:\n\n>     If the project grows too much, all those \"make\" calls start to\n>     take time.  It is possible for parallel \"make\" invocations to\n>     trample on each other's work if they are not well coordinated.\n\nAren't there cases where no amount of coordination will help? E.g.,\nlet's say I have two subdirs, lib/ and cmds/. From the top-level I do\n\"make -j\". This invokes two recursive sub-makes, one per directory. The\nmake in cmds/ sees that we haven't built stuff in lib/ yet. So it\ninvokes a recursive make in lib/. Now we have two parallel makes running\nin lib/, stomping on each other. The problem is that no single make was\nallowed to see the whole dependency tree.\n\nI know GNU make does have some magic for communicating between recursive\nmakes. Does it handle this situation?\n\nYou can fix this with a rule like \"only invoke recursive makes on\ndirectories _below_ you, never above or to the side\". But then you can't\nrun \"make\" from inside cmds/.\n\nYou could have a dependency in the top-level that says recursing into\ncmds/ depends on having finished recursing into libs/. But that's not\nstrictly correct. You want to be working on part of what's in cmds/\n(building .o files) in parallel with what's going on in lib/, and then\nwait on lib/ only for the linking portion.\n\nThose are all things that are trivial to handle in a single Makefile.\n\n>  B. top-level Makefile slurps in Makefiles from subdirs.  Other\n>     Makefiles would\n\nI like this better, but...\n\n>      - keep careful track of what directory \"make\" was run from; [*]\n> [...]\n>     [*] is a little hazy and sounds hackish.\n\nYeah, you have to be careful with paths. I think a more sane way would\nbe a single top-level Makefile that either contains everything, or\nsources tidbits from subdirectories. But in either case, assumes it's\nrunning from the top-level.\n\nA dummy Makefile in each subdir that cd's to the toplevel and runs a\nspecific target. So from the top-level, \"make\" would build everything,\n\"make lib\" would build stuff in the lib directory, and the Makefile in\nlib/ would just do \"cd .. && make lib\".\n\nIt's not perfect, but it's simple and predictable.\n\n-Peff\n"},{"id":"162013","messageId":"20110223095650.GE30485@elie","threadId":"26454","inReplyTo":"20110223084329.GA10738@sigill.intra.peff.net","subject":"Recursive make and variations on the theme","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-02-23T09:56:50Z","receivedAt":"2011-02-23T09:56:50Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Jeff King wrote:\n\n> The problem is that no single make was\n> allowed to see the whole dependency tree.\n>\n> I know GNU make does have some magic for communicating between recursive\n> makes. Does it handle this situation?\n>\n> You can fix this with a rule like \"only invoke recursive makes on\n> directories _below_ you, never above or to the side\". But then you can't\n> run \"make\" from inside cmds/.\n\nIn that story, commands/Makefile would make commands/built-in.a and\nvarious commands/foo.o.  The toplevel makefile would pass \"make -C\ncommands\" a long list of targets to build, presumably deduced from\n$(MAKECMDGOALS).  Not pleasant, I agree.\n\n>>      - keep careful track of what directory \"make\" was run from; [*]\n>> [...]\n>>     [*] is a little hazy and sounds hackish.\n>\n> Yeah, you have to be careful with paths.\n\nIt could be pretty simple by maintaining a $(prefix_) variable\nrepresenting the path from the cwd to the directory containing the\nmakefile.  Might try it out.\n\n> I think a more sane way would\n> be a single top-level Makefile that [...] contains everything\n\nThat sounds best to me in the short term, too.\n\n> A dummy Makefile in each subdir that cd's to the toplevel and runs a\n> specific target. So from the top-level, \"make\" would build everything,\n> \"make lib\" would build stuff in the lib directory, and the Makefile in\n> lib/ would just do \"cd .. && make lib\".\n\nYes, reasonable.\n\nCiao,\nJonathan\n"},{"id":"162032","messageId":"7vlj16aeih.fsf@alter.siamese.dyndns.org","threadId":"26454","inReplyTo":"20110223045143.GA11846@sigill.intra.peff.net","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-02-23T16:42:46Z","receivedAt":"2011-02-23T16:42:46Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> On Tue, Feb 22, 2011 at 11:30:41AM -0800, Junio C Hamano wrote:\n>\n>> > Speaking of Makefiles, one downside to all of this directory\n>> > segmentation is that you can't run \"make\" from the subdirectories.\n>> \n>> I had an impression that \"make -C lib/\" would be one of the goals, iow,\n>> when we split the directory structure, the next step would be to split the\n>> top-level Makefile so that each directory is covered by its own Makefile,\n>> just like Documentation/ is already usable that way.\n>\n> Ugh. I am not thrilled at the prospect of more recursive make.\n\nLikewise. Notice that I have consistently been unthrilled when people\nstarted talking about splitting the source code tree?\n"},{"id":"162036","messageId":"alpine.LFD.2.00.1102231213280.26358@xanadu.home","threadId":"26454","inReplyTo":"7vlj16aeih.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Nicolas Pitre","fromEmail":"nico@fluxnic.net","sentAt":"2011-02-23T17:18:06Z","receivedAt":"2011-02-23T17:18:06Z","isPatch":true,"sender":{"key":"nico@fluxnic.net","avatar":"https://avatars.githubusercontent.com/u/702790?v=4"},"body":"On Wed, 23 Feb 2011, Junio C Hamano wrote:\n\n> Jeff King <peff@peff.net> writes:\n> \n> > On Tue, Feb 22, 2011 at 11:30:41AM -0800, Junio C Hamano wrote:\n> >\n> >> > Speaking of Makefiles, one downside to all of this directory\n> >> > segmentation is that you can't run \"make\" from the subdirectories.\n> >> \n> >> I had an impression that \"make -C lib/\" would be one of the goals, iow,\n> >> when we split the directory structure, the next step would be to split the\n> >> top-level Makefile so that each directory is covered by its own Makefile,\n> >> just like Documentation/ is already usable that way.\n> >\n> > Ugh. I am not thrilled at the prospect of more recursive make.\n> \n> Likewise. Notice that I have consistently been unthrilled when people\n> started talking about splitting the source code tree?\n\nMaybe that would be wiser to consider an initial set of patches as those \nwhich were proposed to only do the simple file move first, then wait for \nthe dust to settle before doing more changes.  Doing too much in one go \nis inevitably going to bounce against the human tendency to resist any \nkind of change, good or bad.\n\n\nNicolas\n\n\n\n\n\n\n> --\n> To unsubscribe from this list: send the line \"unsubscribe git\" in\n> the body of a message to majordomo@vger.kernel.org\n> More majordomo info at  http://vger.kernel.org/majordomo-info.html\n> \n"},{"id":"162065","messageId":"1298502543.28664.19.camel@drew-northup.unet.maine.edu","threadId":"26454","inReplyTo":"alpine.LFD.2.00.1102231213280.26358@xanadu.home","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Drew Northup","fromEmail":"drew.northup@maine.edu","sentAt":"2011-02-23T23:09:02Z","receivedAt":"2011-02-23T23:09:02Z","isPatch":true,"sender":{"key":"drew.northup@maine.edu","avatar":"https://avatars.githubusercontent.com/u/18331571?v=4"},"body":"\nOn Wed, 2011-02-23 at 12:18 -0500, Nicolas Pitre wrote:\n> On Wed, 23 Feb 2011, Junio C Hamano wrote:\n> \n> > Jeff King <peff@peff.net> writes:\n> > \n> > > On Tue, Feb 22, 2011 at 11:30:41AM -0800, Junio C Hamano wrote:\n> > >\n> > >> > Speaking of Makefiles, one downside to all of this directory\n> > >> > segmentation is that you can't run \"make\" from the subdirectories.\n> > >> \n> > >> I had an impression that \"make -C lib/\" would be one of the goals, iow,\n> > >> when we split the directory structure, the next step would be to split the\n> > >> top-level Makefile so that each directory is covered by its own Makefile,\n> > >> just like Documentation/ is already usable that way.\n> > >\n> > > Ugh. I am not thrilled at the prospect of more recursive make.\n> > \n> > Likewise. Notice that I have consistently been unthrilled when people\n> > started talking about splitting the source code tree?\n> \n> Maybe that would be wiser to consider an initial set of patches as those \n> which were proposed to only do the simple file move first, then wait for \n> the dust to settle before doing more changes.  Doing too much in one go \n> is inevitably going to bounce against the human tendency to resist any \n> kind of change, good or bad.\n\n> Nicolas\n\nNicolas,\nThey are doing it this way because change is not the objective. A\npossible better way of managing the codebase is. Perhaps it isn't the\nright way to go--and we won't know that until we've explored all of the\nside-effects, advantages, disadvantages, etc.\n\nBesides, if we move anything around into a deeper directory structure we\nare inevitably going to have to deal with more recursive make problems.\nWe can't just commit to master a tree that has everything moved about\nand get around to dealing with the Makefiles later.\n\n-- \n-Drew Northup\n________________________________________________\n\"As opposed to vegetable or mineral error?\"\n-John Pescatore, SANS NewsBites Vol. 12 Num. 59\n"},{"id":"162084","messageId":"alpine.LFD.2.00.1102231908340.26358@xanadu.home","threadId":"26454","inReplyTo":"1298502543.28664.19.camel@drew-northup.unet.maine.edu","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Nicolas Pitre","fromEmail":"nico@fluxnic.net","sentAt":"2011-02-24T00:14:21Z","receivedAt":"2011-02-24T00:14:21Z","isPatch":true,"sender":{"key":"nico@fluxnic.net","avatar":"https://avatars.githubusercontent.com/u/702790?v=4"},"body":"On Wed, 23 Feb 2011, Drew Northup wrote:\n\n> \n> On Wed, 2011-02-23 at 12:18 -0500, Nicolas Pitre wrote:\n> > On Wed, 23 Feb 2011, Junio C Hamano wrote:\n> > \n> > > Jeff King <peff@peff.net> writes:\n> > > \n> > > > On Tue, Feb 22, 2011 at 11:30:41AM -0800, Junio C Hamano wrote:\n> > > >\n> > > >> > Speaking of Makefiles, one downside to all of this directory\n> > > >> > segmentation is that you can't run \"make\" from the subdirectories.\n> > > >> \n> > > >> I had an impression that \"make -C lib/\" would be one of the goals, iow,\n> > > >> when we split the directory structure, the next step would be to split the\n> > > >> top-level Makefile so that each directory is covered by its own Makefile,\n> > > >> just like Documentation/ is already usable that way.\n> > > >\n> > > > Ugh. I am not thrilled at the prospect of more recursive make.\n> > > \n> > > Likewise. Notice that I have consistently been unthrilled when people\n> > > started talking about splitting the source code tree?\n> > \n> > Maybe that would be wiser to consider an initial set of patches as those \n> > which were proposed to only do the simple file move first, then wait for \n> > the dust to settle before doing more changes.  Doing too much in one go \n> > is inevitably going to bounce against the human tendency to resist any \n> > kind of change, good or bad.\n> \n> > Nicolas\n> \n> Nicolas,\n> They are doing it this way because change is not the objective. A\n> possible better way of managing the codebase is.\n\nIncidentally I know that (guess whom this proposal came from initially).  ;-)\n\n> Perhaps it isn't the\n> right way to go--and we won't know that until we've explored all of the\n> side-effects, advantages, disadvantages, etc.\n> \n> Besides, if we move anything around into a deeper directory structure we\n> are inevitably going to have to deal with more recursive make problems.\n> We can't just commit to master a tree that has everything moved about\n> and get around to dealing with the Makefiles later.\n\nThe initial set of patches simply moved files into subdirectories and \nmade the corresponding renames within the Makefile.\n\nReorganizing the Makefile into a better Makefile or sub-makefiles can be \ndone subsequently.  That's my point.\n\n\nNicolas\n"},{"id":"162170","messageId":"1298567455.19041.39.camel@drew-northup.unet.maine.edu","threadId":"26454","inReplyTo":"alpine.LFD.2.00.1102231908340.26358@xanadu.home","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Drew Northup","fromEmail":"drew.northup@maine.edu","sentAt":"2011-02-24T17:10:55Z","receivedAt":"2011-02-24T17:10:55Z","isPatch":true,"sender":{"key":"drew.northup@maine.edu","avatar":"https://avatars.githubusercontent.com/u/18331571?v=4"},"body":"\nOn Wed, 2011-02-23 at 19:14 -0500, Nicolas Pitre wrote:\n> On Wed, 23 Feb 2011, Drew Northup wrote:\n> \n> > \n> > On Wed, 2011-02-23 at 12:18 -0500, Nicolas Pitre wrote:\n> > > On Wed, 23 Feb 2011, Junio C Hamano wrote:\n> > > \n> > > > Jeff King <peff@peff.net> writes:\n> > > > \n> > > > > On Tue, Feb 22, 2011 at 11:30:41AM -0800, Junio C Hamano wrote:\n> > > > >\n> > > > >> > Speaking of Makefiles, one downside to all of this directory\n> > > > >> > segmentation is that you can't run \"make\" from the subdirectories.\n> > > > >> \n> > > > >> I had an impression that \"make -C lib/\" would be one of the goals, iow,\n> > > > >> when we split the directory structure, the next step would be to split the\n> > > > >> top-level Makefile so that each directory is covered by its own Makefile,\n> > > > >> just like Documentation/ is already usable that way.\n> > > > >\n> > > > > Ugh. I am not thrilled at the prospect of more recursive make.\n> > > > \n> > > > Likewise. Notice that I have consistently been unthrilled when people\n> > > > started talking about splitting the source code tree?\n> > > \n> > > Maybe that would be wiser to consider an initial set of patches as those \n> > > which were proposed to only do the simple file move first, then wait for \n> > > the dust to settle before doing more changes.  Doing too much in one go \n> > > is inevitably going to bounce against the human tendency to resist any \n> > > kind of change, good or bad.\n> > \n> > > Nicolas\n> > \n> > Nicolas,\n> > They are doing it this way because change is not the objective. A\n> > possible better way of managing the codebase is.\n> \n> Incidentally I know that (guess whom this proposal came from initially).  ;-)\n> \n> > Perhaps it isn't the\n> > right way to go--and we won't know that until we've explored all of the\n> > side-effects, advantages, disadvantages, etc.\n> > \n> > Besides, if we move anything around into a deeper directory structure we\n> > are inevitably going to have to deal with more recursive make problems.\n> > We can't just commit to master a tree that has everything moved about\n> > and get around to dealing with the Makefiles later.\n> \n> The initial set of patches simply moved files into subdirectories and \n> made the corresponding renames within the Makefile.\n> \n> Reorganizing the Makefile into a better Makefile or sub-makefiles can be \n> done subsequently.  That's my point.\n\nIt can be done as a separate patch, but it should all be done in the\npublic branch (pu?) as atomically as possible (one merge from Junio's\nworkspace). In other words, the public branch should never fail to build\nbecause of this work. That's what I meant by \"later\" in my comment (as\nit apparently wasn't obvious from context alone). This is especially\nimportant for gaining the accession of the rest of the developer\ncommunity. Jeff (Peff) and Junio are both apparently quite well aware of\nthis--and I happen to agree with Jeff's way of approaching this type of\nchange.\n\nAs for making an authoritative publicly available branch containing this\nreorganization work (due solely to the extreme effect it will have on\nother development), I will leave it an open question as to whether this\nbelongs in pu while a 1.7.5 release is still a possibility. It looks\nlike a headache either way.\n\n-- \n-Drew Northup\n________________________________________________\n\"As opposed to vegetable or mineral error?\"\n-John Pescatore, SANS NewsBites Vol. 12 Num. 59\n"},{"id":"162174","messageId":"alpine.LFD.2.00.1102241252000.26358@xanadu.home","threadId":"26454","inReplyTo":"1298567455.19041.39.camel@drew-northup.unet.maine.edu","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Nicolas Pitre","fromEmail":"nico@fluxnic.net","sentAt":"2011-02-24T18:04:21Z","receivedAt":"2011-02-24T18:04:21Z","isPatch":true,"sender":{"key":"nico@fluxnic.net","avatar":"https://avatars.githubusercontent.com/u/702790?v=4"},"body":"On Thu, 24 Feb 2011, Drew Northup wrote:\n\n> \n> On Wed, 2011-02-23 at 19:14 -0500, Nicolas Pitre wrote:\n> > On Wed, 23 Feb 2011, Drew Northup wrote:\n> > \n> > > Besides, if we move anything around into a deeper directory structure we\n> > > are inevitably going to have to deal with more recursive make problems.\n> > > We can't just commit to master a tree that has everything moved about\n> > > and get around to dealing with the Makefiles later.\n> > \n> > The initial set of patches simply moved files into subdirectories and \n> > made the corresponding renames within the Makefile.\n> > \n> > Reorganizing the Makefile into a better Makefile or sub-makefiles can be \n> > done subsequently.  That's my point.\n> \n> It can be done as a separate patch, but it should all be done in the\n> public branch (pu?) as atomically as possible (one merge from Junio's\n> workspace). In other words, the public branch should never fail to build\n> because of this work.\n\nWho said this would fail to compile?\n\nIf you move bar.c into the foo directory, then in the existing Makefile \nyou simply have to make a mechanical rename of bar.c to foo/bar.c.  \nRestructuring the Makefile can be done separately from the file move \nwithout ever breaking the build (except for unintentional mistakes of \ncourse).\n\n> As for making an authoritative publicly available branch containing this\n> reorganization work (due solely to the extreme effect it will have on\n> other development), I will leave it an open question as to whether this\n> belongs in pu while a 1.7.5 release is still a possibility. It looks\n> like a headache either way.\n\nOh sure.  But if we the developers of Git can't deal with that ourselves \nthen it is a really good sign that our own tool is crappy in that area \nand probably needs to be improved.  Such a tree reorganization is \nsomething that happens in other projects as well, so it is a good \nopportunity to improve Git to cope well with such a situation if it \nisn't up to it yet.\n\n\nNicolas\n"},{"id":"162179","messageId":"20110224190808.GB4318@sigill.intra.peff.net","threadId":"26454","inReplyTo":"alpine.LFD.2.00.1102241252000.26358@xanadu.home","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2011-02-24T19:08:09Z","receivedAt":"2011-02-24T19:08:09Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Feb 24, 2011 at 01:04:21PM -0500, Nicolas Pitre wrote:\n\n> > It can be done as a separate patch, but it should all be done in the\n> > public branch (pu?) as atomically as possible (one merge from Junio's\n> > workspace). In other words, the public branch should never fail to build\n> > because of this work.\n> \n> Who said this would fail to compile?\n> \n> If you move bar.c into the foo directory, then in the existing Makefile \n> you simply have to make a mechanical rename of bar.c to foo/bar.c.  \n> Restructuring the Makefile can be done separately from the file move \n> without ever breaking the build (except for unintentional mistakes of \n> course).\n\nExactly. Maybe it wasn't clear in the previous bits of the thread, but\nMakefile reorganization is a totally optional thing that can come on top\nof file movement if we choose. I just brought it up with file movement\nbecause having a bunch of subdirs is going to probably make us _want_ to\ndo something with Makefiles.\n\nIn the interim it may not work to run make from the \"cmds\" subdirectory,\nbut that is not a \"fail to build\" breakage. As long as we build via\n\"make\" from the root, then there is no regression. Adding extra make\nfluff on top of that is feature work, not a bug fix.\n\n-Peff\n"},{"id":"162187","messageId":"1298576779.19041.48.camel@drew-northup.unet.maine.edu","threadId":"26454","inReplyTo":"20110224190808.GB4318@sigill.intra.peff.net","subject":"Re: [RFC/PATCH 0/3] Thinning the git toplevel directory","fromName":"Drew Northup","fromEmail":"drew.northup@maine.edu","sentAt":"2011-02-24T19:46:19Z","receivedAt":"2011-02-24T19:46:19Z","isPatch":true,"sender":{"key":"drew.northup@maine.edu","avatar":"https://avatars.githubusercontent.com/u/18331571?v=4"},"body":"\nOn Thu, 2011-02-24 at 14:08 -0500, Jeff King wrote:\n> On Thu, Feb 24, 2011 at 01:04:21PM -0500, Nicolas Pitre wrote:\n> \n> > > It can be done as a separate patch, but it should all be done in the\n> > > public branch (pu?) as atomically as possible (one merge from Junio's\n> > > workspace). In other words, the public branch should never fail to build\n> > > because of this work.\n> > \n> > Who said this would fail to compile?\n> > \n> > If you move bar.c into the foo directory, then in the existing Makefile \n> > you simply have to make a mechanical rename of bar.c to foo/bar.c.  \n> > Restructuring the Makefile can be done separately from the file move \n> > without ever breaking the build (except for unintentional mistakes of \n> > course).\n> \n> Exactly. Maybe it wasn't clear in the previous bits of the thread, but\n> Makefile reorganization is a totally optional thing that can come on top\n> of file movement if we choose. I just brought it up with file movement\n> because having a bunch of subdirs is going to probably make us _want_ to\n> do something with Makefiles.\n> \n> In the interim it may not work to run make from the \"cmds\" subdirectory,\n> but that is not a \"fail to build\" breakage. As long as we build via\n> \"make\" from the root, then there is no regression. Adding extra make\n> fluff on top of that is feature work, not a bug fix.\n> \n> -Peff\n\nI am glad to hear that is the case here. Pretty much everything else\nI've ever worked on absolutely breaks if files are moved around and\nMakefiles are not updated to suit.\n\n-- \n-Drew Northup\n________________________________________________\n\"As opposed to vegetable or mineral error?\"\n-John Pescatore, SANS NewsBites Vol. 12 Num. 59\n"}]}