threads / rfc / 4824

RFC patch, 2 partsClean up root directory

Subject: [RFC+PATCH 0/2] Clean up root directory

## tl;dr

4 messages between Jul 10, 2006 and Jul 10, 2006. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

Ryan Anderson· Jul 10, 2006, 04:54 UTC · lore
A second send of my patch to clean up the root directory a bit.

This series moves the "SCM interoperability" tools into interop/ and builtin-*.c into builtin/.

All tests pass, and all finished scripts and binaries are dropped into the root after a "make all".

GIT: Please enter your email below.
GIT: Lines beginning in "GIT: " will be removed.
GIT: Consider including an overall diffstat or table of contents
GIT: for the patch you are writing.
Ryan Anderson· Jul 10, 2006, 04:54 UTC · re: Ryan Anderson · lore

[PATCH 1/2] Move SCM interoperability tools into interop/

Signed-off-by: Ryan Anderson <ryan@michonline.com>
---
 Makefile                                           |   12 +++--
 interop/Makefile                                   |   45 ++++++++++++++++++++
 git-archimport.perl => interop/git-archimport.perl |    0 
 .../git-cvsexportcommit.perl                       |    0 
 git-cvsimport.perl => interop/git-cvsimport.perl   |    0 
 git-cvsserver.perl => interop/git-cvsserver.perl   |    0 
 git-p4import.py => interop/git-p4import.py         |    0 
 git-quiltimport.sh => interop/git-quiltimport.sh   |    0 
 git-send-email.perl => interop/git-send-email.perl |    0 
 git-svnimport.perl => interop/git-svnimport.perl   |    0 
 10 files changed, 52 insertions(+), 5 deletions(-)
Show changes to 10 files +52 −5

Makefile, interop/Makefile, git-archimport.perl, git-cvsexportcommit.perl, git-cvsimport.perl, git-cvsserver.perl, git-p4import.py, git-quiltimport.sh, git-send-email.perl, git-svnimport.perl

diff --git a/Makefile b/Makefile
index 13f7c89..d6e2b0f 100644
--- a/Makefile
+++ b/Makefile
@@ -127,14 +127,13 @@ SCRIPT_SH = \
 	git-applymbox.sh git-applypatch.sh git-am.sh \
 	git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \
 	git-merge-resolve.sh git-merge-ours.sh \
-	git-lost-found.sh git-quiltimport.sh
+	git-lost-found.sh
 
 SCRIPT_PERL = \
-	git-archimport.perl git-cvsimport.perl git-relink.perl \
+	git-relink.perl \
 	git-shortlog.perl git-rerere.perl \
-	git-annotate.perl git-cvsserver.perl \
-	git-svnimport.perl git-mv.perl git-cvsexportcommit.perl \
-	git-send-email.perl
+	git-annotate.perl \
+	git-mv.perl
 
 SCRIPT_PYTHON = \
 	git-merge-recursive.py
@@ -176,6 +175,9 @@ BUILT_INS = git-log$X git-whatchanged$X 
 	git-diff-index$X git-diff-stages$X git-diff-tree$X git-cat-file$X \
 	git-fmt-merge-msg$X
 
+
+include interop/Makefile
+
 # what 'all' will build and 'install' will install, in gitexecdir
 ALL_PROGRAMS = $(PROGRAMS) $(SIMPLE_PROGRAMS) $(SCRIPTS)
 
