gitweb.git
mailinfo: make is_scissors_line take plain char *Jonathan Tan Mon, 19 Sep 2016 21:08:52 +0000 (14:08 -0700)

mailinfo: make is_scissors_line take plain char *

The is_scissors_line takes a struct strbuf * when a char * would
suffice. Make it take char *.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailinfo: separate in-body header processingJonathan Tan Mon, 19 Sep 2016 21:08:50 +0000 (14:08 -0700)

mailinfo: separate in-body header processing

The check_header function contains logic specific to in-body headers,
although it is invoked during both the processing of actual headers and
in-body headers. Separate out the in-body header part into its own
function.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with maintJunio C Hamano Mon, 19 Sep 2016 20:55:18 +0000 (13:55 -0700)

Sync with maint

* maint:
Start preparing for 2.10.1

Start preparing for 2.10.1Junio C Hamano Mon, 19 Sep 2016 20:54:50 +0000 (13:54 -0700)

Start preparing for 2.10.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'sb/diff-cleanup' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:45 +0000 (13:51 -0700)

Merge branch 'sb/diff-cleanup' into maint

Code cleanup.

* sb/diff-cleanup:
diff: remove dead code
diff: omit found pointer from emit_callback
diff.c: use diff_options directly

Merge branch 'ah/misc-message-fixes' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:45 +0000 (13:51 -0700)

Merge branch 'ah/misc-message-fixes' into maint

Message cleanup.

* ah/misc-message-fixes:
unpack-trees: do not capitalize "working"
git-merge-octopus: do not capitalize "octopus"
git-rebase--interactive: fix English grammar
cat-file: put spaces around pipes in usage string
am: put spaces around pipe in usage string

Merge branch 'sb/transport-report-missing-submodule... Junio C Hamano Mon, 19 Sep 2016 20:51:45 +0000 (13:51 -0700)

Merge branch 'sb/transport-report-missing-submodule-on-stderr' into maint

Message cleanup.

* sb/transport-report-missing-submodule-on-stderr:
transport: report missing submodule pushes consistently on stderr

Merge branch 'sb/xdiff-remove-unused-static-decl' into... Junio C Hamano Mon, 19 Sep 2016 20:51:44 +0000 (13:51 -0700)

Merge branch 'sb/xdiff-remove-unused-static-decl' into maint

Code cleanup.

* sb/xdiff-remove-unused-static-decl:
xdiff: remove unneeded declarations

Merge branch 'js/t9903-chaining' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:44 +0000 (13:51 -0700)

Merge branch 'js/t9903-chaining' into maint

Test fix.

* js/t9903-chaining:
t9903: fix broken && chain

Merge branch 'rs/hex2chr' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:43 +0000 (13:51 -0700)

Merge branch 'rs/hex2chr' into maint

Code cleanup.

* rs/hex2chr:
introduce hex2chr() for converting two hexadecimal digits to a character

Merge branch 'rs/compat-strdup' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:42 +0000 (13:51 -0700)

Merge branch 'rs/compat-strdup' into maint

Code cleanup.

* rs/compat-strdup:
compat: move strdup(3) replacement to its own file

Merge branch 'jk/squelch-false-warning-from-gcc-o3... Junio C Hamano Mon, 19 Sep 2016 20:51:41 +0000 (13:51 -0700)

Merge branch 'jk/squelch-false-warning-from-gcc-o3' into maint

Compilation fix.

* jk/squelch-false-warning-from-gcc-o3:
color_parse_mem: initialize "struct color" temporary
error_errno: use constant return similar to error()

Merge branch 'ep/use-git-trace-curl-in-tests' into... Junio C Hamano Mon, 19 Sep 2016 20:51:41 +0000 (13:51 -0700)

Merge branch 'ep/use-git-trace-curl-in-tests' into maint

Update a few tests that used to use GIT_CURL_VERBOSE to use the
newer GIT_TRACE_CURL.

* ep/use-git-trace-curl-in-tests:
t5551-http-fetch-smart.sh: use the GIT_TRACE_CURL environment var
t5550-http-fetch-dumb.sh: use the GIT_TRACE_CURL environment var
test-lib.sh: preserve GIT_TRACE_CURL from the environment
t5541-http-push-smart.sh: use the GIT_TRACE_CURL environment var

Merge branch 'js/t6026-clean-up' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:41 +0000 (13:51 -0700)

Merge branch 'js/t6026-clean-up' into maint

A test spawned a short-lived background process, which sometimes
prevented the test directory from getting removed at the end of the
script on some platforms.

* js/t6026-clean-up:
t6026-merge-attr: clean up background process at end of test case

Merge branch 'jc/forbid-symbolic-ref-d-HEAD' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:40 +0000 (13:51 -0700)

Merge branch 'jc/forbid-symbolic-ref-d-HEAD' into maint

"git symbolic-ref -d HEAD" happily removes the symbolic ref, but
the resulting repository becomes an invalid one. Teach the command
to forbid removal of HEAD.

* jc/forbid-symbolic-ref-d-HEAD:
symbolic-ref -d: do not allow removal of HEAD

