diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-08-12 14:09:55 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-08-12 14:09:55 -0700 |
commit | 7aa2da616208a51ec51ce3639fe6abd9631b74db (patch) | |
tree | ecec6305390773f8f263f94e93d9c7bbf10521c8 /cache-tree.c | |
parent | c1e5ca90dba834246e1fbac1c3ce9899873c22a5 (diff) | |
parent | e97a5e765db06995c3b027a5d7dceb6b4f2cba02 (diff) | |
download | git-7aa2da616208a51ec51ce3639fe6abd9631b74db.tar.gz |
Merge branch 'pt/am-builtin'
Rewrite "am" in "C".
* pt/am-builtin: (46 commits)
git-am: add am.threeWay config variable
builtin-am: remove redirection to git-am.sh
builtin-am: check for valid committer ident
builtin-am: implement legacy -b/--binary option
builtin-am: implement -i/--interactive
builtin-am: support and auto-detect mercurial patches
builtin-am: support and auto-detect StGit series files
builtin-am: support and auto-detect StGit patches
builtin-am: rerere support
builtin-am: invoke post-applypatch hook
builtin-am: invoke pre-applypatch hook
builtin-am: invoke applypatch-msg hook
builtin-am: support automatic notes copying
builtin-am: invoke post-rewrite hook
builtin-am: implement -S/--gpg-sign, commit.gpgsign
builtin-am: implement --committer-date-is-author-date
builtin-am: implement --ignore-date
builtin-am: pass git-apply's options to git-apply
builtin-am: implement --[no-]scissors
builtin-am: support --keep-cr, am.keepcr
...
Diffstat (limited to 'cache-tree.c')
-rw-r--r-- | cache-tree.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/cache-tree.c b/cache-tree.c index 32772b9564..feace8bd90 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -592,7 +592,7 @@ static struct cache_tree *cache_tree_find(struct cache_tree *it, const char *pat return it; } -int write_cache_as_tree(unsigned char *sha1, int flags, const char *prefix) +int write_index_as_tree(unsigned char *sha1, struct index_state *index_state, const char *index_path, int flags, const char *prefix) { int entries, was_valid, newfd; struct lock_file *lock_file; @@ -603,23 +603,23 @@ int write_cache_as_tree(unsigned char *sha1, int flags, const char *prefix) */ lock_file = xcalloc(1, sizeof(struct lock_file)); - newfd = hold_locked_index(lock_file, 1); + newfd = hold_lock_file_for_update(lock_file, index_path, LOCK_DIE_ON_ERROR); - entries = read_cache(); + entries = read_index_from(index_state, index_path); if (entries < 0) return WRITE_TREE_UNREADABLE_INDEX; if (flags & WRITE_TREE_IGNORE_CACHE_TREE) - cache_tree_free(&(active_cache_tree)); + cache_tree_free(&index_state->cache_tree); - if (!active_cache_tree) - active_cache_tree = cache_tree(); + if (!index_state->cache_tree) + index_state->cache_tree = cache_tree(); - was_valid = cache_tree_fully_valid(active_cache_tree); + was_valid = cache_tree_fully_valid(index_state->cache_tree); if (!was_valid) { - if (cache_tree_update(&the_index, flags) < 0) + if (cache_tree_update(index_state, flags) < 0) return WRITE_TREE_UNMERGED_INDEX; if (0 <= newfd) { - if (!write_locked_index(&the_index, lock_file, COMMIT_LOCK)) + if (!write_locked_index(index_state, lock_file, COMMIT_LOCK)) newfd = -1; } /* Not being able to write is fine -- we are only interested @@ -631,14 +631,14 @@ int write_cache_as_tree(unsigned char *sha1, int flags, const char *prefix) } if (prefix) { - struct cache_tree *subtree = - cache_tree_find(active_cache_tree, prefix); + struct cache_tree *subtree; + subtree = cache_tree_find(index_state->cache_tree, prefix); if (!subtree) return WRITE_TREE_PREFIX_ERROR; hashcpy(sha1, subtree->sha1); } else - hashcpy(sha1, active_cache_tree->sha1); + hashcpy(sha1, index_state->cache_tree->sha1); if (0 <= newfd) rollback_lock_file(lock_file); @@ -646,6 +646,11 @@ int write_cache_as_tree(unsigned char *sha1, int flags, const char *prefix) return 0; } +int write_cache_as_tree(unsigned char *sha1, int flags, const char *prefix) +{ + return write_index_as_tree(sha1, &the_index, get_index_file(), flags, prefix); +} + static void prime_cache_tree_rec(struct cache_tree *it, struct tree *tree) { struct tree_desc desc; |