diff --git a/interop/Makefile b/interop/Makefile
new file mode 100644
index 0000000..b1a11d1
--- /dev/null
+++ b/interop/Makefile
@@ -0,0 +1,45 @@
+
+INTEROP_PERL_BASE = \
+	git-archimport.perl \
+	git-cvsimport.perl \
+	git-cvsexportcommit.perl \
+	git-cvsserver.perl \
+	git-svnimport.perl \
+	git-send-email.perl
+
+INTEROP_PYTHON_BASE = \
+	git-p4import.py
+
+INTEROP_SH_BASE = \
+	git-quiltimport.sh
+
+SCRIPTS+=$(patsubst %.perl,%,$(INTEROP_PERL_BASE))
+SCRIPTS+=$(patsubst %.py,%,$(INTEROP_PYTHON_BASE))
+SCRIPTS+=$(patsubst %.sh,%,$(INTEROP_SH_BASE))
+
+$(patsubst %.sh,%,$(INTEROP_SH_BASE)) : % : interop/%.sh
+	rm -f $@ $@+
+	sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
+	    -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
+	    -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
+	    -e 's/@@NO_PYTHON@@/$(NO_PYTHON)/g' \
+	    $^ >$@+
+	chmod +x $@+
+	mv $@+ $@
+
+$(patsubst %.perl,%,$(INTEROP_PERL_BASE)) : % : interop/%.perl
+	rm -f $@ $@+
+	sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
+	    -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
+	    $^ >$@+
+	chmod +x $@+
+	mv $@+ $@
+
+$(patsubst %.py,%,$(INTEROP_PYTHON_BASE)) : % : interop/%.py GIT-CFLAGS
+	rm -f $@ $@+
+	sed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \
+	    -e 's|@@GIT_PYTHON_PATH@@|$(GIT_PYTHON_DIR_SQ)|g' \
+	    -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
+	    $^ >$@+
+	chmod +x $@+
+	mv $@+ $@
diff --git a/git-archimport.perl b/interop/git-archimport.perl
similarity index 100%
rename from git-archimport.perl
rename to interop/git-archimport.perl
diff --git a/git-cvsexportcommit.perl b/interop/git-cvsexportcommit.perl
similarity index 100%
rename from git-cvsexportcommit.perl
rename to interop/git-cvsexportcommit.perl
diff --git a/git-cvsimport.perl b/interop/git-cvsimport.perl
similarity index 100%
rename from git-cvsimport.perl
rename to interop/git-cvsimport.perl
diff --git a/git-cvsserver.perl b/interop/git-cvsserver.perl
similarity index 100%
rename from git-cvsserver.perl
rename to interop/git-cvsserver.perl
diff --git a/git-p4import.py b/interop/git-p4import.py
similarity index 100%
rename from git-p4import.py
rename to interop/git-p4import.py
diff --git a/git-quiltimport.sh b/interop/git-quiltimport.sh
similarity index 100%
rename from git-quiltimport.sh
rename to interop/git-quiltimport.sh
diff --git a/git-send-email.perl b/interop/git-send-email.perl
similarity index 100%
rename from git-send-email.perl
rename to interop/git-send-email.perl
diff --git a/git-svnimport.perl b/interop/git-svnimport.perl
similarity index 100%
rename from git-svnimport.perl
rename to interop/git-svnimport.perl
-- 
1.4.1.gc473b-dirty
Ryan Anderson· Jul 10, 2006, 04:54 UTC · re: Ryan Anderson · lore

[PATCH 2/2] Move all builtin .c files into builtin/

Signed-off-by: Ryan Anderson <ryan@michonline.com>
---
 Makefile                                           |   15 ++-------------
 builtin/Makefile                                   |   13 +++++++++++++
 builtin-add.c => builtin/builtin-add.c             |    0 
 builtin-apply.c => builtin/builtin-apply.c         |    0 
 builtin-cat-file.c => builtin/builtin-cat-file.c   |    0 
 .../builtin-check-ref-format.c                     |    0 
 .../builtin-commit-tree.c                          |    0 
 builtin-count.c => builtin/builtin-count.c         |    0 
 .../builtin-diff-files.c                           |    0 
 .../builtin-diff-index.c                           |    0 
 .../builtin-diff-stages.c                          |    0 
 builtin-diff-tree.c => builtin/builtin-diff-tree.c |    0 
 builtin-diff.c => builtin/builtin-diff.c           |    0 
 .../builtin-fmt-merge-msg.c                        |    0 
 builtin-grep.c => builtin/builtin-grep.c           |    0 
 builtin-help.c => builtin/builtin-help.c           |    0 
 builtin-init-db.c => builtin/builtin-init-db.c     |    0 
 builtin-log.c => builtin/builtin-log.c             |    0 
 builtin-ls-files.c => builtin/builtin-ls-files.c   |    0 
 builtin-ls-tree.c => builtin/builtin-ls-tree.c     |    0 
 builtin-mailinfo.c => builtin/builtin-mailinfo.c   |    0 
 builtin-mailsplit.c => builtin/builtin-mailsplit.c |    0 
 builtin-push.c => builtin/builtin-push.c           |    0 
 builtin-read-tree.c => builtin/builtin-read-tree.c |    0 
 builtin-rev-list.c => builtin/builtin-rev-list.c   |    0 
 builtin-rev-parse.c => builtin/builtin-rev-parse.c |    0 
 builtin-rm.c => builtin/builtin-rm.c               |    0 
 .../builtin-show-branch.c                          |    0 
 .../builtin-stripspace.c                           |    0 
 builtin-tar-tree.c => builtin/builtin-tar-tree.c   |    0 
 .../builtin-update-index.c                         |    0 
 .../builtin-update-ref.c                           |    0 
 .../builtin-upload-tar.c                           |    0 
 .../builtin-write-tree.c                           |    0 
 builtin.h => builtin/builtin.h                     |    0 
 git.c                                              |    2 +-
 36 files changed, 16 insertions(+), 14 deletions(-)
