Quantcast

[RFD] Deepen the git directory structure a bit.

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[RFD] Deepen the git directory structure a bit.

Linus Torvalds-3

Ok, this is just a request-for-discussion. I'm trying out a patch like
this, and I think it's a step in the right direction. The git directory
structure is _very_ flat, and currently in a fully built git tree, the
top-level directory has something like 750 files in it.

After this, it still has a ton of files, but it has shrunk to ~575 files
instead, and at least for my (admittedly somewhat odd) setup, that
actually matters for auto-completion etc.

I think this coul probably be done differently (I'm not proud of that ugly
'-I. -Ibuiltin' addition to the CFLAGS, for example), and I think there
are _other_ things we could also try to do to move files into
subdirectories, but this was a fairly easy thing to basically script.

What do people think?

                        Linus

---
From: Linus Torvalds <[hidden email]>
Date: Thu, 18 Feb 2010 10:11:32 -0800
Subject: [PATCH] Move 'builtin-*' into a 'builtin/' subdirectory

This shrinks the top-level directory a bit, and makes it much more
pleasant to use auto-completion on the thing. Instead of

        [torvalds@nehalem git]$ em buil<tab>
        Display all 180 possibilities? (y or n)
        [torvalds@nehalem git]$ em builtin-sh
        builtin-shortlog.c     builtin-show-branch.c  builtin-show-ref.c
        builtin-shortlog.o     builtin-show-branch.o  builtin-show-ref.o
        [torvalds@nehalem git]$ em builtin-shor<tab>
        builtin-shortlog.c  builtin-shortlog.o
        [torvalds@nehalem git]$ em builtin-shortlog.c

you get

        [torvalds@nehalem git]$ em buil<tab> [type]
        [torvalds@nehalem git]$ em builtin/ [auto-completes to]
        [torvalds@nehalem git]$ em builtin/sh<tab> [type]
        shortlog.c     shortlog.o     show-branch.c  show-branch.o  show-ref.c     show-ref.o
        [torvalds@nehalem git]$ em builtin/sho [auto-completes to]
        [torvalds@nehalem git]$ em builtin/shor<tab> [type]
        shortlog.c  shortlog.o
        [torvalds@nehalem git]$ em builtin/shortlog.c

which doesn't seem all that different, but not having that annoying
break in "Display all 180 possibilities?" is quite a relief.

NOTE! If you do this in a clean tree (no object files etc), or using an
editor that has auto-completion rules that ignores '*.o' files, you
won't see that annoying 'Display all 180 possibilities?' message - it
will just show the choices instead.  I think bash has some cut-off
around 100 choices or something.

So the reason I see this is that I'm using an odd editory, and thus
don't have the rules to cut down on auto-completion.  But you can
simulate that by using 'ls' instead, or something similar. And you can
tell that there are fewer files in the top directory.

Signed-off-by: Linus Torvalds <[hidden email]>
---
 Makefile                                           |  194 ++++++++++----------
 builtin-add.c => builtin/add.c                     |    0
 builtin-annotate.c => builtin/annotate.c           |    0
 builtin-apply.c => builtin/apply.c                 |    0
 builtin-archive.c => builtin/archive.c             |    0
 .../bisect--helper.c                               |    0
 builtin-blame.c => builtin/blame.c                 |    0
 builtin-branch.c => builtin/branch.c               |    0
 builtin.h => builtin/builtin.h                     |    0
 builtin-bundle.c => builtin/bundle.c               |    0
 builtin-cat-file.c => builtin/cat-file.c           |    0
 builtin-check-attr.c => builtin/check-attr.c       |    0
 .../check-ref-format.c                             |    0
 .../checkout-index.c                               |    0
 builtin-checkout.c => builtin/checkout.c           |    0
 builtin-clean.c => builtin/clean.c                 |    0
 builtin-clone.c => builtin/clone.c                 |    0
 builtin-commit-tree.c => builtin/commit-tree.c     |    0
 builtin-commit.c => builtin/commit.c               |    0
 builtin-config.c => builtin/config.c               |    0
 builtin-count-objects.c => builtin/count-objects.c |    0
 builtin-describe.c => builtin/describe.c           |    0
 builtin-diff-files.c => builtin/diff-files.c       |    0
 builtin-diff-index.c => builtin/diff-index.c       |    0
 builtin-diff-tree.c => builtin/diff-tree.c         |    0
 builtin-diff.c => builtin/diff.c                   |    0
 builtin-fast-export.c => builtin/fast-export.c     |    0
 builtin-fetch-pack.c => builtin/fetch-pack.c       |    0
 builtin-fetch.c => builtin/fetch.c                 |    0
 builtin-fmt-merge-msg.c => builtin/fmt-merge-msg.c |    0
 builtin-for-each-ref.c => builtin/for-each-ref.c   |    0
 builtin-fsck.c => builtin/fsck.c                   |    0
 builtin-gc.c => builtin/gc.c                       |    0
 builtin-grep.c => builtin/grep.c                   |    0
 builtin-hash-object.c => builtin/hash-object.c     |    0
 builtin-help.c => builtin/help.c                   |    0
 builtin-index-pack.c => builtin/index-pack.c       |    0
 builtin-init-db.c => builtin/init-db.c             |    0
 builtin-log.c => builtin/log.c                     |    0
 builtin-ls-files.c => builtin/ls-files.c           |    0
 builtin-ls-remote.c => builtin/ls-remote.c         |    0
 builtin-ls-tree.c => builtin/ls-tree.c             |    0
 builtin-mailinfo.c => builtin/mailinfo.c           |    0
 builtin-mailsplit.c => builtin/mailsplit.c         |    0
 builtin-merge-base.c => builtin/merge-base.c       |    0
 builtin-merge-file.c => builtin/merge-file.c       |    0
 builtin-merge-index.c => builtin/merge-index.c     |    0
 builtin-merge-ours.c => builtin/merge-ours.c       |    0
 .../merge-recursive.c                              |    0
 builtin-merge-tree.c => builtin/merge-tree.c       |    0
 builtin-merge.c => builtin/merge.c                 |    0
 builtin-mktag.c => builtin/mktag.c                 |    0
 builtin-mktree.c => builtin/mktree.c               |    0
 builtin-mv.c => builtin/mv.c                       |    0
 builtin-name-rev.c => builtin/name-rev.c           |    0
 builtin-pack-objects.c => builtin/pack-objects.c   |    0
 .../pack-redundant.c                               |    0
 builtin-pack-refs.c => builtin/pack-refs.c         |    0
 builtin-patch-id.c => builtin/patch-id.c           |    0
 builtin-prune-packed.c => builtin/prune-packed.c   |    0
 builtin-prune.c => builtin/prune.c                 |    0
 builtin-push.c => builtin/push.c                   |    0
 builtin-read-tree.c => builtin/read-tree.c         |    0
 builtin-receive-pack.c => builtin/receive-pack.c   |    0
 builtin-reflog.c => builtin/reflog.c               |    0
 builtin-remote.c => builtin/remote.c               |    0
 builtin-replace.c => builtin/replace.c             |    0
 builtin-rerere.c => builtin/rerere.c               |    0
 builtin-reset.c => builtin/reset.c                 |    0
 builtin-rev-list.c => builtin/rev-list.c           |    0
 builtin-rev-parse.c => builtin/rev-parse.c         |    0
 builtin-revert.c => builtin/revert.c               |    0
 builtin-rm.c => builtin/rm.c                       |    0
 builtin-send-pack.c => builtin/send-pack.c         |    0
 builtin-shortlog.c => builtin/shortlog.c           |    0
 builtin-show-branch.c => builtin/show-branch.c     |    0
 builtin-show-ref.c => builtin/show-ref.c           |    0
 builtin-stripspace.c => builtin/stripspace.c       |    0
 builtin-symbolic-ref.c => builtin/symbolic-ref.c   |    0
 builtin-tag.c => builtin/tag.c                     |    0
 builtin-tar-tree.c => builtin/tar-tree.c           |    0
 builtin-unpack-file.c => builtin/unpack-file.c     |    0
 .../unpack-objects.c                               |    0
 builtin-update-index.c => builtin/update-index.c   |    0
 builtin-update-ref.c => builtin/update-ref.c       |    0
 .../update-server-info.c                           |    0
 .../upload-archive.c                               |    0
 builtin-var.c => builtin/var.c                     |    0
 builtin-verify-pack.c => builtin/verify-pack.c     |    0
 builtin-verify-tag.c => builtin/verify-tag.c       |    0
 builtin-write-tree.c => builtin/write-tree.c       |    0
 91 files changed, 97 insertions(+), 97 deletions(-)
 rename builtin-add.c => builtin/add.c (100%)
 rename builtin-annotate.c => builtin/annotate.c (100%)
 rename builtin-apply.c => builtin/apply.c (100%)
 rename builtin-archive.c => builtin/archive.c (100%)
 rename builtin-bisect--helper.c => builtin/bisect--helper.c (100%)
 rename builtin-blame.c => builtin/blame.c (100%)
 rename builtin-branch.c => builtin/branch.c (100%)
 rename builtin.h => builtin/builtin.h (100%)
 rename builtin-bundle.c => builtin/bundle.c (100%)
 rename builtin-cat-file.c => builtin/cat-file.c (100%)
 rename builtin-check-attr.c => builtin/check-attr.c (100%)
 rename builtin-check-ref-format.c => builtin/check-ref-format.c (100%)
 rename builtin-checkout-index.c => builtin/checkout-index.c (100%)
 rename builtin-checkout.c => builtin/checkout.c (100%)
 rename builtin-clean.c => builtin/clean.c (100%)
 rename builtin-clone.c => builtin/clone.c (100%)
 rename builtin-commit-tree.c => builtin/commit-tree.c (100%)
 rename builtin-commit.c => builtin/commit.c (100%)
 rename builtin-config.c => builtin/config.c (100%)
 rename builtin-count-objects.c => builtin/count-objects.c (100%)
 rename builtin-describe.c => builtin/describe.c (100%)
 rename builtin-diff-files.c => builtin/diff-files.c (100%)
 rename builtin-diff-index.c => builtin/diff-index.c (100%)
 rename builtin-diff-tree.c => builtin/diff-tree.c (100%)
 rename builtin-diff.c => builtin/diff.c (100%)
 rename builtin-fast-export.c => builtin/fast-export.c (100%)
 rename builtin-fetch-pack.c => builtin/fetch-pack.c (100%)
 rename builtin-fetch.c => builtin/fetch.c (100%)
 rename builtin-fmt-merge-msg.c => builtin/fmt-merge-msg.c (100%)
 rename builtin-for-each-ref.c => builtin/for-each-ref.c (100%)
 rename builtin-fsck.c => builtin/fsck.c (100%)
 rename builtin-gc.c => builtin/gc.c (100%)
 rename builtin-grep.c => builtin/grep.c (100%)
 rename builtin-hash-object.c => builtin/hash-object.c (100%)
 rename builtin-help.c => builtin/help.c (100%)
 rename builtin-index-pack.c => builtin/index-pack.c (100%)
 rename builtin-init-db.c => builtin/init-db.c (100%)
 rename builtin-log.c => builtin/log.c (100%)
 rename builtin-ls-files.c => builtin/ls-files.c (100%)
 rename builtin-ls-remote.c => builtin/ls-remote.c (100%)
 rename builtin-ls-tree.c => builtin/ls-tree.c (100%)
 rename builtin-mailinfo.c => builtin/mailinfo.c (100%)
 rename builtin-mailsplit.c => builtin/mailsplit.c (100%)
 rename builtin-merge-base.c => builtin/merge-base.c (100%)
 rename builtin-merge-file.c => builtin/merge-file.c (100%)
 rename builtin-merge-index.c => builtin/merge-index.c (100%)
 rename builtin-merge-ours.c => builtin/merge-ours.c (100%)
 rename builtin-merge-recursive.c => builtin/merge-recursive.c (100%)
 rename builtin-merge-tree.c => builtin/merge-tree.c (100%)
 rename builtin-merge.c => builtin/merge.c (100%)
 rename builtin-mktag.c => builtin/mktag.c (100%)
 rename builtin-mktree.c => builtin/mktree.c (100%)
 rename builtin-mv.c => builtin/mv.c (100%)
 rename builtin-name-rev.c => builtin/name-rev.c (100%)
 rename builtin-pack-objects.c => builtin/pack-objects.c (100%)
 rename builtin-pack-redundant.c => builtin/pack-redundant.c (100%)
 rename builtin-pack-refs.c => builtin/pack-refs.c (100%)
 rename builtin-patch-id.c => builtin/patch-id.c (100%)
 rename builtin-prune-packed.c => builtin/prune-packed.c (100%)
 rename builtin-prune.c => builtin/prune.c (100%)
 rename builtin-push.c => builtin/push.c (100%)
 rename builtin-read-tree.c => builtin/read-tree.c (100%)
 rename builtin-receive-pack.c => builtin/receive-pack.c (100%)
 rename builtin-reflog.c => builtin/reflog.c (100%)
 rename builtin-remote.c => builtin/remote.c (100%)
 rename builtin-replace.c => builtin/replace.c (100%)
 rename builtin-rerere.c => builtin/rerere.c (100%)
 rename builtin-reset.c => builtin/reset.c (100%)
 rename builtin-rev-list.c => builtin/rev-list.c (100%)
 rename builtin-rev-parse.c => builtin/rev-parse.c (100%)
 rename builtin-revert.c => builtin/revert.c (100%)
 rename builtin-rm.c => builtin/rm.c (100%)
 rename builtin-send-pack.c => builtin/send-pack.c (100%)
 rename builtin-shortlog.c => builtin/shortlog.c (100%)
 rename builtin-show-branch.c => builtin/show-branch.c (100%)
 rename builtin-show-ref.c => builtin/show-ref.c (100%)
 rename builtin-stripspace.c => builtin/stripspace.c (100%)
 rename builtin-symbolic-ref.c => builtin/symbolic-ref.c (100%)
 rename builtin-tag.c => builtin/tag.c (100%)
 rename builtin-tar-tree.c => builtin/tar-tree.c (100%)
 rename builtin-unpack-file.c => builtin/unpack-file.c (100%)
 rename builtin-unpack-objects.c => builtin/unpack-objects.c (100%)
 rename builtin-update-index.c => builtin/update-index.c (100%)
 rename builtin-update-ref.c => builtin/update-ref.c (100%)
 rename builtin-update-server-info.c => builtin/update-server-info.c (100%)
 rename builtin-upload-archive.c => builtin/upload-archive.c (100%)
 rename builtin-var.c => builtin/var.c (100%)
 rename builtin-verify-pack.c => builtin/verify-pack.c (100%)
 rename builtin-verify-tag.c => builtin/verify-tag.c (100%)
 rename builtin-write-tree.c => builtin/write-tree.c (100%)

