mirror of
https://github.com/git/git.git
synced 2024-10-28 04:49:43 +01:00
builtin/diff: explicitly set hash algo when there is no repo
The git-diff(1) command can be used outside repositories to diff two files with each other. But even if there is no repository we will end up hashing the files that we are diffing so that we can print the "index" line: ``` diff --git a/a b/b index 7898192..6178079 100644 --- a/a +++ b/b @@ -1 +1 @@ -a +b ``` We implicitly use SHA1 to calculate the hash here, which is because `the_repository` gets initialized with SHA1 during the startup routine. We are about to stop doing this though such that `the_repository` only ever has a hash function when it was properly initialized via a repo's configuration. To give full control to our users, we would ideally add a new switch to git-diff(1) that allows them to specify the hash function when executed outside of a repository. But for now, we only convert the code to make this explicit such that we can stop setting the default hash algorithm for `the_repository`. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
332b56b762
commit
ab274909d4
1 changed files with 9 additions and 0 deletions
|
@ -465,6 +465,15 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
|
|||
no_index = DIFF_NO_INDEX_IMPLICIT;
|
||||
}
|
||||
|
||||
/*
|
||||
* When operating outside of a Git repository we need to have a hash
|
||||
* algorithm at hand so that we can generate the blob hashes. We
|
||||
* default to SHA1 here, but may eventually want to change this to be
|
||||
* configurable via a command line option.
|
||||
*/
|
||||
if (nongit)
|
||||
repo_set_hash_algo(the_repository, GIT_HASH_SHA1);
|
||||
|
||||
init_diff_ui_defaults();
|
||||
git_config(git_diff_ui_config, NULL);
|
||||
prefix = precompose_argv_prefix(argc, argv, prefix);
|
||||
|
|
Loading…
Reference in a new issue