Show changes to 36 files +16 −14

Makefile, builtin/Makefile, builtin-add.c, builtin-apply.c, builtin-cat-file.c, builtin-check-ref-format.c, builtin-commit-tree.c, builtin-count.c, builtin-diff-files.c, builtin-diff-index.c, builtin-diff-stages.c, builtin-diff-tree.c, builtin-diff.c, builtin-fmt-merge-msg.c, builtin-grep.c, builtin-help.c, builtin-init-db.c, builtin-log.c, builtin-ls-files.c, builtin-ls-tree.c, builtin-mailinfo.c, builtin-mailsplit.c, builtin-push.c, builtin-read-tree.c, builtin-rev-list.c, builtin-rev-parse.c, builtin-rm.c, builtin-show-branch.c, builtin-stripspace.c, builtin-tar-tree.c, builtin-update-index.c, builtin-update-ref.c, builtin-upload-tar.c, builtin-write-tree.c, builtin.h, git.c

diff --git a/Makefile b/Makefile
index d6e2b0f..92368b9 100644
--- a/Makefile
+++ b/Makefile
@@ -87,7 +87,7 @@ uname_P := $(shell sh -c 'uname -p 2>/de
 
 # CFLAGS and LDFLAGS are for the users to override from the command line.
 
-CFLAGS = -g -O2 -Wall
+CFLAGS = -g -O2 -Wall -I.
 LDFLAGS =
 ALL_CFLAGS = $(CFLAGS)
 ALL_LDFLAGS = $(LDFLAGS)
@@ -177,6 +177,7 @@ BUILT_INS = git-log$X git-whatchanged$X 
 
 
 include interop/Makefile
+include builtin/Makefile
 
 # what 'all' will build and 'install' will install, in gitexecdir
 ALL_PROGRAMS = $(PROGRAMS) $(SIMPLE_PROGRAMS) $(SCRIPTS)
@@ -222,18 +223,6 @@ LIB_OBJS = \
 	fetch-clone.o revision.o pager.o tree-walk.o xdiff-interface.o \
 	alloc.o $(DIFF_OBJS)
 
-BUILTIN_OBJS = \
-	builtin-log.o builtin-help.o builtin-count.o builtin-diff.o builtin-push.o \
-	builtin-grep.o builtin-add.o builtin-rev-list.o builtin-check-ref-format.o \
-	builtin-rm.o builtin-init-db.o builtin-rev-parse.o \
-	builtin-tar-tree.o builtin-upload-tar.o builtin-update-index.o \
-	builtin-ls-files.o builtin-ls-tree.o builtin-write-tree.o \
-	builtin-read-tree.o builtin-commit-tree.o builtin-mailinfo.o \
-	builtin-apply.o builtin-show-branch.o builtin-diff-files.o \
-	builtin-diff-index.o builtin-diff-stages.o builtin-diff-tree.o \
-	builtin-cat-file.o builtin-mailsplit.o builtin-stripspace.o \
-	builtin-update-ref.o builtin-fmt-merge-msg.o
-
 GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
 LIBS = $(GITLIBS) -lz
 
diff --git a/builtin/Makefile b/builtin/Makefile
new file mode 100644
index 0000000..3588fce
--- /dev/null
+++ b/builtin/Makefile
@@ -0,0 +1,13 @@
+BUILTIN_OBJ_BASE = \
+	builtin-log.o builtin-help.o builtin-count.o builtin-diff.o builtin-push.o \
+	builtin-grep.o builtin-add.o builtin-rev-list.o builtin-check-ref-format.o \
+	builtin-rm.o builtin-init-db.o builtin-rev-parse.o \
+	builtin-tar-tree.o builtin-upload-tar.o builtin-update-index.o \
+	builtin-ls-files.o builtin-ls-tree.o builtin-write-tree.o \
+	builtin-read-tree.o builtin-commit-tree.o builtin-mailinfo.o \
+	builtin-apply.o builtin-show-branch.o builtin-diff-files.o \
+	builtin-diff-index.o builtin-diff-stages.o builtin-diff-tree.o \
+	builtin-cat-file.o builtin-mailsplit.o builtin-stripspace.o \
+	builtin-update-ref.o builtin-fmt-merge-msg.o
+
+BUILTIN_OBJS = $(addprefix builtin/,$(BUILTIN_OBJ_BASE))
\ No newline at end of file
diff --git a/builtin-add.c b/builtin/builtin-add.c
similarity index 100%
rename from builtin-add.c
rename to builtin/builtin-add.c
diff --git a/builtin-apply.c b/builtin/builtin-apply.c
similarity index 100%
rename from builtin-apply.c
rename to builtin/builtin-apply.c
diff --git a/builtin-cat-file.c b/builtin/builtin-cat-file.c
similarity index 100%
rename from builtin-cat-file.c
rename to builtin/builtin-cat-file.c
diff --git a/builtin-check-ref-format.c b/builtin/builtin-check-ref-format.c
similarity index 100%
rename from builtin-check-ref-format.c
rename to builtin/builtin-check-ref-format.c
diff --git a/builtin-commit-tree.c b/builtin/builtin-commit-tree.c
similarity index 100%
rename from builtin-commit-tree.c
rename to builtin/builtin-commit-tree.c
diff --git a/builtin-count.c b/builtin/builtin-count.c
similarity index 100%
rename from builtin-count.c
rename to builtin/builtin-count.c
diff --git a/builtin-diff-files.c b/builtin/builtin-diff-files.c
similarity index 100%
rename from builtin-diff-files.c
rename to builtin/builtin-diff-files.c
diff --git a/builtin-diff-index.c b/builtin/builtin-diff-index.c
similarity index 100%
rename from builtin-diff-index.c
rename to builtin/builtin-diff-index.c
diff --git a/builtin-diff-stages.c b/builtin/builtin-diff-stages.c
similarity index 100%
rename from builtin-diff-stages.c
rename to builtin/builtin-diff-stages.c
diff --git a/builtin-diff-tree.c b/builtin/builtin-diff-tree.c
similarity index 100%
rename from builtin-diff-tree.c
rename to builtin/builtin-diff-tree.c
diff --git a/builtin-diff.c b/builtin/builtin-diff.c
similarity index 100%
rename from builtin-diff.c
rename to builtin/builtin-diff.c
diff --git a/builtin-fmt-merge-msg.c b/builtin/builtin-fmt-merge-msg.c
similarity index 100%
rename from builtin-fmt-merge-msg.c
rename to builtin/builtin-fmt-merge-msg.c
diff --git a/builtin-grep.c b/builtin/builtin-grep.c
similarity index 100%
rename from builtin-grep.c
rename to builtin/builtin-grep.c
diff --git a/builtin-help.c b/builtin/builtin-help.c
similarity index 100%
rename from builtin-help.c
rename to builtin/builtin-help.c
diff --git a/builtin-init-db.c b/builtin/builtin-init-db.c
similarity index 100%
rename from builtin-init-db.c
rename to builtin/builtin-init-db.c
diff --git a/builtin-log.c b/builtin/builtin-log.c
similarity index 100%
rename from builtin-log.c
rename to builtin/builtin-log.c
diff --git a/builtin-ls-files.c b/builtin/builtin-ls-files.c
similarity index 100%
rename from builtin-ls-files.c
rename to builtin/builtin-ls-files.c
diff --git a/builtin-ls-tree.c b/builtin/builtin-ls-tree.c
similarity index 100%
rename from builtin-ls-tree.c
rename to builtin/builtin-ls-tree.c
diff --git a/builtin-mailinfo.c b/builtin/builtin-mailinfo.c
similarity index 100%
rename from builtin-mailinfo.c
rename to builtin/builtin-mailinfo.c
diff --git a/builtin-mailsplit.c b/builtin/builtin-mailsplit.c
similarity index 100%
rename from builtin-mailsplit.c
rename to builtin/builtin-mailsplit.c
diff --git a/builtin-push.c b/builtin/builtin-push.c
similarity index 100%
rename from builtin-push.c
rename to builtin/builtin-push.c
diff --git a/builtin-read-tree.c b/builtin/builtin-read-tree.c
similarity index 100%
rename from builtin-read-tree.c
rename to builtin/builtin-read-tree.c
diff --git a/builtin-rev-list.c b/builtin/builtin-rev-list.c
similarity index 100%
rename from builtin-rev-list.c
rename to builtin/builtin-rev-list.c
diff --git a/builtin-rev-parse.c b/builtin/builtin-rev-parse.c
similarity index 100%
rename from builtin-rev-parse.c
rename to builtin/builtin-rev-parse.c
diff --git a/builtin-rm.c b/builtin/builtin-rm.c
similarity index 100%
rename from builtin-rm.c
rename to builtin/builtin-rm.c
diff --git a/builtin-show-branch.c b/builtin/builtin-show-branch.c
similarity index 100%
rename from builtin-show-branch.c
rename to builtin/builtin-show-branch.c
diff --git a/builtin-stripspace.c b/builtin/builtin-stripspace.c
similarity index 100%
rename from builtin-stripspace.c
rename to builtin/builtin-stripspace.c
diff --git a/builtin-tar-tree.c b/builtin/builtin-tar-tree.c
similarity index 100%
rename from builtin-tar-tree.c
rename to builtin/builtin-tar-tree.c
diff --git a/builtin-update-index.c b/builtin/builtin-update-index.c
similarity index 100%
rename from builtin-update-index.c
rename to builtin/builtin-update-index.c
diff --git a/builtin-update-ref.c b/builtin/builtin-update-ref.c
similarity index 100%
rename from builtin-update-ref.c
rename to builtin/builtin-update-ref.c
diff --git a/builtin-upload-tar.c b/builtin/builtin-upload-tar.c
similarity index 100%
rename from builtin-upload-tar.c
rename to builtin/builtin-upload-tar.c
diff --git a/builtin-write-tree.c b/builtin/builtin-write-tree.c
similarity index 100%
rename from builtin-write-tree.c
rename to builtin/builtin-write-tree.c
diff --git a/builtin.h b/builtin/builtin.h
similarity index 100%
rename from builtin.h
rename to builtin/builtin.h
diff --git a/git.c b/git.c
index 49062ca..81f6675 100644
--- a/git.c
+++ b/git.c
@@ -12,7 +12,7 @@ #include "git-compat-util.h"
 #include "exec_cmd.h"
 #include "cache.h"
 
-#include "builtin.h"
+#include "builtin/builtin.h"
 
 static void prepend_to_path(const char *dir, int len)
 {
-- 
1.4.1.gc473b-dirty
Pavel Roskin· Jul 10, 2006, 06:41 UTC · re: Ryan Anderson · lore

Re: [PATCH 2/2] Move all builtin .c files into builtin/

Hello, Ryan!
On Mon, 2006-07-10 at 00:54 -0400, Ryan Anderson wrote:
> Signed-off-by: Ryan Anderson <ryan@michonline.com>

I agree that the top level directory is overcrowded, but wouldn't it be better to move libgit.a sources to "lib" and then classify the remaining files in some way (e.g. "git" or "src" for builtin commands, "commands" for the rest)? While at that, the "buildin-" prefix could be stripped.

The main "git" executable is nothing but several builtin commands rolled together. It's not like a shell, which has functionality beyond the builtin commands. So "builtin" is git.

Or you can say that the git executable is a command line frontend to the git library (it's moving in this direction anyway). Then you can have "client" and "server" directories. That's more important for understanding the source than "builtin", "standalone" or any classification based on technical details.

-- 
Regards,
Pavel Roskin

← back to recent threads