diff --git a/Makefile b/Makefile
index 7bf2fca..f023f9b 100644
--- a/Makefile
+++ b/Makefile
@@ -301,7 +301,7 @@ SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__
 # Those must not be GNU-specific; they are shared with perl/ which may
 # be built by a different compiler. (Note that this is an artifact now
 # but it still might be nice to keep that distinction.)
-BASIC_CFLAGS =
+BASIC_CFLAGS = -I. -Ibuiltin
 BASIC_LDFLAGS =
 
 # Guard against environment variables
@@ -368,8 +368,8 @@ PROGRAMS += git-upload-pack$X
 PROGRAMS += git-http-backend$X
 
 # List built-in command $C whose implementation cmd_$C() is not in
-# builtin-$C.o but is linked in as part of some other command.
-BUILT_INS += $(patsubst builtin-%.o,git-%$X,$(BUILTIN_OBJS))
+# builtin/$C.o but is linked in as part of some other command.
+BUILT_INS += $(patsubst builtin/%.o,git-%$X,$(BUILTIN_OBJS))
 
 BUILT_INS += git-cherry$X
 BUILT_INS += git-cherry-pick$X
@@ -422,7 +422,7 @@ LIB_H += advice.h
 LIB_H += archive.h
 LIB_H += attr.h
 LIB_H += blob.h
-LIB_H += builtin.h
+LIB_H += builtin/builtin.h
 LIB_H += cache.h
 LIB_H += cache-tree.h
 LIB_H += commit.h
@@ -592,95 +592,95 @@ LIB_OBJS += ws.o
 LIB_OBJS += wt-status.o
 LIB_OBJS += xdiff-interface.o
 
-BUILTIN_OBJS += builtin-add.o
-BUILTIN_OBJS += builtin-annotate.o
-BUILTIN_OBJS += builtin-apply.o
-BUILTIN_OBJS += builtin-archive.o
-BUILTIN_OBJS += builtin-bisect--helper.o
-BUILTIN_OBJS += builtin-blame.o
-BUILTIN_OBJS += builtin-branch.o
-BUILTIN_OBJS += builtin-bundle.o
-BUILTIN_OBJS += builtin-cat-file.o
-BUILTIN_OBJS += builtin-check-attr.o
-BUILTIN_OBJS += builtin-check-ref-format.o
-BUILTIN_OBJS += builtin-checkout-index.o
-BUILTIN_OBJS += builtin-checkout.o
-BUILTIN_OBJS += builtin-clean.o
-BUILTIN_OBJS += builtin-clone.o
-BUILTIN_OBJS += builtin-commit-tree.o
-BUILTIN_OBJS += builtin-commit.o
-BUILTIN_OBJS += builtin-config.o
-BUILTIN_OBJS += builtin-count-objects.o
-BUILTIN_OBJS += builtin-describe.o
-BUILTIN_OBJS += builtin-diff-files.o
-BUILTIN_OBJS += builtin-diff-index.o
-BUILTIN_OBJS += builtin-diff-tree.o
-BUILTIN_OBJS += builtin-diff.o
-BUILTIN_OBJS += builtin-fast-export.o
-BUILTIN_OBJS += builtin-fetch-pack.o
-BUILTIN_OBJS += builtin-fetch.o
-BUILTIN_OBJS += builtin-fmt-merge-msg.o
-BUILTIN_OBJS += builtin-for-each-ref.o
-BUILTIN_OBJS += builtin-fsck.o
-BUILTIN_OBJS += builtin-gc.o
-BUILTIN_OBJS += builtin-grep.o
-BUILTIN_OBJS += builtin-hash-object.o
-BUILTIN_OBJS += builtin-help.o
-BUILTIN_OBJS += builtin-index-pack.o
-BUILTIN_OBJS += builtin-init-db.o
-BUILTIN_OBJS += builtin-log.o
-BUILTIN_OBJS += builtin-ls-files.o
-BUILTIN_OBJS += builtin-ls-remote.o
-BUILTIN_OBJS += builtin-ls-tree.o
-BUILTIN_OBJS += builtin-mailinfo.o
-BUILTIN_OBJS += builtin-mailsplit.o
-BUILTIN_OBJS += builtin-merge.o
-BUILTIN_OBJS += builtin-merge-base.o
-BUILTIN_OBJS += builtin-merge-file.o
-BUILTIN_OBJS += builtin-merge-index.o
-BUILTIN_OBJS += builtin-merge-ours.o
-BUILTIN_OBJS += builtin-merge-recursive.o
-BUILTIN_OBJS += builtin-merge-tree.o
-BUILTIN_OBJS += builtin-mktag.o
-BUILTIN_OBJS += builtin-mktree.o
-BUILTIN_OBJS += builtin-mv.o
-BUILTIN_OBJS += builtin-name-rev.o
-BUILTIN_OBJS += builtin-pack-objects.o
-BUILTIN_OBJS += builtin-pack-redundant.o
-BUILTIN_OBJS += builtin-pack-refs.o
-BUILTIN_OBJS += builtin-patch-id.o
-BUILTIN_OBJS += builtin-prune-packed.o
-BUILTIN_OBJS += builtin-prune.o
-BUILTIN_OBJS += builtin-push.o
-BUILTIN_OBJS += builtin-read-tree.o
-BUILTIN_OBJS += builtin-receive-pack.o
-BUILTIN_OBJS += builtin-reflog.o
-BUILTIN_OBJS += builtin-remote.o
-BUILTIN_OBJS += builtin-replace.o
-BUILTIN_OBJS += builtin-rerere.o
-BUILTIN_OBJS += builtin-reset.o
-BUILTIN_OBJS += builtin-rev-list.o
-BUILTIN_OBJS += builtin-rev-parse.o
-BUILTIN_OBJS += builtin-revert.o
-BUILTIN_OBJS += builtin-rm.o
-BUILTIN_OBJS += builtin-send-pack.o
-BUILTIN_OBJS += builtin-shortlog.o
-BUILTIN_OBJS += builtin-show-branch.o
-BUILTIN_OBJS += builtin-show-ref.o
-BUILTIN_OBJS += builtin-stripspace.o
-BUILTIN_OBJS += builtin-symbolic-ref.o
-BUILTIN_OBJS += builtin-tag.o
-BUILTIN_OBJS += builtin-tar-tree.o
-BUILTIN_OBJS += builtin-unpack-file.o
-BUILTIN_OBJS += builtin-unpack-objects.o
-BUILTIN_OBJS += builtin-update-index.o
-BUILTIN_OBJS += builtin-update-ref.o
-BUILTIN_OBJS += builtin-update-server-info.o
-BUILTIN_OBJS += builtin-upload-archive.o
-BUILTIN_OBJS += builtin-var.o
-BUILTIN_OBJS += builtin-verify-pack.o
-BUILTIN_OBJS += builtin-verify-tag.o
-BUILTIN_OBJS += builtin-write-tree.o
+BUILTIN_OBJS += builtin/add.o
+BUILTIN_OBJS += builtin/annotate.o
+BUILTIN_OBJS += builtin/apply.o
+BUILTIN_OBJS += builtin/archive.o
+BUILTIN_OBJS += builtin/bisect--helper.o
+BUILTIN_OBJS += builtin/blame.o
+BUILTIN_OBJS += builtin/branch.o
+BUILTIN_OBJS += builtin/bundle.o
+BUILTIN_OBJS += builtin/cat-file.o
+BUILTIN_OBJS += builtin/check-attr.o
+BUILTIN_OBJS += builtin/check-ref-format.o
+BUILTIN_OBJS += builtin/checkout-index.o
+BUILTIN_OBJS += builtin/checkout.o
+BUILTIN_OBJS += builtin/clean.o
+BUILTIN_OBJS += builtin/clone.o
+BUILTIN_OBJS += builtin/commit-tree.o
+BUILTIN_OBJS += builtin/commit.o
+BUILTIN_OBJS += builtin/config.o
+BUILTIN_OBJS += builtin/count-objects.o
+BUILTIN_OBJS += builtin/describe.o
+BUILTIN_OBJS += builtin/diff-files.o
+BUILTIN_OBJS += builtin/diff-index.o
+BUILTIN_OBJS += builtin/diff-tree.o
+BUILTIN_OBJS += builtin/diff.o
+BUILTIN_OBJS += builtin/fast-export.o
+BUILTIN_OBJS += builtin/fetch-pack.o
+BUILTIN_OBJS += builtin/fetch.o
+BUILTIN_OBJS += builtin/fmt-merge-msg.o
+BUILTIN_OBJS += builtin/for-each-ref.o
+BUILTIN_OBJS += builtin/fsck.o
+BUILTIN_OBJS += builtin/gc.o
+BUILTIN_OBJS += builtin/grep.o
+BUILTIN_OBJS += builtin/hash-object.o
+BUILTIN_OBJS += builtin/help.o
+BUILTIN_OBJS += builtin/index-pack.o
+BUILTIN_OBJS += builtin/init-db.o
+BUILTIN_OBJS += builtin/log.o
+BUILTIN_OBJS += builtin/ls-files.o
+BUILTIN_OBJS += builtin/ls-remote.o
+BUILTIN_OBJS += builtin/ls-tree.o
+BUILTIN_OBJS += builtin/mailinfo.o
+BUILTIN_OBJS += builtin/mailsplit.o
+BUILTIN_OBJS += builtin/merge.o
+BUILTIN_OBJS += builtin/merge-base.o
+BUILTIN_OBJS += builtin/merge-file.o
+BUILTIN_OBJS += builtin/merge-index.o
+BUILTIN_OBJS += builtin/merge-ours.o
+BUILTIN_OBJS += builtin/merge-recursive.o
+BUILTIN_OBJS += builtin/merge-tree.o
+BUILTIN_OBJS += builtin/mktag.o
+BUILTIN_OBJS += builtin/mktree.o
+BUILTIN_OBJS += builtin/mv.o
+BUILTIN_OBJS += builtin/name-rev.o
+BUILTIN_OBJS += builtin/pack-objects.o
+BUILTIN_OBJS += builtin/pack-redundant.o
+BUILTIN_OBJS += builtin/pack-refs.o
+BUILTIN_OBJS += builtin/patch-id.o
+BUILTIN_OBJS += builtin/prune-packed.o
+BUILTIN_OBJS += builtin/prune.o
+BUILTIN_OBJS += builtin/push.o
+BUILTIN_OBJS += builtin/read-tree.o
+BUILTIN_OBJS += builtin/receive-pack.o
+BUILTIN_OBJS += builtin/reflog.o
+BUILTIN_OBJS += builtin/remote.o
+BUILTIN_OBJS += builtin/replace.o
+BUILTIN_OBJS += builtin/rerere.o
+BUILTIN_OBJS += builtin/reset.o
+BUILTIN_OBJS += builtin/rev-list.o
+BUILTIN_OBJS += builtin/rev-parse.o
+BUILTIN_OBJS += builtin/revert.o
+BUILTIN_OBJS += builtin/rm.o
+BUILTIN_OBJS += builtin/send-pack.o
+BUILTIN_OBJS += builtin/shortlog.o
+BUILTIN_OBJS += builtin/show-branch.o
+BUILTIN_OBJS += builtin/show-ref.o
+BUILTIN_OBJS += builtin/stripspace.o
+BUILTIN_OBJS += builtin/symbolic-ref.o
+BUILTIN_OBJS += builtin/tag.o
+BUILTIN_OBJS += builtin/tar-tree.o
+BUILTIN_OBJS += builtin/unpack-file.o
+BUILTIN_OBJS += builtin/unpack-objects.o
+BUILTIN_OBJS += builtin/update-index.o
+BUILTIN_OBJS += builtin/update-ref.o
+BUILTIN_OBJS += builtin/update-server-info.o
+BUILTIN_OBJS += builtin/upload-archive.o
+BUILTIN_OBJS += builtin/var.o
+BUILTIN_OBJS += builtin/verify-pack.o
+BUILTIN_OBJS += builtin/verify-tag.o
+BUILTIN_OBJS += builtin/write-tree.o
 
 GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
 EXTLIBS =
