git-commit-vandalism/builtin
Paul Tan 73c2779f42 builtin-am: implement skeletal builtin am
For the purpose of rewriting git-am.sh into a C builtin, implement a
skeletal builtin/am.c that redirects to $GIT_EXEC_PATH/git-am if the
environment variable _GIT_USE_BUILTIN_AM is not defined. Since in the
Makefile git-am.sh takes precedence over builtin/am.c,
$GIT_EXEC_PATH/git-am will contain the shell script git-am.sh, and thus
this allows us to fall back on the functional git-am.sh when running the
test suite for tests that depend on a working git-am implementation.

Since git-am.sh cannot handle any environment modifications by
setup_git_directory(), "am" is declared with no setup flags in git.c. On
the other hand, to re-implement git-am.sh in builtin/am.c, we need to
run all the git dir and work tree setup logic that git.c typically does
for us. As such, we work around this temporarily by copying the logic in
git.c's run_builtin(), which is roughly:

	prefix = setup_git_directory();
	trace_repo_setup(prefix);
	setup_work_tree();

This redirection should be removed when all the features of git-am.sh
have been re-implemented in builtin/am.c.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2015-08-04 22:02:11 -07:00
..
add.c Merge branch 'nd/diff-i-t-a' 2015-06-25 10:47:46 -07:00
am.c builtin-am: implement skeletal builtin am 2015-08-04 22:02:11 -07:00
annotate.c annotate: use argv_array 2014-07-16 11:10:11 -07:00
apply.c Merge branch 'jc/apply-reject-noop-hunk' 2015-06-24 12:21:39 -07:00
archive.c
bisect--helper.c
blame.c Merge branch 'jk/date-mode-format' 2015-08-03 11:01:27 -07:00
branch.c delete_ref(): use the usual convention for old_sha1 2015-06-22 13:17:14 -07:00
bundle.c bundle: verify arguments more strictly 2015-05-08 10:52:11 -07:00
cat-file.c cat-file: sort and de-dup output of --batch-all-objects 2015-06-26 09:24:42 -07:00
check-attr.c standardize usage info string format 2015-01-14 09:32:04 -08:00
check-ignore.c standardize usage info string format 2015-01-14 09:32:04 -08:00
check-mailmap.c standardize usage info string format 2015-01-14 09:32:04 -08:00
check-ref-format.c standardize usage info string format 2015-01-14 09:32:04 -08:00
checkout-index.c prefix_path(): unconditionally free results in the callers 2015-05-05 10:31:51 -07:00
checkout.c Merge branch 'es/worktree-add' 2015-07-13 14:02:19 -07:00
clean.c Merge branch 'rs/janitorial' into maint 2015-06-16 14:33:47 -07:00
clone.c Merge branch 'mh/init-delete-refs-api' 2015-08-03 11:01:17 -07:00
column.c standardize usage info string format 2015-01-14 09:32:04 -08:00
commit-tree.c commit-tree: simplify parsing of option -S using skip_prefix() 2014-12-29 09:32:45 -08:00
commit.c convert "enum date_mode" into a struct 2015-06-29 11:39:07 -07:00
config.c Merge branch 'pt/xdg-config-path' into maint 2015-06-05 12:00:04 -07:00
count-objects.c count-objects: report unused files in $GIT_DIR/worktrees/... 2014-12-01 11:00:18 -08:00
credential.c
describe.c get_name(): rewrite to take an object_id argument 2015-05-25 12:19:29 -07:00
diff-files.c standardize usage info string format 2015-01-14 09:32:04 -08:00
diff-index.c standardize usage info string format 2015-01-14 09:32:04 -08:00
diff-tree.c standardize usage info string format 2015-01-14 09:32:04 -08:00
diff.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
fast-export.c refs: move the remaining ref module declarations to refs.h 2015-06-22 13:17:12 -07:00
fetch-pack.c standardize usage info string format 2015-01-14 09:32:04 -08:00
fetch.c prune_refs(): use delete_refs() 2015-06-22 13:17:10 -07:00
fmt-merge-msg.c refs: move the remaining ref module declarations to refs.h 2015-06-22 13:17:12 -07:00
for-each-ref.c for-each-ref: introduce filter_refs() 2015-08-03 10:24:07 -07:00
fsck.c Merge branch 'js/fsck-opt' 2015-08-03 11:01:18 -07:00
gc.c Merge branch 'nd/multiple-work-trees' 2015-07-13 14:02:02 -07:00
get-tar-commit-id.c use skip_prefix() to avoid more magic numbers 2014-10-07 11:09:16 -07:00
grep.c Merge branch 'ps/grep-help-all-callback-arg' 2015-04-20 15:28:34 -07:00
hash-object.c Merge branch 'jc/hash-object' into maint 2015-05-26 13:49:25 -07:00
help.c Merge branch 'sb/leaks' 2015-03-20 13:11:53 -07:00
index-pack.c Merge branch 'js/fsck-opt' 2015-08-03 11:01:18 -07:00
init-db.c refs: move the remaining ref module declarations to refs.h 2015-06-22 13:17:12 -07:00
interpret-trailers.c trailer: add interpret-trailers command 2014-10-13 13:55:27 -07:00
log.c Merge branch 'jk/date-mode-format' 2015-08-03 11:01:27 -07:00
ls-files.c Merge branch 'jc/report-path-error-to-dir' into maint 2015-03-31 14:53:08 -07:00
ls-remote.c standardize usage info string format 2015-01-14 09:32:04 -08:00
ls-tree.c ls-tree: disable negative pathspec because it's not supported 2014-12-01 11:33:45 -08:00
mailinfo.c standardize usage info string format 2015-01-14 09:32:04 -08:00
mailsplit.c mailsplit: remove unnecessary unlink(2) call 2014-10-07 10:49:57 -07:00
merge-base.c standardize usage info string format 2015-01-14 09:32:04 -08:00
merge-file.c Merge branch 'ab/merge-file-prefix' 2015-02-22 12:28:25 -08:00
merge-index.c standardize usage info string format 2015-01-14 09:32:04 -08:00
merge-ours.c
merge-recursive.c
merge-tree.c merge-tree: remove unused df_conflict arguments 2014-09-02 11:02:58 -07:00
merge.c Merge branch 'jk/at-push-sha1' 2015-06-05 12:17:36 -07:00
mktag.c
mktree.c
mv.c standardize usage info string format 2015-01-14 09:32:04 -08:00
name-rev.c name_ref(): rewrite to take an object_id argument 2015-05-25 12:19:29 -07:00
notes.c standardize usage info string format 2015-01-14 09:32:04 -08:00
pack-objects.c parse-options: move unsigned long option parsing out of pack-objects.c 2015-06-22 15:07:21 -07:00
pack-redundant.c standardize usage info string format 2015-01-14 09:32:04 -08:00
pack-refs.c standardize usage info string format 2015-01-14 09:32:04 -08:00
patch-id.c patch-id: convert to use struct object_id 2015-03-13 22:43:14 -07:00
prune-packed.c standardize usage info string format 2015-01-14 09:32:04 -08:00
prune.c Merge branch 'nd/multiple-work-trees' 2015-07-13 14:02:02 -07:00
pull.c pull: remove redirection to git-pull.sh 2015-06-18 13:18:59 -07:00
push.c push: allow --follow-tags to be set by config push.followTags 2015-03-14 15:08:35 -07:00
read-tree.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
receive-pack.c fsck: git receive-pack: support excluding objects from fsck'ing 2015-06-23 14:27:37 -07:00
reflog.c builtin/reflog: rewrite ref functions to take an object_id argument 2015-05-25 12:19:30 -07:00
remote-ext.c use skip_prefix() to avoid more magic numbers 2014-10-07 11:09:16 -07:00
remote-fd.c
remote.c prune_remote(): use delete_refs() 2015-06-22 13:17:10 -07:00
repack.c Merge branch 'nd/multiple-work-trees' 2015-05-11 14:23:39 -07:00
replace.c Merge branch 'mh/replace-refs' 2015-08-03 11:01:10 -07:00
rerere.c standardize usage info string format 2015-01-14 09:32:04 -08:00
reset.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
rev-list.c Merge branch 'ls/hint-rev-list-count' 2015-07-10 14:26:13 -07:00
rev-parse.c rev-parse --parseopt: allow [*=?!] in argument hints 2015-07-15 10:30:54 -07:00
revert.c standardize usage info string format 2015-01-14 09:32:04 -08:00
rm.c use file_exists() to check if a file exists in the worktree 2015-05-20 13:49:10 -07:00
send-pack.c send-pack.c: add --atomic command line argument 2015-01-07 19:56:44 -08:00
shortlog.c convert "enum date_mode" into a struct 2015-06-29 11:39:07 -07:00
show-branch.c convert "enum date_mode" into a struct 2015-06-29 11:39:07 -07:00
show-ref.c show_ref(): convert local variable peeled to object_id 2015-05-25 12:19:32 -07:00
stripspace.c
symbolic-ref.c standardize usage info string format 2015-01-14 09:32:04 -08:00
tag.c builtin/show-ref: rewrite to take an object_id argument 2015-05-25 12:19:33 -07:00
unpack-file.c
unpack-objects.c fsck (receive-pack): allow demoting errors to warnings 2015-06-23 14:27:34 -07:00
update-index.c Merge branch 'nd/untracked-cache' 2015-05-26 13:24:46 -07:00
update-ref.c delete_ref(): use the usual convention for old_sha1 2015-06-22 13:17:14 -07:00
update-server-info.c
upload-archive.c
var.c
verify-commit.c verify-commit: add option to print raw gpg status information 2015-06-22 14:20:47 -07:00
verify-pack.c standardize usage info string format 2015-01-14 09:32:04 -08:00
verify-tag.c verify-tag: add option to print raw gpg status information 2015-06-22 14:20:47 -07:00
worktree.c Merge branch 'es/worktree-add' 2015-07-13 14:02:19 -07:00
write-tree.c