Merge branch 'jc/submodule-anchor-git-dir' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:40 +0000 (13:51 -0700)

Merge branch 'jc/submodule-anchor-git-dir' into maint

Having a submodule whose ".git" repository is somehow corrupt
caused a few commands that recurse into submodules loop forever.

* jc/submodule-anchor-git-dir:
submodule: avoid auto-discovery in prepare_submodule_repo_env()

Merge branch 'jk/test-lib-drop-pid-from-results' into... Junio C Hamano Mon, 19 Sep 2016 20:51:39 +0000 (13:51 -0700)

Merge branch 'jk/test-lib-drop-pid-from-results' into maint

The test framework left the number of tests and success/failure
count in the t/test-results directory, keyed by the name of the
test script plus the process ID. The latter however turned out not
to serve any useful purpose. The process ID part of the filename
has been removed.

* jk/test-lib-drop-pid-from-results:
test-lib: drop PID from test-results/*.count

Merge branch 'bh/diff-highlight-graph' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:38 +0000 (13:51 -0700)

Merge branch 'bh/diff-highlight-graph' into maint

"diff-highlight" script (in contrib/) learned to work better with
"git log -p --graph" output.

* bh/diff-highlight-graph:
diff-highlight: avoid highlighting combined diffs
diff-highlight: add multi-byte tests
diff-highlight: ignore test cruft
diff-highlight: add support for --graph output
diff-highlight: add failing test for handling --graph output
diff-highlight: add some tests

Merge branch 'po/range-doc' into maintJunio C Hamano Mon, 19 Sep 2016 20:51:37 +0000 (13:51 -0700)

Merge branch 'po/range-doc' into maint

Clarify various ways to specify the "revision ranges" in the
documentation.

* po/range-doc:
doc: revisions: sort examples and fix alignment of the unchanged
doc: revisions: show revision expansion in examples
doc: revisions - clarify reachability examples
doc: revisions - define `reachable`
doc: gitrevisions - clarify 'latter case' is revision walk
doc: gitrevisions - use 'reachable' in page description
doc: revisions: single vs multi-parent notation comparison
doc: revisions: extra clarification of <rev>^! notation effects
doc: revisions: give headings for the two and three dot notations
doc: show the actual left, right, and boundary marks
doc: revisions - name the left and right sides
doc: use 'symmetric difference' consistently

Third batch for 2.11Junio C Hamano Mon, 19 Sep 2016 20:48:25 +0000 (13:48 -0700)

Third batch for 2.11

This round they are somewhat bigger topics.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'bc/object-id'Junio C Hamano Mon, 19 Sep 2016 20:47:19 +0000 (13:47 -0700)

Merge branch 'bc/object-id'

The "unsigned char sha1[20]" to "struct object_id" conversion
continues. Notable changes in this round includes that ce->sha1,
i.e. the object name recorded in the cache_entry, turns into an
object_id.

It had merge conflicts with a few topics in flight (Christian's
"apply.c split", Dscho's "cat-file --filters" and Jeff Hostetler's
"status --porcelain-v2"). Extra sets of eyes double-checking for
mismerges are highly appreciated.

* bc/object-id:
builtin/reset: convert to use struct object_id
builtin/commit-tree: convert to struct object_id
builtin/am: convert to struct object_id
refs: add an update_ref_oid function.
sha1_name: convert get_sha1_mb to struct object_id
builtin/update-index: convert file to struct object_id
notes: convert init_notes to use struct object_id
builtin/rm: convert to use struct object_id
builtin/blame: convert file to use struct object_id
Convert read_mmblob to take struct object_id.
notes-merge: convert struct notes_merge_pair to struct object_id
builtin/checkout: convert some static functions to struct object_id
streaming: make stream_blob_to_fd take struct object_id
builtin: convert textconv_object to use struct object_id
builtin/cat-file: convert some static functions to struct object_id
builtin/cat-file: convert struct expand_data to use struct object_id
builtin/log: convert some static functions to use struct object_id
builtin/blame: convert struct origin to use struct object_id
builtin/apply: convert static functions to struct object_id
cache: convert struct cache_entry to use struct object_id

Merge branch 'mh/ref-store'Junio C Hamano Mon, 19 Sep 2016 20:47:19 +0000 (13:47 -0700)

Merge branch 'mh/ref-store'

The ref-store abstraction was introduced to the refs API so that we
can plug in different backends to store references.

* mh/ref-store: (38 commits)
refs: implement iteration over only per-worktree refs
refs: make lock generic
refs: add method to rename refs
refs: add methods to init refs db
refs: make delete_refs() virtual
refs: add method for initial ref transaction commit
refs: add methods for reflog
refs: add method iterator_begin
files_ref_iterator_begin(): take a ref_store argument
split_symref_update(): add a files_ref_store argument
lock_ref_sha1_basic(): add a files_ref_store argument
lock_ref_for_update(): add a files_ref_store argument
commit_ref_update(): add a files_ref_store argument
lock_raw_ref(): add a files_ref_store argument
repack_without_refs(): add a files_ref_store argument
refs: make peel_ref() virtual
refs: make create_symref() virtual
refs: make pack_refs() virtual
refs: make verify_refname_available() virtual
refs: make read_raw_ref() virtual
...

Merge branch 'cc/apply-am'Junio C Hamano Mon, 19 Sep 2016 20:47:17 +0000 (13:47 -0700)

Merge branch 'cc/apply-am'

"git am" has been taught to make an internal call to "git apply"'s
innards without spawning the latter as a separate process.

* cc/apply-am: (41 commits)
builtin/am: use apply API in run_apply()
apply: learn to use a different index file
apply: pass apply state to build_fake_ancestor()
apply: refactor `git apply` option parsing
apply: change error_routine when silent
usage: add get_error_routine() and get_warn_routine()
usage: add set_warn_routine()
apply: don't print on stdout in verbosity_silent mode
apply: make it possible to silently apply
apply: use error_errno() where possible
apply: make some parsing functions static again
apply: move libified code from builtin/apply.c to apply.{c,h}
apply: rename and move opt constants to apply.h
builtin/apply: rename option parsing functions
builtin/apply: make create_one_file() return -1 on error
builtin/apply: make try_create_file() return -1 on error
builtin/apply: make write_out_results() return -1 on error
builtin/apply: make write_out_one_result() return -1 on error
builtin/apply: make create_file() return -1 on error
builtin/apply: make add_index_file() return -1 on error
...

Second batch for 2.11Junio C Hamano Thu, 15 Sep 2016 21:13:06 +0000 (14:13 -0700)

Second batch for 2.11

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/git-gui-commit-gpgsign'Junio C Hamano Thu, 15 Sep 2016 21:11:16 +0000 (14:11 -0700)

Merge branch 'js/git-gui-commit-gpgsign'

"git commit-tree" stopped reading commit.gpgsign configuration
variable that was meant for Porcelain "git commit" in Git 2.9; we
forgot to update "git gui" to look at the configuration to match
this change.

* js/git-gui-commit-gpgsign:
git-gui: respect commit.gpgsign again

Merge branch 'js/sequencer-wo-die'Junio C Hamano Thu, 15 Sep 2016 21:11:16 +0000 (14:11 -0700)

Merge branch 'js/sequencer-wo-die'

Lifts calls to exit(2) and die() higher in the callchain in
sequencer.c files so that more helper functions in it can be used
by callers that want to handle error conditions themselves.

* js/sequencer-wo-die:
sequencer: ensure to release the lock when we could not read the index
sequencer: lib'ify checkout_fast_forward()
sequencer: lib'ify fast_forward_to()
sequencer: lib'ify save_opts()
sequencer: lib'ify save_todo()
sequencer: lib'ify save_head()
sequencer: lib'ify create_seq_dir()
sequencer: lib'ify read_populate_opts()
sequencer: lib'ify read_populate_todo()
sequencer: lib'ify read_and_refresh_cache()
sequencer: lib'ify prepare_revs()
sequencer: lib'ify walk_revs_populate_todo()
sequencer: lib'ify do_pick_commit()
sequencer: lib'ify do_recursive_merge()
sequencer: lib'ify write_message()
sequencer: do not die() in do_pick_commit()
sequencer: lib'ify sequencer_pick_revisions()

Merge branch 'sb/diff-cleanup'Junio C Hamano Thu, 15 Sep 2016 21:11:15 +0000 (14:11 -0700)

Merge branch 'sb/diff-cleanup'

Code cleanup.

* sb/diff-cleanup:
diff: remove dead code
diff: omit found pointer from emit_callback
diff.c: use diff_options directly

Merge branch 'jk/fix-remote-curl-url-wo-proto'Junio C Hamano Thu, 15 Sep 2016 21:11:15 +0000 (14:11 -0700)

Merge branch 'jk/fix-remote-curl-url-wo-proto'

"git fetch http::/site/path" did not die correctly and segfaulted
instead.

* jk/fix-remote-curl-url-wo-proto:
remote-curl: handle URLs without protocol

Merge branch 'ah/misc-message-fixes'Junio C Hamano Thu, 15 Sep 2016 21:11:15 +0000 (14:11 -0700)

Merge branch 'ah/misc-message-fixes'

Message cleanup.

* ah/misc-message-fixes:
unpack-trees: do not capitalize "working"
git-merge-octopus: do not capitalize "octopus"
git-rebase--interactive: fix English grammar
cat-file: put spaces around pipes in usage string
am: put spaces around pipe in usage string

Merge branch 'sy/git-gui-i18n-ja'Junio C Hamano Thu, 15 Sep 2016 21:11:14 +0000 (14:11 -0700)

Merge branch 'sy/git-gui-i18n-ja'

Update Japanese translation for "git-gui".

* sy/git-gui-i18n-ja:
git-gui: update Japanese information
git-gui: update Japanese translation
git-gui: add Japanese language code
git-gui: apply po template to Japanese translation
git-gui: consistently use the same word for "blame" in Japanese
git-gui: consistently use the same word for "remote" in Japanese

Merge branch 'jk/pack-tag-of-tag'Junio C Hamano Thu, 15 Sep 2016 21:11:14 +0000 (14:11 -0700)

Merge branch 'jk/pack-tag-of-tag'

"git pack-objects --include-tag" was taught that when we know that
we are sending an object C, we want a tag B that directly points at
C but also a tag A that points at the tag B. We used to miss the
intermediate tag B in some cases.

* jk/pack-tag-of-tag:
pack-objects: walk tag chains for --include-tag
t5305: simplify packname handling
t5305: use "git -C"
t5305: drop "dry-run" of unpack-objects
t5305: move cleanup into test block

Sync with maintJunio C Hamano Mon, 12 Sep 2016 22:35:14 +0000 (15:35 -0700)

Sync with maint

* maint:
l10n: zh_CN: review for git v2.10.0 l10n
l10n: zh_CN: fixed some typos for git 2.10.0
l10n: pt_PT: update Portuguese repository info
l10n: pt_PT: update Portuguese translation

First batch for 2.11Junio C Hamano Mon, 12 Sep 2016 22:35:05 +0000 (15:35 -0700)

First batch for 2.11

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'sb/transport-report-missing-submodule... Junio C Hamano Mon, 12 Sep 2016 22:34:38 +0000 (15:34 -0700)

Merge branch 'sb/transport-report-missing-submodule-on-stderr'

Message cleanup.

* sb/transport-report-missing-submodule-on-stderr:
transport: report missing submodule pushes consistently on stderr

Merge branch 'ep/use-git-trace-curl-in-tests'Junio C Hamano Mon, 12 Sep 2016 22:34:38 +0000 (15:34 -0700)

Merge branch 'ep/use-git-trace-curl-in-tests'

Update a few tests that used to use GIT_CURL_VERBOSE to use the
newer GIT_TRACE_CURL.

* ep/use-git-trace-curl-in-tests:
t5551-http-fetch-smart.sh: use the GIT_TRACE_CURL environment var
t5550-http-fetch-dumb.sh: use the GIT_TRACE_CURL environment var
test-lib.sh: preserve GIT_TRACE_CURL from the environment
t5541-http-push-smart.sh: use the GIT_TRACE_CURL environment var

Merge branch 'sb/xdiff-remove-unused-static-decl'Junio C Hamano Mon, 12 Sep 2016 22:34:38 +0000 (15:34 -0700)

Merge branch 'sb/xdiff-remove-unused-static-decl'

Code cleanup.

* sb/xdiff-remove-unused-static-decl:
xdiff: remove unneeded declarations

Merge branch 'js/t6026-clean-up'Junio C Hamano Mon, 12 Sep 2016 22:34:37 +0000 (15:34 -0700)

Merge branch 'js/t6026-clean-up'

A test spawned a short-lived background process, which sometimes
prevented the test directory from getting removed at the end of the
script on some platforms.

* js/t6026-clean-up:
t6026-merge-attr: clean up background process at end of test case

Merge branch 'js/t9903-chaining'Junio C Hamano Mon, 12 Sep 2016 22:34:37 +0000 (15:34 -0700)

Merge branch 'js/t9903-chaining'

* js/t9903-chaining:
t9903: fix broken && chain

Merge branch 'rs/hex2chr'Junio C Hamano Mon, 12 Sep 2016 22:34:36 +0000 (15:34 -0700)

Merge branch 'rs/hex2chr'

* rs/hex2chr:
introduce hex2chr() for converting two hexadecimal digits to a character

Merge branch 'rs/compat-strdup'Junio C Hamano Mon, 12 Sep 2016 22:34:36 +0000 (15:34 -0700)

Merge branch 'rs/compat-strdup'

* rs/compat-strdup:
compat: move strdup(3) replacement to its own file

Merge branch 'jc/forbid-symbolic-ref-d-HEAD'Junio C Hamano Mon, 12 Sep 2016 22:34:35 +0000 (15:34 -0700)

Merge branch 'jc/forbid-symbolic-ref-d-HEAD'

"git symbolic-ref -d HEAD" happily removes the symbolic ref, but
the resulting repository becomes an invalid one. Teach the command
to forbid removal of HEAD.

* jc/forbid-symbolic-ref-d-HEAD:
symbolic-ref -d: do not allow removal of HEAD

Merge branch 'jc/submodule-anchor-git-dir'Junio C Hamano Mon, 12 Sep 2016 22:34:34 +0000 (15:34 -0700)

Merge branch 'jc/submodule-anchor-git-dir'

Having a submodule whose ".git" repository is somehow corrupt
caused a few commands that recurse into submodules loop forever.

* jc/submodule-anchor-git-dir:
submodule: avoid auto-discovery in prepare_submodule_repo_env()

Merge branch 'jk/squelch-false-warning-from-gcc-o3'Junio C Hamano Mon, 12 Sep 2016 22:34:33 +0000 (15:34 -0700)

Merge branch 'jk/squelch-false-warning-from-gcc-o3'

* jk/squelch-false-warning-from-gcc-o3:
color_parse_mem: initialize "struct color" temporary
error_errno: use constant return similar to error()

Merge branch 'jk/test-lib-drop-pid-from-results'Junio C Hamano Mon, 12 Sep 2016 22:34:33 +0000 (15:34 -0700)

Merge branch 'jk/test-lib-drop-pid-from-results'

The test framework left the number of tests and success/failure
count in the t/test-results directory, keyed by the name of the
test script plus the process ID. The latter however turned out not
to serve any useful purpose. The process ID part of the filename
has been removed.

* jk/test-lib-drop-pid-from-results:
test-lib: drop PID from test-results/*.count

Merge branch 'jc/am-read-author-file'Junio C Hamano Mon, 12 Sep 2016 22:34:32 +0000 (15:34 -0700)

Merge branch 'jc/am-read-author-file'

Extract a small helper out of the function that reads the authors
script file "git am" internally uses.

* jc/am-read-author-file:
am: refactor read_author_script()

Merge branch 'jk/diff-submodule-diff-inline'Junio C Hamano Mon, 12 Sep 2016 22:34:31 +0000 (15:34 -0700)

Merge branch 'jk/diff-submodule-diff-inline'

The "git diff --submodule={short,log}" mechanism has been enhanced
to allow "--submodule=diff" to show the patch between the submodule
commits bound to the superproject.

* jk/diff-submodule-diff-inline:
diff: teach diff to display submodule difference with an inline diff
submodule: refactor show_submodule_summary with helper function
submodule: convert show_submodule_summary to use struct object_id *
allow do_submodule_path to work even if submodule isn't checked out
diff: prepare for additional submodule formats
graph: add support for --line-prefix on all graph-aware output
diff.c: remove output_prefix_length field
cache: add empty_tree_oid object and helper function

Merge tag 'l10n-2.10.0-rnd2.3' of git://github.com... Junio C Hamano Mon, 12 Sep 2016 22:23:42 +0000 (15:23 -0700)

Merge tag 'l10n-2.10.0-rnd2.3' of git://github.com/git-l10n/git-po into maint

l10n-2.10.0-rnd2.3

* tag 'l10n-2.10.0-rnd2.3' of git://github.com/git-l10n/git-po:
l10n: zh_CN: review for git v2.10.0 l10n
l10n: zh_CN: fixed some typos for git 2.10.0
l10n: pt_PT: update Portuguese repository info
l10n: pt_PT: update Portuguese translation

Merge branch 'js/commit-gpgsign' of ../git-gui into... Junio C Hamano Sun, 11 Sep 2016 21:53:26 +0000 (14:53 -0700)

Merge branch 'js/commit-gpgsign' of ../git-gui into js/git-gui-commit-gpgsign

* 'js/commit-gpgsign' of ../git-gui:
git-gui: respect commit.gpgsign again

git-gui: respect commit.gpgsign againJohannes Schindelin Fri, 9 Sep 2016 12:28:24 +0000 (14:28 +0200)

git-gui: respect commit.gpgsign again

As of v2.9.0, `git commit-tree` no longer heeds the `commit.gpgsign`
config setting. This broke committing with GPG signature in Git GUI.

This fixes https://github.com/git-for-windows/git/issues/850

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: zh_CN: review for git v2.10.0 l10nRay Chen Wed, 7 Sep 2016 10:03:04 +0000 (18:03 +0800)

l10n: zh_CN: review for git v2.10.0 l10n

Signed-off-by: Ray Chen <oldsharp@gmail.com>

l10n: zh_CN: fixed some typos for git 2.10.0Jiang Xin Mon, 5 Sep 2016 15:26:21 +0000 (23:26 +0800)

l10n: zh_CN: fixed some typos for git 2.10.0

Reviewed-by: Ray <tvvocold@163.com>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

refs: implement iteration over only per-worktree refsDavid Turner Sun, 4 Sep 2016 16:08:44 +0000 (18:08 +0200)

refs: implement iteration over only per-worktree refs

Alternate refs backends might still use files to store per-worktree
refs. So provide a way to iterate over only the per-worktree references
in a ref_store. The other backend can set up a files ref_store and
iterate using the new DO_FOR_EACH_PER_WORKTREE_ONLY flag when iterating.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: make lock genericDavid Turner Sun, 4 Sep 2016 16:08:43 +0000 (18:08 +0200)

refs: make lock generic

Instead of including a files-backend-specific struct ref_lock, change
the generic ref_update struct to include a void pointer that backends
can use for their own arbitrary data.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: add method to rename refsDavid Turner Sun, 4 Sep 2016 16:08:42 +0000 (18:08 +0200)

refs: add method to rename refs

This removes the last caller of function get_files_ref_store(), so
remove it.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: add methods to init refs dbDavid Turner Sun, 4 Sep 2016 16:08:41 +0000 (18:08 +0200)

refs: add methods to init refs db

Alternate refs backends might not need the refs/heads directory and so
on, so we make ref db initialization part of the backend.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: make delete_refs() virtualDavid Turner Sun, 4 Sep 2016 16:08:40 +0000 (18:08 +0200)

refs: make delete_refs() virtual

In the file-based backend, delete_refs has some special optimization
to deal with packed refs. In other backends, we might be able to make
ref deletion faster by putting all deletions into a single
transaction. So we need a special backend function for this.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: add method for initial ref transaction commitDavid Turner Sun, 4 Sep 2016 16:08:39 +0000 (18:08 +0200)

refs: add method for initial ref transaction commit

Signed-off-by: Ronnie Sahlberg <rsahlberg@google.com>
Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: add methods for reflogDavid Turner Sun, 4 Sep 2016 16:08:38 +0000 (18:08 +0200)

refs: add methods for reflog

In the file-based backend, the reflog piggybacks on the ref lock.
Since other backends won't have the same sort of ref lock, ref backends
must also handle reflogs.

Signed-off-by: Ronnie Sahlberg <rsahlberg@google.com>
Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: add method iterator_beginMichael Haggerty Sun, 4 Sep 2016 16:08:37 +0000 (18:08 +0200)

refs: add method iterator_begin

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

files_ref_iterator_begin(): take a ref_store argumentMichael Haggerty Sun, 4 Sep 2016 16:08:36 +0000 (18:08 +0200)

files_ref_iterator_begin(): take a ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

split_symref_update(): add a files_ref_store argumentMichael Haggerty Sun, 4 Sep 2016 16:08:35 +0000 (18:08 +0200)

split_symref_update(): add a files_ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

lock_ref_sha1_basic(): add a files_ref_store argumentMichael Haggerty Sun, 4 Sep 2016 16:08:34 +0000 (18:08 +0200)

lock_ref_sha1_basic(): add a files_ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

lock_ref_for_update(): add a files_ref_store argumentMichael Haggerty Sun, 4 Sep 2016 16:08:33 +0000 (18:08 +0200)

lock_ref_for_update(): add a files_ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit_ref_update(): add a files_ref_store argumentMichael Haggerty Sun, 4 Sep 2016 16:08:32 +0000 (18:08 +0200)

commit_ref_update(): add a files_ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

lock_raw_ref(): add a files_ref_store argumentMichael Haggerty Sun, 4 Sep 2016 16:08:31 +0000 (18:08 +0200)

lock_raw_ref(): add a files_ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

repack_without_refs(): add a files_ref_store argumentMichael Haggerty Sun, 4 Sep 2016 16:08:30 +0000 (18:08 +0200)

repack_without_refs(): add a files_ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: make peel_ref() virtualMichael Haggerty Sun, 4 Sep 2016 16:08:29 +0000 (18:08 +0200)

refs: make peel_ref() virtual

For now it only supports the main reference store.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: make create_symref() virtualMichael Haggerty Sun, 4 Sep 2016 16:08:28 +0000 (18:08 +0200)

refs: make create_symref() virtual

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: make pack_refs() virtualMichael Haggerty Sun, 4 Sep 2016 16:08:27 +0000 (18:08 +0200)

refs: make pack_refs() virtual

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: make verify_refname_available() virtualMichael Haggerty Sun, 4 Sep 2016 16:08:26 +0000 (18:08 +0200)

refs: make verify_refname_available() virtual

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: make read_raw_ref() virtualMichael Haggerty Sun, 4 Sep 2016 16:08:25 +0000 (18:08 +0200)

refs: make read_raw_ref() virtual

Reference backends will be able to customize this function to implement
reference reading.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_gitlink_ref(): rename path parameter to submoduleMichael Haggerty Sun, 4 Sep 2016 16:08:24 +0000 (18:08 +0200)

resolve_gitlink_ref(): rename path parameter to submodule

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_gitlink_ref(): avoid memory allocation in many... Michael Haggerty Sun, 4 Sep 2016 16:08:23 +0000 (18:08 +0200)

resolve_gitlink_ref(): avoid memory allocation in many cases

If we don't have to strip trailing '/' from the submodule path, then
don't allocate and copy the submodule name.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_gitlink_ref(): implement using resolve_ref_recu... Michael Haggerty Sun, 4 Sep 2016 16:08:22 +0000 (18:08 +0200)

resolve_gitlink_ref(): implement using resolve_ref_recursively()

resolve_ref_recursively() can handle references in arbitrary files
reference stores, so use it to resolve "gitlink" (i.e., submodule)
references. Aside from removing redundant code, this allows submodule
lookups to benefit from the much more robust code that we use for
reading non-submodule references. And, since the code is now agnostic
about reference backends, it will work for any future references
backend (so move its definition to refs.c).

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref_recursively(): new functionMichael Haggerty Sun, 4 Sep 2016 16:08:21 +0000 (18:08 +0200)

resolve_ref_recursively(): new function

Add a new function, resolve_ref_recursively(), which is basically like
the old resolve_ref_unsafe() except that it takes a (ref_store *)
argument and also works for submodules.

Re-implement resolve_ref_unsafe() as a thin wrapper around
resolve_ref_recursively().

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

read_raw_ref(): take a (struct ref_store *) argumentMichael Haggerty Sun, 4 Sep 2016 16:08:20 +0000 (18:08 +0200)

read_raw_ref(): take a (struct ref_store *) argument

And make the function work for submodules.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_gitlink_packed_ref(): remove functionMichael Haggerty Sun, 4 Sep 2016 16:08:19 +0000 (18:08 +0200)

resolve_gitlink_packed_ref(): remove function

Now that resolve_packed_ref() can work with an arbitrary
files_ref_store, there is no need to have a separate
resolve_gitlink_packed_ref() function.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_packed_ref(): rename function from resolve_miss... Michael Haggerty Sun, 4 Sep 2016 16:08:18 +0000 (18:08 +0200)

resolve_packed_ref(): rename function from resolve_missing_loose_ref()

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: reorder definitionsMichael Haggerty Sun, 4 Sep 2016 16:08:17 +0000 (18:08 +0200)

refs: reorder definitions

Move resolve_gitlink_ref() and related functions lower in the file to
avoid the need for forward declarations in the next step.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: add a transaction_commit() methodRonnie Sahlberg Sun, 4 Sep 2016 16:08:16 +0000 (18:08 +0200)

refs: add a transaction_commit() method

Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

{lock,commit,rollback}_packed_refs(): add files_ref_sto... Michael Haggerty Sun, 4 Sep 2016 16:08:15 +0000 (18:08 +0200)

{lock,commit,rollback}_packed_refs(): add files_ref_store arguments

These functions currently only work in the main repository, so add an
assert_main_repository() check to each function.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_missing_loose_ref(): add a files_ref_store... Michael Haggerty Sun, 4 Sep 2016 16:08:14 +0000 (18:08 +0200)

resolve_missing_loose_ref(): add a files_ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

get_packed_ref(): add a files_ref_store argumentMichael Haggerty Sun, 4 Sep 2016 16:08:13 +0000 (18:08 +0200)

get_packed_ref(): add a files_ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add_packed_ref(): add a files_ref_store argumentMichael Haggerty Sun, 4 Sep 2016 16:08:12 +0000 (18:08 +0200)

add_packed_ref(): add a files_ref_store argument

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: create a base class "ref_store" for files_ref_storeMichael Haggerty Sun, 4 Sep 2016 16:08:11 +0000 (18:08 +0200)

refs: create a base class "ref_store" for files_ref_store

We want ref_stores to be polymorphic, so invent a base class of which
files_ref_store is a derived class. For now there is exactly one
ref_store for the main repository and one for any submodules whose
references have been accessed.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: add a backend method structureRonnie Sahlberg Sun, 4 Sep 2016 16:08:10 +0000 (18:08 +0200)

refs: add a backend method structure

Add a `struct ref_storage_be` to represent types of reference stores. In
OO notation, this is the class, and will soon hold some class
methods (e.g., a factory to create new ref_store instances) and will
also serve as the vtable for ref_store instances of that type.

As yet, the backends cannot do anything.

Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: rename struct ref_cache to files_ref_storeMichael Haggerty Sun, 4 Sep 2016 16:08:09 +0000 (18:08 +0200)

refs: rename struct ref_cache to files_ref_store

The greater goal of this patch series is to develop the concept of a
reference store, which is a place that references, their values, and
their reflogs are stored, and to virtualize the reference interface so
that different types of ref_stores can be implemented. We will then, for
example, use ref_store instances to access submodule references and
worktree references.

Currently, we keep a ref_cache for each submodule that has had its
references iterated over. It is a far cry from a ref_store, but they are
stored the way we will want to store ref_stores, and ref_stores will
eventually have to hold the reference caches. So let's treat ref_caches
as embryo ref_stores, and build them out from there.

As the first step, simply rename `ref_cache` to `files_ref_store`, and
rename some functions and attributes correspondingly.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rename_ref_available(): add docstringDavid Turner Sun, 4 Sep 2016 16:08:08 +0000 (18:08 +0200)

rename_ref_available(): add docstring

And improve the internal variable names.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_gitlink_ref(): eliminate temporary variableMichael Haggerty Sun, 4 Sep 2016 16:08:07 +0000 (18:08 +0200)

resolve_gitlink_ref(): eliminate temporary variable

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: ensure to release the lock when we could... Johannes Schindelin Fri, 9 Sep 2016 14:38:20 +0000 (16:38 +0200)

sequencer: ensure to release the lock when we could not read the index

A future caller of read_and_refresh_cache() may want to do more than just
print some helpful advice in case of failure.

Suggested by Junio Hamano.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify checkout_fast_forward()Johannes Schindelin Fri, 9 Sep 2016 14:38:00 +0000 (16:38 +0200)

sequencer: lib'ify checkout_fast_forward()

Instead of dying there, let the caller high up in the callchain
notice the error and handle it (by dying, still).

The only callers of checkout_fast_forward(), cmd_merge(),
pull_into_void(), cmd_pull() and sequencer's fast_forward_to(),
already check the return value and handle it appropriately. With this
step, we make it notice an error return from this function.

So this is a safe conversion to make checkout_fast_forward()
callable from new callers that want it not to die, without changing
the external behaviour of anything existing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify fast_forward_to()Johannes Schindelin Fri, 9 Sep 2016 14:37:55 +0000 (16:37 +0200)

sequencer: lib'ify fast_forward_to()

Instead of dying there, let the caller high up in the callchain
notice the error and handle it (by dying, still).

The only caller of fast_forward_to(), do_pick_commit() already checks
the return value and passes it on to its callers, so its caller must
be already prepared to handle error returns, and with this step, we
make it notice an error return from this function.

So this is a safe conversion to make fast_forward_to() callable from
new callers that want it not to die, without changing the external
behaviour of anything existing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify save_opts()Johannes Schindelin Fri, 9 Sep 2016 14:37:53 +0000 (16:37 +0200)

sequencer: lib'ify save_opts()

Instead of dying there, let the caller high up in the callchain notice
the error and handle it (by dying, still).

The only caller of save_opts(), sequencer_pick_revisions() can already
return errors, so its caller must be already prepared to handle error
returns, and with this step, we make it notice an error return from
this function.

So this is a safe conversion to make save_opts() callable from new
callers that want it not to die, without changing the external
behaviour of anything existing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify save_todo()Johannes Schindelin Fri, 9 Sep 2016 14:37:50 +0000 (16:37 +0200)

sequencer: lib'ify save_todo()

Instead of dying there, let the caller high up in the callchain notice
the error and handle it (by dying, still).

The only caller of save_todo(), pick_commits() can already return
errors, so its caller must be already prepared to handle error
returns, and with this step, we make it notice an error return from
this function.

So this is a safe conversion to make save_todo() callable
from new callers that want it not to die, without changing the
external behaviour of anything existing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify save_head()Johannes Schindelin Fri, 9 Sep 2016 14:37:47 +0000 (16:37 +0200)

sequencer: lib'ify save_head()

Instead of dying there, let the caller high up in the callchain notice
the error and handle it (by dying, still).

The only caller of save_head(), sequencer_pick_revisions() can already
return errors, so its caller must be already prepared to handle error
returns, and with this step, we make it notice an error return from
this function.

So this is a safe conversion to make save_head() callable from new
callers that want it not to die, without changing the external
behaviour of anything existing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify create_seq_dir()Johannes Schindelin Fri, 9 Sep 2016 14:37:44 +0000 (16:37 +0200)

sequencer: lib'ify create_seq_dir()

Instead of dying there, let the caller high up in the callchain notice
the error and handle it (by dying, still).

The only caller of create_seq_dir(), sequencer_pick_revisions() can
already return errors, so its caller must be already prepared to
handle error returns, and with this step, we make it notice an error
return from this function.

So this is a safe conversion to make create_seq_dir() callable from
new callers that want it not to die, without changing the external
behaviour of anything existing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify read_populate_opts()Johannes Schindelin Fri, 9 Sep 2016 14:37:27 +0000 (16:37 +0200)

sequencer: lib'ify read_populate_opts()

Instead of dying there, let the caller high up in the callchain notice
the error and handle it (by dying, still).

The only caller of read_populate_opts(), sequencer_continue() can
already return errors, so its caller must be already prepared to
handle error returns, and with this step, we make it notice an error
return from this function.

So this is a safe conversion to make read_populate_opts() callable
from new callers that want it not to die, without changing the
external behaviour of anything existing.

Note that the function git_config_from_file(), called from
read_populate_opts(), can currently still die() (in git_parse_source(),
because the do_config_from_file() function sets die_on_error = 1). We do
not try to fix that here, as it would have larger ramifications on the
config code, and we also assume that we write the opts file
programmatically, hence any parse errors would be bugs.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify read_populate_todo()Johannes Schindelin Fri, 9 Sep 2016 14:37:24 +0000 (16:37 +0200)

sequencer: lib'ify read_populate_todo()

Instead of dying there, let the caller high up in the callchain
notice the error and handle it (by dying, still).

The only caller of read_populate_todo(), sequencer_continue() can
already return errors, so its caller must be already prepared to
handle error returns, and with this step, we make it notice an
error return from this function.

So this is a safe conversion to make read_populate_todo() callable
from new callers that want it not to die, without changing the
external behaviour of anything existing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify read_and_refresh_cache()Johannes Schindelin Fri, 9 Sep 2016 14:37:21 +0000 (16:37 +0200)

sequencer: lib'ify read_and_refresh_cache()

Instead of dying there, let the caller high up in the callchain
notice the error and handle it (by dying, still).

There are two call sites of read_and_refresh_cache(), one of which is
pick_commits(), whose callers were already prepared to do the right
thing given an "error" return from it by an earlier patch, so the
conversion is safe.

The other one, sequencer_pick_revisions() was also prepared to relay
an error return back to its caller in all remaining cases in an
earlier patch.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: lib'ify prepare_revs()Johannes Schindelin Fri, 9 Sep 2016 14:37:18 +0000 (16:37 +0200)

sequencer: lib'ify prepare_revs()

Instead of dying there, let the caller high up in the callchain notice
the error and handle it (by dying, still).

The only caller of prepare_revs(), walk_revs_populate_todo() was just
taught to return errors, after verifying that its callers are prepared
to handle error returns, and with this step, we make it notice an
error return from this function.

So this is a safe conversion to make prepare_revs() callable from new
callers that want it not to die, without changing the external
behaviour of anything existing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>