@@ -1445,8 +1445,8 @@ git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)
  $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \
  $(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)
 
-builtin-help.o: common-cmds.h
-builtin-help.s builtin-help.o: ALL_CFLAGS += \
+builtin/help.o: common-cmds.h
+builtin/help.s builtin/help.o: ALL_CFLAGS += \
  '-DGIT_HTML_PATH="$(htmldir_SQ)"' \
  '-DGIT_MAN_PATH="$(mandir_SQ)"' \
  '-DGIT_INFO_PATH="$(infodir_SQ)"'
@@ -1594,7 +1594,7 @@ exec_cmd.s exec_cmd.o: ALL_CFLAGS += \
  '-DBINDIR="$(bindir_relative_SQ)"' \
  '-DPREFIX="$(prefix_SQ)"'
 
-builtin-init-db.s builtin-init-db.o: ALL_CFLAGS += \
+builtin/init-db.s builtin/init-db.o: ALL_CFLAGS += \
  -DDEFAULT_GIT_TEMPLATE_DIR='"$(template_dir_SQ)"'
 
 config.s config.o: ALL_CFLAGS += -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"'
@@ -1636,7 +1636,7 @@ $(REMOTE_CURL_PRIMARY): remote-curl.o http.o http-walker.o $(GITLIBS)
 
 $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)
 $(patsubst git-%$X,%.o,$(PROGRAMS)) git.o: $(LIB_H) $(wildcard */*.h)
-builtin-revert.o wt-status.o: wt-status.h
+builtin/revert.o wt-status.o: wt-status.h
 
 $(LIB_FILE): $(LIB_OBJS)
  $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)
diff --git a/builtin-add.c b/builtin/add.c
similarity index 100%
rename from builtin-add.c
rename to builtin/add.c
diff --git a/builtin-annotate.c b/builtin/annotate.c
similarity index 100%
rename from builtin-annotate.c
rename to builtin/annotate.c
diff --git a/builtin-apply.c b/builtin/apply.c
similarity index 100%
rename from builtin-apply.c
rename to builtin/apply.c
diff --git a/builtin-archive.c b/builtin/archive.c
similarity index 100%
rename from builtin-archive.c
rename to builtin/archive.c
diff --git a/builtin-bisect--helper.c b/builtin/bisect--helper.c
similarity index 100%
rename from builtin-bisect--helper.c
rename to builtin/bisect--helper.c
diff --git a/builtin-blame.c b/builtin/blame.c
similarity index 100%
rename from builtin-blame.c
rename to builtin/blame.c
diff --git a/builtin-branch.c b/builtin/branch.c
similarity index 100%
rename from builtin-branch.c
rename to builtin/branch.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/builtin-bundle.c b/builtin/bundle.c
similarity index 100%
rename from builtin-bundle.c
rename to builtin/bundle.c
diff --git a/builtin-cat-file.c b/builtin/cat-file.c
similarity index 100%
rename from builtin-cat-file.c
rename to builtin/cat-file.c
diff --git a/builtin-check-attr.c b/builtin/check-attr.c
similarity index 100%
rename from builtin-check-attr.c
rename to builtin/check-attr.c
diff --git a/builtin-check-ref-format.c b/builtin/check-ref-format.c
similarity index 100%
rename from builtin-check-ref-format.c
rename to builtin/check-ref-format.c
diff --git a/builtin-checkout-index.c b/builtin/checkout-index.c
similarity index 100%
rename from builtin-checkout-index.c
rename to builtin/checkout-index.c
diff --git a/builtin-checkout.c b/builtin/checkout.c
similarity index 100%
rename from builtin-checkout.c
rename to builtin/checkout.c
diff --git a/builtin-clean.c b/builtin/clean.c
similarity index 100%
rename from builtin-clean.c
rename to builtin/clean.c
diff --git a/builtin-clone.c b/builtin/clone.c
similarity index 100%
rename from builtin-clone.c
rename to builtin/clone.c
diff --git a/builtin-commit-tree.c b/builtin/commit-tree.c
similarity index 100%
rename from builtin-commit-tree.c
rename to builtin/commit-tree.c
diff --git a/builtin-commit.c b/builtin/commit.c
similarity index 100%
rename from builtin-commit.c
rename to builtin/commit.c
diff --git a/builtin-config.c b/builtin/config.c
similarity index 100%
rename from builtin-config.c
rename to builtin/config.c
diff --git a/builtin-count-objects.c b/builtin/count-objects.c
similarity index 100%
rename from builtin-count-objects.c
rename to builtin/count-objects.c
diff --git a/builtin-describe.c b/builtin/describe.c
similarity index 100%
rename from builtin-describe.c
rename to builtin/describe.c
diff --git a/builtin-diff-files.c b/builtin/diff-files.c
similarity index 100%
rename from builtin-diff-files.c
rename to builtin/diff-files.c
diff --git a/builtin-diff-index.c b/builtin/diff-index.c
similarity index 100%
rename from builtin-diff-index.c
rename to builtin/diff-index.c
diff --git a/builtin-diff-tree.c b/builtin/diff-tree.c
similarity index 100%
rename from builtin-diff-tree.c
rename to builtin/diff-tree.c
diff --git a/builtin-diff.c b/builtin/diff.c
similarity index 100%
rename from builtin-diff.c
rename to builtin/diff.c
diff --git a/builtin-fast-export.c b/builtin/fast-export.c
similarity index 100%
rename from builtin-fast-export.c
rename to builtin/fast-export.c
diff --git a/builtin-fetch-pack.c b/builtin/fetch-pack.c
similarity index 100%
rename from builtin-fetch-pack.c
rename to builtin/fetch-pack.c
diff --git a/builtin-fetch.c b/builtin/fetch.c
similarity index 100%
rename from builtin-fetch.c
rename to builtin/fetch.c
diff --git a/builtin-fmt-merge-msg.c b/builtin/fmt-merge-msg.c
similarity index 100%
rename from builtin-fmt-merge-msg.c
rename to builtin/fmt-merge-msg.c
diff --git a/builtin-for-each-ref.c b/builtin/for-each-ref.c
similarity index 100%
rename from builtin-for-each-ref.c
rename to builtin/for-each-ref.c
diff --git a/builtin-fsck.c b/builtin/fsck.c
similarity index 100%
rename from builtin-fsck.c
rename to builtin/fsck.c
diff --git a/builtin-gc.c b/builtin/gc.c
similarity index 100%
rename from builtin-gc.c
rename to builtin/gc.c
diff --git a/builtin-grep.c b/builtin/grep.c
similarity index 100%
rename from builtin-grep.c
rename to builtin/grep.c
diff --git a/builtin-hash-object.c b/builtin/hash-object.c
similarity index 100%
rename from builtin-hash-object.c
rename to builtin/hash-object.c
diff --git a/builtin-help.c b/builtin/help.c
similarity index 100%
rename from builtin-help.c
rename to builtin/help.c
diff --git a/builtin-index-pack.c b/builtin/index-pack.c
similarity index 100%
rename from builtin-index-pack.c
rename to builtin/index-pack.c
diff --git a/builtin-init-db.c b/builtin/init-db.c
similarity index 100%
rename from builtin-init-db.c
rename to builtin/init-db.c
diff --git a/builtin-log.c b/builtin/log.c
similarity index 100%
rename from builtin-log.c
rename to builtin/log.c
diff --git a/builtin-ls-files.c b/builtin/ls-files.c
similarity index 100%
rename from builtin-ls-files.c
rename to builtin/ls-files.c
diff --git a/builtin-ls-remote.c b/builtin/ls-remote.c
similarity index 100%
rename from builtin-ls-remote.c
rename to builtin/ls-remote.c
diff --git a/builtin-ls-tree.c b/builtin/ls-tree.c
similarity index 100%
rename from builtin-ls-tree.c
rename to builtin/ls-tree.c
diff --git a/builtin-mailinfo.c b/builtin/mailinfo.c
similarity index 100%
rename from builtin-mailinfo.c
rename to builtin/mailinfo.c
diff --git a/builtin-mailsplit.c b/builtin/mailsplit.c
similarity index 100%
rename from builtin-mailsplit.c
rename to builtin/mailsplit.c
diff --git a/builtin-merge-base.c b/builtin/merge-base.c
similarity index 100%
rename from builtin-merge-base.c
rename to builtin/merge-base.c
diff --git a/builtin-merge-file.c b/builtin/merge-file.c
similarity index 100%
rename from builtin-merge-file.c
rename to builtin/merge-file.c
diff --git a/builtin-merge-index.c b/builtin/merge-index.c
similarity index 100%
rename from builtin-merge-index.c
rename to builtin/merge-index.c
diff --git a/builtin-merge-ours.c b/builtin/merge-ours.c
similarity index 100%
rename from builtin-merge-ours.c
rename to builtin/merge-ours.c
diff --git a/builtin-merge-recursive.c b/builtin/merge-recursive.c
similarity index 100%
rename from builtin-merge-recursive.c
rename to builtin/merge-recursive.c
diff --git a/builtin-merge-tree.c b/builtin/merge-tree.c
similarity index 100%
rename from builtin-merge-tree.c
rename to builtin/merge-tree.c
diff --git a/builtin-merge.c b/builtin/merge.c
similarity index 100%
rename from builtin-merge.c
rename to builtin/merge.c
diff --git a/builtin-mktag.c b/builtin/mktag.c
similarity index 100%
rename from builtin-mktag.c
rename to builtin/mktag.c
diff --git a/builtin-mktree.c b/builtin/mktree.c
similarity index 100%
rename from builtin-mktree.c
rename to builtin/mktree.c
diff --git a/builtin-mv.c b/builtin/mv.c
similarity index 100%
rename from builtin-mv.c
rename to builtin/mv.c
diff --git a/builtin-name-rev.c b/builtin/name-rev.c
similarity index 100%
rename from builtin-name-rev.c
rename to builtin/name-rev.c
diff --git a/builtin-pack-objects.c b/builtin/pack-objects.c
similarity index 100%
rename from builtin-pack-objects.c
rename to builtin/pack-objects.c
diff --git a/builtin-pack-redundant.c b/builtin/pack-redundant.c
similarity index 100%
rename from builtin-pack-redundant.c
rename to builtin/pack-redundant.c
diff --git a/builtin-pack-refs.c b/builtin/pack-refs.c
similarity index 100%
rename from builtin-pack-refs.c
rename to builtin/pack-refs.c
diff --git a/builtin-patch-id.c b/builtin/patch-id.c
similarity index 100%
rename from builtin-patch-id.c
rename to builtin/patch-id.c
diff --git a/builtin-prune-packed.c b/builtin/prune-packed.c
similarity index 100%
rename from builtin-prune-packed.c
rename to builtin/prune-packed.c
diff --git a/builtin-prune.c b/builtin/prune.c
similarity index 100%
rename from builtin-prune.c
rename to builtin/prune.c
diff --git a/builtin-push.c b/builtin/push.c
similarity index 100%
rename from builtin-push.c
rename to builtin/push.c
diff --git a/builtin-read-tree.c b/builtin/read-tree.c
similarity index 100%
rename from builtin-read-tree.c
rename to builtin/read-tree.c
diff --git a/builtin-receive-pack.c b/builtin/receive-pack.c
similarity index 100%
rename from builtin-receive-pack.c
rename to builtin/receive-pack.c
diff --git a/builtin-reflog.c b/builtin/reflog.c
similarity index 100%
rename from builtin-reflog.c
rename to builtin/reflog.c
diff --git a/builtin-remote.c b/builtin/remote.c
similarity index 100%
rename from builtin-remote.c
rename to builtin/remote.c
diff --git a/builtin-replace.c b/builtin/replace.c
similarity index 100%
rename from builtin-replace.c
rename to builtin/replace.c
diff --git a/builtin-rerere.c b/builtin/rerere.c
similarity index 100%
rename from builtin-rerere.c
rename to builtin/rerere.c
diff --git a/builtin-reset.c b/builtin/reset.c
similarity index 100%
rename from builtin-reset.c
rename to builtin/reset.c
diff --git a/builtin-rev-list.c b/builtin/rev-list.c
similarity index 100%
rename from builtin-rev-list.c
rename to builtin/rev-list.c
diff --git a/builtin-rev-parse.c b/builtin/rev-parse.c
similarity index 100%
rename from builtin-rev-parse.c
rename to builtin/rev-parse.c
diff --git a/builtin-revert.c b/builtin/revert.c
similarity index 100%
rename from builtin-revert.c
rename to builtin/revert.c
diff --git a/builtin-rm.c b/builtin/rm.c
similarity index 100%
rename from builtin-rm.c
rename to builtin/rm.c
diff --git a/builtin-send-pack.c b/builtin/send-pack.c
similarity index 100%
rename from builtin-send-pack.c
rename to builtin/send-pack.c
diff --git a/builtin-shortlog.c b/builtin/shortlog.c
similarity index 100%
rename from builtin-shortlog.c
rename to builtin/shortlog.c
diff --git a/builtin-show-branch.c b/builtin/show-branch.c
similarity index 100%
rename from builtin-show-branch.c
rename to builtin/show-branch.c
diff --git a/builtin-show-ref.c b/builtin/show-ref.c
similarity index 100%
rename from builtin-show-ref.c
rename to builtin/show-ref.c
diff --git a/builtin-stripspace.c b/builtin/stripspace.c
similarity index 100%
rename from builtin-stripspace.c
rename to builtin/stripspace.c
diff --git a/builtin-symbolic-ref.c b/builtin/symbolic-ref.c
similarity index 100%
rename from builtin-symbolic-ref.c
rename to builtin/symbolic-ref.c
diff --git a/builtin-tag.c b/builtin/tag.c
similarity index 100%
rename from builtin-tag.c
rename to builtin/tag.c
diff --git a/builtin-tar-tree.c b/builtin/tar-tree.c
similarity index 100%
rename from builtin-tar-tree.c
rename to builtin/tar-tree.c
diff --git a/builtin-unpack-file.c b/builtin/unpack-file.c
similarity index 100%
rename from builtin-unpack-file.c
rename to builtin/unpack-file.c
diff --git a/builtin-unpack-objects.c b/builtin/unpack-objects.c
similarity index 100%
rename from builtin-unpack-objects.c
rename to builtin/unpack-objects.c
diff --git a/builtin-update-index.c b/builtin/update-index.c
similarity index 100%
rename from builtin-update-index.c
rename to builtin/update-index.c
diff --git a/builtin-update-ref.c b/builtin/update-ref.c
similarity index 100%
rename from builtin-update-ref.c
rename to builtin/update-ref.c
diff --git a/builtin-update-server-info.c b/builtin/update-server-info.c
similarity index 100%
rename from builtin-update-server-info.c
rename to builtin/update-server-info.c
diff --git a/builtin-upload-archive.c b/builtin/upload-archive.c
similarity index 100%
rename from builtin-upload-archive.c
rename to builtin/upload-archive.c
diff --git a/builtin-var.c b/builtin/var.c
similarity index 100%
rename from builtin-var.c
rename to builtin/var.c
diff --git a/builtin-verify-pack.c b/builtin/verify-pack.c
similarity index 100%
rename from builtin-verify-pack.c
rename to builtin/verify-pack.c
diff --git a/builtin-verify-tag.c b/builtin/verify-tag.c
similarity index 100%
rename from builtin-verify-tag.c
rename to builtin/verify-tag.c
diff --git a/builtin-write-tree.c b/builtin/write-tree.c
similarity index 100%
rename from builtin-write-tree.c
rename to builtin/write-tree.c
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Junio C Hamano
Linus Torvalds <[hidden email]> writes:

> I think this coul probably be done differently (I'm not proud of that ugly
> '-I. -Ibuiltin' addition to the CFLAGS, for example), and I think there
> are _other_ things we could also try to do to move files into
> subdirectories, but this was a fairly easy thing to basically script.
>
> What do people think?

I personally like the general direction you are going.  One minor detail I
do not know about is whether to move "builtin.h" with others, or leave it
at the top.  Also I don't particularly find "-I. -Ibuiltin/" ugly.  It
would make sense to use "-I." and rewrite our '#include "xyzzy.h"' into
'#include <xyzzy.h>' even if we were not doing this change.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Avery Pennarun
On Thu, Feb 18, 2010 at 3:24 PM, Junio C Hamano <[hidden email]> wrote:

> Linus Torvalds <[hidden email]> writes:
>> I think this coul probably be done differently (I'm not proud of that ugly
>> '-I. -Ibuiltin' addition to the CFLAGS, for example), and I think there
>> are _other_ things we could also try to do to move files into
>> subdirectories, but this was a fairly easy thing to basically script.
>>
>> What do people think?
>
> I personally like the general direction you are going.  One minor detail I
> do not know about is whether to move "builtin.h" with others, or leave it
> at the top.

If you don't move it, then it'll continue to interfere with
autocompletion.  Though maybe that's not a good enough reason :)

Have fun,

Avery
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Linus Torvalds-3
In reply to this post by Junio C Hamano


On Thu, 18 Feb 2010, Junio C Hamano wrote:
>
> I personally like the general direction you are going.  One minor detail I
> do not know about is whether to move "builtin.h" with others, or leave it
> at the top.  Also I don't particularly find "-I. -Ibuiltin/" ugly.  It
> would make sense to use "-I." and rewrite our '#include "xyzzy.h"' into
> '#include <xyzzy.h>' even if we were not doing this change.

I was actually thinking of just changing everybody to use

        -#include "builtin.h"
        +#include "builtin/cmd.h"

and I even did that with a sed script, but then the renames aren't pure
renames any more, so I decided that in order to make the patch be a
minimal rename thing, that would be a second phase.

                Linus


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Linus Torvalds-3
In reply to this post by Avery Pennarun


On Thu, 18 Feb 2010, Avery Pennarun wrote:
>
> If you don't move it, then it'll continue to interfere with
> autocompletion.  Though maybe that's not a good enough reason :)

Yeah, that's not a huge deal. We have other files that share prefixes. The
"builtin-" prefix was just _so_ common as to really screw up
auto-completion in a big way.

So the reason for moving builtin.h was simply that _most_ of the users are
the builtin headers themselves (and as mentioned, I was thinking of
making it builtin/cmd.h but avoided it to keep the patch size down).

                Linus
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Christian MICHON
In reply to this post by Linus Torvalds-3
On Thu, Feb 18, 2010 at 7:36 PM, Linus Torvalds
<[hidden email]> wrote:
>
> Ok, this is just a request-for-discussion. I'm trying out a patch like
> this, and I think it's a step in the right direction. The git directory
> structure is _very_ flat, and currently in a fully built git tree, the
> top-level directory has something like 750 files in it.
>
> After this, it still has a ton of files, but it has shrunk to ~575 files
> instead, and at least for my (admittedly somewhat odd) setup, that
> actually matters for auto-completion etc.

maybe rather than just autocompletion, it does help new code to land
in the right place ? I think just for this reason at least it's a good
move.

I've a wild idea on a new command to add to git and I was pondering
between having it as a perl script or a builtin. Now I know where it
should go if I choose a builtin, provided you get a wide consensus.

> which doesn't seem all that different, but not having that annoying
> break in "Display all 180 possibilities?" is quite a relief.
>
> NOTE! If you do this in a clean tree (no object files etc), or using an
> editor that has auto-completion rules that ignores '*.o' files, you
> won't see that annoying 'Display all 180 possibilities?' message - it
> will just show the choices instead.  I think bash has some cut-off
> around 100 choices or something.

odd. On my msysgit setup and bash 3.1, I get this on a clean tree:

$ ls builtin<tab>
Display all 90 possibilities? (y or n)

But hey, this is on Windows, so we should not bother :-)

--
Christian
--
http://detaolb.sourceforge.net/, a linux distribution for Qemu with Git inside !
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Pavan Kumar Sunkara
>
> maybe rather than just autocompletion, it does help new code to land
> in the right place ? I think just for this reason at least it's a good
> move.
>
> I've a wild idea on a new command to add to git and I was pondering
> between having it as a perl script or a builtin. Now I know where it
> should go if I choose a builtin, provided you get a wide consensus.
>

I agree with this. This will be very good to guys who want to start
understanding the code completely
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Linus Torvalds-3
In reply to this post by Linus Torvalds-3


Btw, here's a new version of this without the 'builtin.h' rename. This was
basically created with:

        for i in builtin-*; do git mv $i $(echo $i | sed 's:builtin-:builtin/:'); done
        sed 's:builtin-:builtin/:' Makefile > Makefile.new
        mv Makefile.new Makefile
         ... add '-I.' to BASIC_FLAGS in 'Makefile' ...
        git commit -a

and it leaves the issue of what to do with the header files for later.

For example, maybe somebody would want to split up the makefile so that
the 'builtin' subdirectory gets built all on its own. In which case you'd
do a "-I.." there instead. Or maybe somebody wants to move the header
files to a directory of their own, separate from either the regular C
files _and_ the builtin commands.

So to not even weigh in on that whole discussion, this _just_ moves the
builtin-* files, and adds the currently minimal "-I." to the makefile.

                        Linus
---
From dc996ed626408db548cea7e7ed20186da735d558 Mon Sep 17 00:00:00 2001
From: Linus Torvalds <[hidden email]>
Date: Thu, 18 Feb 2010 10:11:32 -0800
Subject: [PATCH] Move 'builtin-*' into a 'builtin/' subdirectory

This shrinks the top-level directory a bit, and makes it much more
pleasant to use auto-completion on the thing. Instead of

        [torvalds@nehalem git]$ em buil<tab>
        Display all 180 possibilities? (y or n)
        [torvalds@nehalem git]$ em builtin-sh
        builtin-shortlog.c     builtin-show-branch.c  builtin-show-ref.c
        builtin-shortlog.o     builtin-show-branch.o  builtin-show-ref.o
        [torvalds@nehalem git]$ em builtin-shor<tab>
        builtin-shortlog.c  builtin-shortlog.o
        [torvalds@nehalem git]$ em builtin-shortlog.c

you get

        [torvalds@nehalem git]$ em buil<tab> [type]
        builtin/   builtin.h
        [torvalds@nehalem git]$ em builtin [auto-completes to]
        [torvalds@nehalem git]$ em builtin/sh<tab> [type]
        shortlog.c     shortlog.o     show-branch.c  show-branch.o  show-ref.c     show-ref.o
        [torvalds@nehalem git]$ em builtin/sho [auto-completes to]
        [torvalds@nehalem git]$ em builtin/shor<tab> [type]
        shortlog.c  shortlog.o
        [torvalds@nehalem git]$ em builtin/shortlog.c

which doesn't seem all that different, but not having that annoying
break in "Display all 180 possibilities?" is quite a relief.

NOTE! If you do this in a clean tree (no object files etc), or using an
editor that has auto-completion rules that ignores '*.o' files, you
won't see that annoying 'Display all 180 possibilities?' message - it
will just show the choices instead.  I think bash has some cut-off
around 100 choices or something.

So the reason I see this is that I'm using an odd editory, and thus
don't have the rules to cut down on auto-completion.  But you can
simulate that by using 'ls' instead, or something similar.

Signed-off-by: Linus Torvalds <[hidden email]>
---
 Makefile                                           |  192 ++++++++++----------
 builtin-add.c => builtin/add.c                     |    0
 builtin-annotate.c => builtin/annotate.c           |    0
 builtin-apply.c => builtin/apply.c                 |    0
 builtin-archive.c => builtin/archive.c             |    0
 .../bisect--helper.c                               |    0
 builtin-blame.c => builtin/blame.c                 |    0
 builtin-branch.c => builtin/branch.c               |    0
 builtin-bundle.c => builtin/bundle.c               |    0
 builtin-cat-file.c => builtin/cat-file.c           |    0
 builtin-check-attr.c => builtin/check-attr.c       |    0
 .../check-ref-format.c                             |    0
 .../checkout-index.c                               |    0
 builtin-checkout.c => builtin/checkout.c           |    0
 builtin-clean.c => builtin/clean.c                 |    0
 builtin-clone.c => builtin/clone.c                 |    0
 builtin-commit-tree.c => builtin/commit-tree.c     |    0
 builtin-commit.c => builtin/commit.c               |    0
 builtin-config.c => builtin/config.c               |    0
 builtin-count-objects.c => builtin/count-objects.c |    0
 builtin-describe.c => builtin/describe.c           |    0
 builtin-diff-files.c => builtin/diff-files.c       |    0
 builtin-diff-index.c => builtin/diff-index.c       |    0
 builtin-diff-tree.c => builtin/diff-tree.c         |    0
 builtin-diff.c => builtin/diff.c                   |    0
 builtin-fast-export.c => builtin/fast-export.c     |    0
 builtin-fetch-pack.c => builtin/fetch-pack.c       |    0
 builtin-fetch.c => builtin/fetch.c                 |    0
 builtin-fmt-merge-msg.c => builtin/fmt-merge-msg.c |    0
 builtin-for-each-ref.c => builtin/for-each-ref.c   |    0
 builtin-fsck.c => builtin/fsck.c                   |    0
 builtin-gc.c => builtin/gc.c                       |    0
 builtin-grep.c => builtin/grep.c                   |    0
 builtin-hash-object.c => builtin/hash-object.c     |    0
 builtin-help.c => builtin/help.c                   |    0
 builtin-index-pack.c => builtin/index-pack.c       |    0
 builtin-init-db.c => builtin/init-db.c             |    0
 builtin-log.c => builtin/log.c                     |    0
 builtin-ls-files.c => builtin/ls-files.c           |    0
 builtin-ls-remote.c => builtin/ls-remote.c         |    0
 builtin-ls-tree.c => builtin/ls-tree.c             |    0
 builtin-mailinfo.c => builtin/mailinfo.c           |    0
 builtin-mailsplit.c => builtin/mailsplit.c         |    0
 builtin-merge-base.c => builtin/merge-base.c       |    0
 builtin-merge-file.c => builtin/merge-file.c       |    0
 builtin-merge-index.c => builtin/merge-index.c     |    0
 builtin-merge-ours.c => builtin/merge-ours.c       |    0
 .../merge-recursive.c                              |    0
 builtin-merge-tree.c => builtin/merge-tree.c       |    0
 builtin-merge.c => builtin/merge.c                 |    0
 builtin-mktag.c => builtin/mktag.c                 |    0
 builtin-mktree.c => builtin/mktree.c               |    0
 builtin-mv.c => builtin/mv.c                       |    0
 builtin-name-rev.c => builtin/name-rev.c           |    0
 builtin-pack-objects.c => builtin/pack-objects.c   |    0
 .../pack-redundant.c                               |    0
 builtin-pack-refs.c => builtin/pack-refs.c         |    0
 builtin-patch-id.c => builtin/patch-id.c           |    0
 builtin-prune-packed.c => builtin/prune-packed.c   |    0
 builtin-prune.c => builtin/prune.c                 |    0
 builtin-push.c => builtin/push.c                   |    0
 builtin-read-tree.c => builtin/read-tree.c         |    0
 builtin-receive-pack.c => builtin/receive-pack.c   |    0
 builtin-reflog.c => builtin/reflog.c               |    0
 builtin-remote.c => builtin/remote.c               |    0
 builtin-replace.c => builtin/replace.c             |    0
 builtin-rerere.c => builtin/rerere.c               |    0
 builtin-reset.c => builtin/reset.c                 |    0
 builtin-rev-list.c => builtin/rev-list.c           |    0
 builtin-rev-parse.c => builtin/rev-parse.c         |    0
 builtin-revert.c => builtin/revert.c               |    0
 builtin-rm.c => builtin/rm.c                       |    0
 builtin-send-pack.c => builtin/send-pack.c         |    0
 builtin-shortlog.c => builtin/shortlog.c           |    0
 builtin-show-branch.c => builtin/show-branch.c     |    0
 builtin-show-ref.c => builtin/show-ref.c           |    0
 builtin-stripspace.c => builtin/stripspace.c       |    0
 builtin-symbolic-ref.c => builtin/symbolic-ref.c   |    0
 builtin-tag.c => builtin/tag.c                     |    0
 builtin-tar-tree.c => builtin/tar-tree.c           |    0
 builtin-unpack-file.c => builtin/unpack-file.c     |    0
 .../unpack-objects.c                               |    0
 builtin-update-index.c => builtin/update-index.c   |    0
 builtin-update-ref.c => builtin/update-ref.c       |    0
 .../update-server-info.c                           |    0
 .../upload-archive.c                               |    0
 builtin-var.c => builtin/var.c                     |    0
 builtin-verify-pack.c => builtin/verify-pack.c     |    0
 builtin-verify-tag.c => builtin/verify-tag.c       |    0
 builtin-write-tree.c => builtin/write-tree.c       |    0
 90 files changed, 96 insertions(+), 96 deletions(-)
 rename builtin-add.c => builtin/add.c (100%)
 rename builtin-annotate.c => builtin/annotate.c (100%)
 rename builtin-apply.c => builtin/apply.c (100%)
 rename builtin-archive.c => builtin/archive.c (100%)
 rename builtin-bisect--helper.c => builtin/bisect--helper.c (100%)
 rename builtin-blame.c => builtin/blame.c (100%)
 rename builtin-branch.c => builtin/branch.c (100%)
 rename builtin-bundle.c => builtin/bundle.c (100%)
 rename builtin-cat-file.c => builtin/cat-file.c (100%)
 rename builtin-check-attr.c => builtin/check-attr.c (100%)
 rename builtin-check-ref-format.c => builtin/check-ref-format.c (100%)
 rename builtin-checkout-index.c => builtin/checkout-index.c (100%)
 rename builtin-checkout.c => builtin/checkout.c (100%)
 rename builtin-clean.c => builtin/clean.c (100%)
 rename builtin-clone.c => builtin/clone.c (100%)
 rename builtin-commit-tree.c => builtin/commit-tree.c (100%)
 rename builtin-commit.c => builtin/commit.c (100%)
 rename builtin-config.c => builtin/config.c (100%)
 rename builtin-count-objects.c => builtin/count-objects.c (100%)
 rename builtin-describe.c => builtin/describe.c (100%)
 rename builtin-diff-files.c => builtin/diff-files.c (100%)
 rename builtin-diff-index.c => builtin/diff-index.c (100%)
 rename builtin-diff-tree.c => builtin/diff-tree.c (100%)
 rename builtin-diff.c => builtin/diff.c (100%)
 rename builtin-fast-export.c => builtin/fast-export.c (100%)
 rename builtin-fetch-pack.c => builtin/fetch-pack.c (100%)
 rename builtin-fetch.c => builtin/fetch.c (100%)
 rename builtin-fmt-merge-msg.c => builtin/fmt-merge-msg.c (100%)
 rename builtin-for-each-ref.c => builtin/for-each-ref.c (100%)
 rename builtin-fsck.c => builtin/fsck.c (100%)
 rename builtin-gc.c => builtin/gc.c (100%)
 rename builtin-grep.c => builtin/grep.c (100%)
 rename builtin-hash-object.c => builtin/hash-object.c (100%)
 rename builtin-help.c => builtin/help.c (100%)
 rename builtin-index-pack.c => builtin/index-pack.c (100%)
 rename builtin-init-db.c => builtin/init-db.c (100%)
 rename builtin-log.c => builtin/log.c (100%)
 rename builtin-ls-files.c => builtin/ls-files.c (100%)
 rename builtin-ls-remote.c => builtin/ls-remote.c (100%)
 rename builtin-ls-tree.c => builtin/ls-tree.c (100%)
 rename builtin-mailinfo.c => builtin/mailinfo.c (100%)
 rename builtin-mailsplit.c => builtin/mailsplit.c (100%)
 rename builtin-merge-base.c => builtin/merge-base.c (100%)
 rename builtin-merge-file.c => builtin/merge-file.c (100%)
 rename builtin-merge-index.c => builtin/merge-index.c (100%)
 rename builtin-merge-ours.c => builtin/merge-ours.c (100%)
 rename builtin-merge-recursive.c => builtin/merge-recursive.c (100%)
 rename builtin-merge-tree.c => builtin/merge-tree.c (100%)
 rename builtin-merge.c => builtin/merge.c (100%)
 rename builtin-mktag.c => builtin/mktag.c (100%)
 rename builtin-mktree.c => builtin/mktree.c (100%)
 rename builtin-mv.c => builtin/mv.c (100%)
 rename builtin-name-rev.c => builtin/name-rev.c (100%)
 rename builtin-pack-objects.c => builtin/pack-objects.c (100%)
 rename builtin-pack-redundant.c => builtin/pack-redundant.c (100%)
 rename builtin-pack-refs.c => builtin/pack-refs.c (100%)
 rename builtin-patch-id.c => builtin/patch-id.c (100%)
 rename builtin-prune-packed.c => builtin/prune-packed.c (100%)
 rename builtin-prune.c => builtin/prune.c (100%)
 rename builtin-push.c => builtin/push.c (100%)
 rename builtin-read-tree.c => builtin/read-tree.c (100%)
 rename builtin-receive-pack.c => builtin/receive-pack.c (100%)
 rename builtin-reflog.c => builtin/reflog.c (100%)
 rename builtin-remote.c => builtin/remote.c (100%)
 rename builtin-replace.c => builtin/replace.c (100%)
 rename builtin-rerere.c => builtin/rerere.c (100%)
 rename builtin-reset.c => builtin/reset.c (100%)
 rename builtin-rev-list.c => builtin/rev-list.c (100%)
 rename builtin-rev-parse.c => builtin/rev-parse.c (100%)
 rename builtin-revert.c => builtin/revert.c (100%)
 rename builtin-rm.c => builtin/rm.c (100%)
 rename builtin-send-pack.c => builtin/send-pack.c (100%)
 rename builtin-shortlog.c => builtin/shortlog.c (100%)
 rename builtin-show-branch.c => builtin/show-branch.c (100%)
 rename builtin-show-ref.c => builtin/show-ref.c (100%)
 rename builtin-stripspace.c => builtin/stripspace.c (100%)
 rename builtin-symbolic-ref.c => builtin/symbolic-ref.c (100%)
 rename builtin-tag.c => builtin/tag.c (100%)
 rename builtin-tar-tree.c => builtin/tar-tree.c (100%)
 rename builtin-unpack-file.c => builtin/unpack-file.c (100%)
 rename builtin-unpack-objects.c => builtin/unpack-objects.c (100%)
 rename builtin-update-index.c => builtin/update-index.c (100%)
 rename builtin-update-ref.c => builtin/update-ref.c (100%)
 rename builtin-update-server-info.c => builtin/update-server-info.c (100%)
 rename builtin-upload-archive.c => builtin/upload-archive.c (100%)
 rename builtin-var.c => builtin/var.c (100%)
 rename builtin-verify-pack.c => builtin/verify-pack.c (100%)
 rename builtin-verify-tag.c => builtin/verify-tag.c (100%)
 rename builtin-write-tree.c => builtin/write-tree.c (100%)

diff --git a/Makefile b/Makefile
index afedb54..b7fcb92 100644
--- a/Makefile
+++ b/Makefile
@@ -301,7 +301,7 @@ SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__
 # Those must not be GNU-specific; they are shared with perl/ which may
 # be built by a different compiler. (Note that this is an artifact now
 # but it still might be nice to keep that distinction.)
-BASIC_CFLAGS =
+BASIC_CFLAGS = -I.
 BASIC_LDFLAGS =
 
 # Guard against environment variables
@@ -370,8 +370,8 @@ PROGRAMS += git-upload-pack$X
 PROGRAMS += git-http-backend$X
 
 # List built-in command $C whose implementation cmd_$C() is not in
-# builtin-$C.o but is linked in as part of some other command.
-BUILT_INS += $(patsubst builtin-%.o,git-%$X,$(BUILTIN_OBJS))
+# builtin/$C.o but is linked in as part of some other command.
+BUILT_INS += $(patsubst builtin/%.o,git-%$X,$(BUILTIN_OBJS))
 
 BUILT_INS += git-cherry$X
 BUILT_INS += git-cherry-pick$X
@@ -594,95 +594,95 @@ LIB_OBJS += ws.o
 LIB_OBJS += wt-status.o
 LIB_OBJS += xdiff-interface.o
 
-BUILTIN_OBJS += builtin-add.o
-BUILTIN_OBJS += builtin-annotate.o
-BUILTIN_OBJS += builtin-apply.o
-BUILTIN_OBJS += builtin-archive.o
-BUILTIN_OBJS += builtin-bisect--helper.o
-BUILTIN_OBJS += builtin-blame.o
-BUILTIN_OBJS += builtin-branch.o
-BUILTIN_OBJS += builtin-bundle.o
-BUILTIN_OBJS += builtin-cat-file.o
-BUILTIN_OBJS += builtin-check-attr.o
-BUILTIN_OBJS += builtin-check-ref-format.o
-BUILTIN_OBJS += builtin-checkout-index.o
-BUILTIN_OBJS += builtin-checkout.o
-BUILTIN_OBJS += builtin-clean.o
-BUILTIN_OBJS += builtin-clone.o
-BUILTIN_OBJS += builtin-commit-tree.o
-BUILTIN_OBJS += builtin-commit.o
-BUILTIN_OBJS += builtin-config.o
-BUILTIN_OBJS += builtin-count-objects.o
-BUILTIN_OBJS += builtin-describe.o
-BUILTIN_OBJS += builtin-diff-files.o
-BUILTIN_OBJS += builtin-diff-index.o
-BUILTIN_OBJS += builtin-diff-tree.o
-BUILTIN_OBJS += builtin-diff.o
-BUILTIN_OBJS += builtin-fast-export.o
-BUILTIN_OBJS += builtin-fetch-pack.o
-BUILTIN_OBJS += builtin-fetch.o
-BUILTIN_OBJS += builtin-fmt-merge-msg.o
-BUILTIN_OBJS += builtin-for-each-ref.o
-BUILTIN_OBJS += builtin-fsck.o
-BUILTIN_OBJS += builtin-gc.o
-BUILTIN_OBJS += builtin-grep.o
-BUILTIN_OBJS += builtin-hash-object.o
-BUILTIN_OBJS += builtin-help.o
-BUILTIN_OBJS += builtin-index-pack.o
-BUILTIN_OBJS += builtin-init-db.o
-BUILTIN_OBJS += builtin-log.o
-BUILTIN_OBJS += builtin-ls-files.o
-BUILTIN_OBJS += builtin-ls-remote.o
-BUILTIN_OBJS += builtin-ls-tree.o
-BUILTIN_OBJS += builtin-mailinfo.o
-BUILTIN_OBJS += builtin-mailsplit.o
-BUILTIN_OBJS += builtin-merge.o
-BUILTIN_OBJS += builtin-merge-base.o
-BUILTIN_OBJS += builtin-merge-file.o
-BUILTIN_OBJS += builtin-merge-index.o
-BUILTIN_OBJS += builtin-merge-ours.o
-BUILTIN_OBJS += builtin-merge-recursive.o
-BUILTIN_OBJS += builtin-merge-tree.o
-BUILTIN_OBJS += builtin-mktag.o
-BUILTIN_OBJS += builtin-mktree.o
-BUILTIN_OBJS += builtin-mv.o
-BUILTIN_OBJS += builtin-name-rev.o
-BUILTIN_OBJS += builtin-pack-objects.o
-BUILTIN_OBJS += builtin-pack-redundant.o
-BUILTIN_OBJS += builtin-pack-refs.o
-BUILTIN_OBJS += builtin-patch-id.o
-BUILTIN_OBJS += builtin-prune-packed.o
-BUILTIN_OBJS += builtin-prune.o
-BUILTIN_OBJS += builtin-push.o
-BUILTIN_OBJS += builtin-read-tree.o
-BUILTIN_OBJS += builtin-receive-pack.o
-BUILTIN_OBJS += builtin-reflog.o
-BUILTIN_OBJS += builtin-remote.o
-BUILTIN_OBJS += builtin-replace.o
-BUILTIN_OBJS += builtin-rerere.o
-BUILTIN_OBJS += builtin-reset.o
-BUILTIN_OBJS += builtin-rev-list.o
-BUILTIN_OBJS += builtin-rev-parse.o
-BUILTIN_OBJS += builtin-revert.o
-BUILTIN_OBJS += builtin-rm.o
-BUILTIN_OBJS += builtin-send-pack.o
-BUILTIN_OBJS += builtin-shortlog.o
-BUILTIN_OBJS += builtin-show-branch.o
-BUILTIN_OBJS += builtin-show-ref.o
-BUILTIN_OBJS += builtin-stripspace.o
-BUILTIN_OBJS += builtin-symbolic-ref.o
-BUILTIN_OBJS += builtin-tag.o
-BUILTIN_OBJS += builtin-tar-tree.o
-BUILTIN_OBJS += builtin-unpack-file.o
-BUILTIN_OBJS += builtin-unpack-objects.o
-BUILTIN_OBJS += builtin-update-index.o
-BUILTIN_OBJS += builtin-update-ref.o
-BUILTIN_OBJS += builtin-update-server-info.o
-BUILTIN_OBJS += builtin-upload-archive.o
-BUILTIN_OBJS += builtin-var.o
-BUILTIN_OBJS += builtin-verify-pack.o
-BUILTIN_OBJS += builtin-verify-tag.o
-BUILTIN_OBJS += builtin-write-tree.o
+BUILTIN_OBJS += builtin/add.o
+BUILTIN_OBJS += builtin/annotate.o
+BUILTIN_OBJS += builtin/apply.o
+BUILTIN_OBJS += builtin/archive.o
+BUILTIN_OBJS += builtin/bisect--helper.o
+BUILTIN_OBJS += builtin/blame.o
+BUILTIN_OBJS += builtin/branch.o
+BUILTIN_OBJS += builtin/bundle.o
+BUILTIN_OBJS += builtin/cat-file.o
+BUILTIN_OBJS += builtin/check-attr.o
+BUILTIN_OBJS += builtin/check-ref-format.o
+BUILTIN_OBJS += builtin/checkout-index.o
+BUILTIN_OBJS += builtin/checkout.o
+BUILTIN_OBJS += builtin/clean.o
+BUILTIN_OBJS += builtin/clone.o
+BUILTIN_OBJS += builtin/commit-tree.o
+BUILTIN_OBJS += builtin/commit.o
+BUILTIN_OBJS += builtin/config.o
+BUILTIN_OBJS += builtin/count-objects.o
+BUILTIN_OBJS += builtin/describe.o
+BUILTIN_OBJS += builtin/diff-files.o
+BUILTIN_OBJS += builtin/diff-index.o
+BUILTIN_OBJS += builtin/diff-tree.o
+BUILTIN_OBJS += builtin/diff.o
+BUILTIN_OBJS += builtin/fast-export.o
+BUILTIN_OBJS += builtin/fetch-pack.o
+BUILTIN_OBJS += builtin/fetch.o
+BUILTIN_OBJS += builtin/fmt-merge-msg.o
+BUILTIN_OBJS += builtin/for-each-ref.o
+BUILTIN_OBJS += builtin/fsck.o
+BUILTIN_OBJS += builtin/gc.o
+BUILTIN_OBJS += builtin/grep.o
+BUILTIN_OBJS += builtin/hash-object.o
+BUILTIN_OBJS += builtin/help.o
+BUILTIN_OBJS += builtin/index-pack.o
+BUILTIN_OBJS += builtin/init-db.o
+BUILTIN_OBJS += builtin/log.o
+BUILTIN_OBJS += builtin/ls-files.o
+BUILTIN_OBJS += builtin/ls-remote.o
+BUILTIN_OBJS += builtin/ls-tree.o
+BUILTIN_OBJS += builtin/mailinfo.o
+BUILTIN_OBJS += builtin/mailsplit.o
+BUILTIN_OBJS += builtin/merge.o
+BUILTIN_OBJS += builtin/merge-base.o
+BUILTIN_OBJS += builtin/merge-file.o
+BUILTIN_OBJS += builtin/merge-index.o
+BUILTIN_OBJS += builtin/merge-ours.o
+BUILTIN_OBJS += builtin/merge-recursive.o
+BUILTIN_OBJS += builtin/merge-tree.o
+BUILTIN_OBJS += builtin/mktag.o
+BUILTIN_OBJS += builtin/mktree.o
+BUILTIN_OBJS += builtin/mv.o
+BUILTIN_OBJS += builtin/name-rev.o
+BUILTIN_OBJS += builtin/pack-objects.o
+BUILTIN_OBJS += builtin/pack-redundant.o
+BUILTIN_OBJS += builtin/pack-refs.o
+BUILTIN_OBJS += builtin/patch-id.o
+BUILTIN_OBJS += builtin/prune-packed.o
+BUILTIN_OBJS += builtin/prune.o
+BUILTIN_OBJS += builtin/push.o
+BUILTIN_OBJS += builtin/read-tree.o
+BUILTIN_OBJS += builtin/receive-pack.o
+BUILTIN_OBJS += builtin/reflog.o
+BUILTIN_OBJS += builtin/remote.o
+BUILTIN_OBJS += builtin/replace.o
+BUILTIN_OBJS += builtin/rerere.o
+BUILTIN_OBJS += builtin/reset.o
+BUILTIN_OBJS += builtin/rev-list.o
+BUILTIN_OBJS += builtin/rev-parse.o
+BUILTIN_OBJS += builtin/revert.o
+BUILTIN_OBJS += builtin/rm.o
+BUILTIN_OBJS += builtin/send-pack.o
+BUILTIN_OBJS += builtin/shortlog.o
+BUILTIN_OBJS += builtin/show-branch.o
+BUILTIN_OBJS += builtin/show-ref.o
+BUILTIN_OBJS += builtin/stripspace.o
+BUILTIN_OBJS += builtin/symbolic-ref.o
+BUILTIN_OBJS += builtin/tag.o
+BUILTIN_OBJS += builtin/tar-tree.o
+BUILTIN_OBJS += builtin/unpack-file.o
+BUILTIN_OBJS += builtin/unpack-objects.o
+BUILTIN_OBJS += builtin/update-index.o
+BUILTIN_OBJS += builtin/update-ref.o
+BUILTIN_OBJS += builtin/update-server-info.o
+BUILTIN_OBJS += builtin/upload-archive.o
+BUILTIN_OBJS += builtin/var.o
+BUILTIN_OBJS += builtin/verify-pack.o
+BUILTIN_OBJS += builtin/verify-tag.o
+BUILTIN_OBJS += builtin/write-tree.o
 
 GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
 EXTLIBS =
@@ -1447,8 +1447,8 @@ git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)
  $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \
  $(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)
 
-builtin-help.o: common-cmds.h
-builtin-help.s builtin-help.o: ALL_CFLAGS += \
+builtin/help.o: common-cmds.h
+builtin/help.s builtin/help.o: ALL_CFLAGS += \
  '-DGIT_HTML_PATH="$(htmldir_SQ)"' \
  '-DGIT_MAN_PATH="$(mandir_SQ)"' \
  '-DGIT_INFO_PATH="$(infodir_SQ)"'
@@ -1604,7 +1604,7 @@ exec_cmd.s exec_cmd.o: ALL_CFLAGS += \
  '-DBINDIR="$(bindir_relative_SQ)"' \
  '-DPREFIX="$(prefix_SQ)"'
 
-builtin-init-db.s builtin-init-db.o: ALL_CFLAGS += \
+builtin/init-db.s builtin/init-db.o: ALL_CFLAGS += \
  -DDEFAULT_GIT_TEMPLATE_DIR='"$(template_dir_SQ)"'
 
 config.s config.o: ALL_CFLAGS += -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"'
@@ -1646,7 +1646,7 @@ $(REMOTE_CURL_PRIMARY): remote-curl.o http.o http-walker.o $(GITLIBS)
 
 $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)
 $(patsubst git-%$X,%.o,$(PROGRAMS)) git.o: $(LIB_H) $(wildcard */*.h)
-builtin-revert.o wt-status.o: wt-status.h
+builtin/revert.o wt-status.o: wt-status.h
 
 $(LIB_FILE): $(LIB_OBJS)
  $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)
diff --git a/builtin-add.c b/builtin/add.c
similarity index 100%
rename from builtin-add.c
rename to builtin/add.c
diff --git a/builtin-annotate.c b/builtin/annotate.c
similarity index 100%
rename from builtin-annotate.c
rename to builtin/annotate.c
diff --git a/builtin-apply.c b/builtin/apply.c
similarity index 100%
rename from builtin-apply.c
rename to builtin/apply.c
diff --git a/builtin-archive.c b/builtin/archive.c
similarity index 100%
rename from builtin-archive.c
rename to builtin/archive.c
diff --git a/builtin-bisect--helper.c b/builtin/bisect--helper.c
similarity index 100%
rename from builtin-bisect--helper.c
rename to builtin/bisect--helper.c
diff --git a/builtin-blame.c b/builtin/blame.c
similarity index 100%
rename from builtin-blame.c
rename to builtin/blame.c
diff --git a/builtin-branch.c b/builtin/branch.c
similarity index 100%
rename from builtin-branch.c
rename to builtin/branch.c
diff --git a/builtin-bundle.c b/builtin/bundle.c
similarity index 100%
rename from builtin-bundle.c
rename to builtin/bundle.c
diff --git a/builtin-cat-file.c b/builtin/cat-file.c
similarity index 100%
rename from builtin-cat-file.c
rename to builtin/cat-file.c
diff --git a/builtin-check-attr.c b/builtin/check-attr.c
similarity index 100%
rename from builtin-check-attr.c
rename to builtin/check-attr.c
diff --git a/builtin-check-ref-format.c b/builtin/check-ref-format.c
similarity index 100%
rename from builtin-check-ref-format.c
rename to builtin/check-ref-format.c
diff --git a/builtin-checkout-index.c b/builtin/checkout-index.c
similarity index 100%
rename from builtin-checkout-index.c
rename to builtin/checkout-index.c
diff --git a/builtin-checkout.c b/builtin/checkout.c
similarity index 100%
rename from builtin-checkout.c
rename to builtin/checkout.c
diff --git a/builtin-clean.c b/builtin/clean.c
similarity index 100%
rename from builtin-clean.c
rename to builtin/clean.c
diff --git a/builtin-clone.c b/builtin/clone.c
similarity index 100%
rename from builtin-clone.c
rename to builtin/clone.c
diff --git a/builtin-commit-tree.c b/builtin/commit-tree.c
similarity index 100%
rename from builtin-commit-tree.c
rename to builtin/commit-tree.c
diff --git a/builtin-commit.c b/builtin/commit.c
similarity index 100%
rename from builtin-commit.c
rename to builtin/commit.c
diff --git a/builtin-config.c b/builtin/config.c
similarity index 100%
rename from builtin-config.c
rename to builtin/config.c
diff --git a/builtin-count-objects.c b/builtin/count-objects.c
similarity index 100%
rename from builtin-count-objects.c
rename to builtin/count-objects.c
diff --git a/builtin-describe.c b/builtin/describe.c
similarity index 100%
rename from builtin-describe.c
rename to builtin/describe.c
diff --git a/builtin-diff-files.c b/builtin/diff-files.c
similarity index 100%
rename from builtin-diff-files.c
rename to builtin/diff-files.c
diff --git a/builtin-diff-index.c b/builtin/diff-index.c
similarity index 100%
rename from builtin-diff-index.c
rename to builtin/diff-index.c
diff --git a/builtin-diff-tree.c b/builtin/diff-tree.c
similarity index 100%
rename from builtin-diff-tree.c
rename to builtin/diff-tree.c
diff --git a/builtin-diff.c b/builtin/diff.c
similarity index 100%
rename from builtin-diff.c
rename to builtin/diff.c
diff --git a/builtin-fast-export.c b/builtin/fast-export.c
similarity index 100%
rename from builtin-fast-export.c
rename to builtin/fast-export.c
diff --git a/builtin-fetch-pack.c b/builtin/fetch-pack.c
similarity index 100%
rename from builtin-fetch-pack.c
rename to builtin/fetch-pack.c
diff --git a/builtin-fetch.c b/builtin/fetch.c
similarity index 100%
rename from builtin-fetch.c
rename to builtin/fetch.c
diff --git a/builtin-fmt-merge-msg.c b/builtin/fmt-merge-msg.c
similarity index 100%
rename from builtin-fmt-merge-msg.c
rename to builtin/fmt-merge-msg.c
diff --git a/builtin-for-each-ref.c b/builtin/for-each-ref.c
similarity index 100%
rename from builtin-for-each-ref.c
rename to builtin/for-each-ref.c
diff --git a/builtin-fsck.c b/builtin/fsck.c
similarity index 100%
rename from builtin-fsck.c
rename to builtin/fsck.c
diff --git a/builtin-gc.c b/builtin/gc.c
similarity index 100%
rename from builtin-gc.c
rename to builtin/gc.c
diff --git a/builtin-grep.c b/builtin/grep.c
similarity index 100%
rename from builtin-grep.c
rename to builtin/grep.c
diff --git a/builtin-hash-object.c b/builtin/hash-object.c
similarity index 100%
rename from builtin-hash-object.c
rename to builtin/hash-object.c
diff --git a/builtin-help.c b/builtin/help.c
similarity index 100%
rename from builtin-help.c
rename to builtin/help.c
diff --git a/builtin-index-pack.c b/builtin/index-pack.c
similarity index 100%
rename from builtin-index-pack.c
rename to builtin/index-pack.c
diff --git a/builtin-init-db.c b/builtin/init-db.c
similarity index 100%
rename from builtin-init-db.c
rename to builtin/init-db.c
diff --git a/builtin-log.c b/builtin/log.c
similarity index 100%
rename from builtin-log.c
rename to builtin/log.c
diff --git a/builtin-ls-files.c b/builtin/ls-files.c
similarity index 100%
rename from builtin-ls-files.c
rename to builtin/ls-files.c
diff --git a/builtin-ls-remote.c b/builtin/ls-remote.c
similarity index 100%
rename from builtin-ls-remote.c
rename to builtin/ls-remote.c
diff --git a/builtin-ls-tree.c b/builtin/ls-tree.c
similarity index 100%
rename from builtin-ls-tree.c
rename to builtin/ls-tree.c
diff --git a/builtin-mailinfo.c b/builtin/mailinfo.c
similarity index 100%
rename from builtin-mailinfo.c
rename to builtin/mailinfo.c
diff --git a/builtin-mailsplit.c b/builtin/mailsplit.c
similarity index 100%
rename from builtin-mailsplit.c
rename to builtin/mailsplit.c
diff --git a/builtin-merge-base.c b/builtin/merge-base.c
similarity index 100%
rename from builtin-merge-base.c
rename to builtin/merge-base.c
diff --git a/builtin-merge-file.c b/builtin/merge-file.c
similarity index 100%
rename from builtin-merge-file.c
rename to builtin/merge-file.c
diff --git a/builtin-merge-index.c b/builtin/merge-index.c
similarity index 100%
rename from builtin-merge-index.c
rename to builtin/merge-index.c
diff --git a/builtin-merge-ours.c b/builtin/merge-ours.c
similarity index 100%
rename from builtin-merge-ours.c
rename to builtin/merge-ours.c
diff --git a/builtin-merge-recursive.c b/builtin/merge-recursive.c
similarity index 100%
rename from builtin-merge-recursive.c
rename to builtin/merge-recursive.c
diff --git a/builtin-merge-tree.c b/builtin/merge-tree.c
similarity index 100%
rename from builtin-merge-tree.c
rename to builtin/merge-tree.c
diff --git a/builtin-merge.c b/builtin/merge.c
similarity index 100%
rename from builtin-merge.c
rename to builtin/merge.c
diff --git a/builtin-mktag.c b/builtin/mktag.c
similarity index 100%
rename from builtin-mktag.c
rename to builtin/mktag.c
diff --git a/builtin-mktree.c b/builtin/mktree.c
similarity index 100%
rename from builtin-mktree.c
rename to builtin/mktree.c
diff --git a/builtin-mv.c b/builtin/mv.c
similarity index 100%
rename from builtin-mv.c
rename to builtin/mv.c
diff --git a/builtin-name-rev.c b/builtin/name-rev.c
similarity index 100%
rename from builtin-name-rev.c
rename to builtin/name-rev.c
diff --git a/builtin-pack-objects.c b/builtin/pack-objects.c
similarity index 100%
rename from builtin-pack-objects.c
rename to builtin/pack-objects.c
diff --git a/builtin-pack-redundant.c b/builtin/pack-redundant.c
similarity index 100%
rename from builtin-pack-redundant.c
rename to builtin/pack-redundant.c
diff --git a/builtin-pack-refs.c b/builtin/pack-refs.c
similarity index 100%
rename from builtin-pack-refs.c
rename to builtin/pack-refs.c
diff --git a/builtin-patch-id.c b/builtin/patch-id.c
similarity index 100%
rename from builtin-patch-id.c
rename to builtin/patch-id.c
diff --git a/builtin-prune-packed.c b/builtin/prune-packed.c
similarity index 100%
rename from builtin-prune-packed.c
rename to builtin/prune-packed.c
diff --git a/builtin-prune.c b/builtin/prune.c
similarity index 100%
rename from builtin-prune.c
rename to builtin/prune.c
diff --git a/builtin-push.c b/builtin/push.c
similarity index 100%
rename from builtin-push.c
rename to builtin/push.c
diff --git a/builtin-read-tree.c b/builtin/read-tree.c
similarity index 100%
rename from builtin-read-tree.c
rename to builtin/read-tree.c
diff --git a/builtin-receive-pack.c b/builtin/receive-pack.c
similarity index 100%
rename from builtin-receive-pack.c
rename to builtin/receive-pack.c
diff --git a/builtin-reflog.c b/builtin/reflog.c
similarity index 100%
rename from builtin-reflog.c
rename to builtin/reflog.c
diff --git a/builtin-remote.c b/builtin/remote.c
similarity index 100%
rename from builtin-remote.c
rename to builtin/remote.c
diff --git a/builtin-replace.c b/builtin/replace.c
similarity index 100%
rename from builtin-replace.c
rename to builtin/replace.c
diff --git a/builtin-rerere.c b/builtin/rerere.c
similarity index 100%
rename from builtin-rerere.c
rename to builtin/rerere.c
diff --git a/builtin-reset.c b/builtin/reset.c
similarity index 100%
rename from builtin-reset.c
rename to builtin/reset.c
diff --git a/builtin-rev-list.c b/builtin/rev-list.c
similarity index 100%
rename from builtin-rev-list.c
rename to builtin/rev-list.c
diff --git a/builtin-rev-parse.c b/builtin/rev-parse.c
similarity index 100%
rename from builtin-rev-parse.c
rename to builtin/rev-parse.c
diff --git a/builtin-revert.c b/builtin/revert.c
similarity index 100%
rename from builtin-revert.c
rename to builtin/revert.c
diff --git a/builtin-rm.c b/builtin/rm.c
similarity index 100%
rename from builtin-rm.c
rename to builtin/rm.c
diff --git a/builtin-send-pack.c b/builtin/send-pack.c
similarity index 100%
rename from builtin-send-pack.c
rename to builtin/send-pack.c
diff --git a/builtin-shortlog.c b/builtin/shortlog.c
similarity index 100%
rename from builtin-shortlog.c
rename to builtin/shortlog.c
diff --git a/builtin-show-branch.c b/builtin/show-branch.c
similarity index 100%
rename from builtin-show-branch.c
rename to builtin/show-branch.c
diff --git a/builtin-show-ref.c b/builtin/show-ref.c
similarity index 100%
rename from builtin-show-ref.c
rename to builtin/show-ref.c
diff --git a/builtin-stripspace.c b/builtin/stripspace.c
similarity index 100%
rename from builtin-stripspace.c
rename to builtin/stripspace.c
diff --git a/builtin-symbolic-ref.c b/builtin/symbolic-ref.c
similarity index 100%
rename from builtin-symbolic-ref.c
rename to builtin/symbolic-ref.c
diff --git a/builtin-tag.c b/builtin/tag.c
similarity index 100%
rename from builtin-tag.c
rename to builtin/tag.c
diff --git a/builtin-tar-tree.c b/builtin/tar-tree.c
similarity index 100%
rename from builtin-tar-tree.c
rename to builtin/tar-tree.c
diff --git a/builtin-unpack-file.c b/builtin/unpack-file.c
similarity index 100%
rename from builtin-unpack-file.c
rename to builtin/unpack-file.c
diff --git a/builtin-unpack-objects.c b/builtin/unpack-objects.c
similarity index 100%
rename from builtin-unpack-objects.c
rename to builtin/unpack-objects.c
diff --git a/builtin-update-index.c b/builtin/update-index.c
similarity index 100%
rename from builtin-update-index.c
rename to builtin/update-index.c
diff --git a/builtin-update-ref.c b/builtin/update-ref.c
similarity index 100%
rename from builtin-update-ref.c
rename to builtin/update-ref.c
diff --git a/builtin-update-server-info.c b/builtin/update-server-info.c
similarity index 100%
rename from builtin-update-server-info.c
rename to builtin/update-server-info.c
diff --git a/builtin-upload-archive.c b/builtin/upload-archive.c
similarity index 100%
rename from builtin-upload-archive.c
rename to builtin/upload-archive.c
diff --git a/builtin-var.c b/builtin/var.c
similarity index 100%
rename from builtin-var.c
rename to builtin/var.c
diff --git a/builtin-verify-pack.c b/builtin/verify-pack.c
similarity index 100%
rename from builtin-verify-pack.c
rename to builtin/verify-pack.c
diff --git a/builtin-verify-tag.c b/builtin/verify-tag.c
similarity index 100%
rename from builtin-verify-tag.c
rename to builtin/verify-tag.c
diff --git a/builtin-write-tree.c b/builtin/write-tree.c
similarity index 100%
rename from builtin-write-tree.c
rename to builtin/write-tree.c
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Junio C Hamano
I'll queue with a trivial addition of "rm builtin/*.o" to the "make clean"
target.  I am not looking forward to merging the result of this with other
topics, though... X-<.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Fabian Kössel
On 22.02.2010 23:32, Junio C Hamano wrote:
> I'll queue with a trivial addition of "rm builtin/*.o" to the "make
clean"
> target.  I am not looking forward to merging the result of this with
other
> topics, though... X-<.

Just out of curiosity, how do you actually merge such a relatively big
rename with other branches?

I haven't found a pleasant way yet to merge rename+modification in one
branch and modification on an old path in another branch.


There is git file-merge theirs base ours . But it only seems to take
filenames and no git object specifications. It would be very handy if
something like

git file-merge bfile HEAD^:afile afile

would be possible.


For clearification, here an example


echo "First line" > afile

git add .
git commit -m "First commit in master"

git checkout -b mybranch

echo "Second line in mybranch" >> afile
git mv afile bfile

git commit -a -m "Change and rename in mybranch"

git checkout master

echo "Changed first line in master" > afile

git commit -a -m "changed afile"

git merge mybranch


Regards

Fabian

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [RFD] Deepen the git directory structure a bit.

Junio C Hamano
Fabian Kössel <[hidden email]> writes:

> On 22.02.2010 23:32, Junio C Hamano wrote:
>> I'll queue with a trivial addition of "rm builtin/*.o" to the "make
> clean"
>> target.  I am not looking forward to merging the result of this with
> other
>> topics, though... X-<.
>
> Just out of curiosity, how do you actually merge such a relatively big
> rename with other branches?

For git.git, existing files are not so troublesome.  merge-recursive knows
how to handle renames, so does "am -3", but the latter is tricky when the
contributor based a patch on some unknown vintage of the source.

A topic with a new builtin command is a bit problematic and no mechanical
merge would help. I suspect that no other SCM would be able to either.

 - A topic that adds builtin-frotz.c has an entry that describes how to
   build builtin-frotz.o in Makefile, somewhere near Linus's topic changes
   an existing builtin-nitfol.o to builtin/nitfol.o.  The topic would have
   added the new target already, and then we are merging Linus's topic.
   The merge will conflict.  Every time I rebuild 'pu', this conflict will
   reappear over and over.

   But once the conflict is resolved, rerere will remember it for me, so
   this is not a big problem.

 - A new builtin-frotz.c file in such a topic is more problematic.
   Linus's patch does not know anything about it, so it will merge
   cleanly, but the merge will not move it to builtin/frotz.c; this needs
   to be fixed manually as an evil merge.

   I have automated such an evil merge so that I can rebuild 'pu' without
   manual intervention.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [hidden email]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Loading...