mirror of
https://github.com/git/git.git
synced 2025-04-22 18:17:14 +00:00
Merge branch 'cc/replace-no-replace'
* cc/replace-no-replace: git: add --no-replace-objects option to disable replacing
This commit is contained in:
commit
804edc13ae
@ -23,6 +23,26 @@ replacement object.
|
||||
Unless `-f` is given, the replace reference must not yet exist in
|
||||
`.git/refs/replace/` directory.
|
||||
|
||||
Replace references will be used by default by all git commands except
|
||||
those doing reachability traversal (prune, pack transfer and fsck).
|
||||
|
||||
It is possible to disable use of replacement refs for any command
|
||||
using the --no-replace-objects option just after "git".
|
||||
|
||||
For example if commit "foo" has been replaced by commit "bar":
|
||||
|
||||
------------------------------------------------
|
||||
$ git --no-replace-object cat-file commit foo
|
||||
------------------------------------------------
|
||||
|
||||
show information about commit "foo", while:
|
||||
|
||||
------------------------------------------------
|
||||
$ git cat-file commit foo
|
||||
------------------------------------------------
|
||||
|
||||
show information about commit "bar".
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
-f::
|
||||
@ -54,6 +74,7 @@ SEE ALSO
|
||||
--------
|
||||
linkgit:git-tag[1]
|
||||
linkgit:git-branch[1]
|
||||
linkgit:git[1]
|
||||
|
||||
Author
|
||||
------
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
|
||||
[-p|--paginate|--no-pager]
|
||||
[-p|--paginate|--no-pager] [--no-replace-objects]
|
||||
[--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
|
||||
[--help] COMMAND [ARGS]
|
||||
|
||||
@ -238,6 +238,10 @@ help ...`.
|
||||
environment is not set, it is set to the current working
|
||||
directory.
|
||||
|
||||
--no-replace-objects::
|
||||
Do not use replacement refs to replace git objects. See
|
||||
linkgit:git-replace[1] for more information.
|
||||
|
||||
|
||||
FURTHER DOCUMENTATION
|
||||
---------------------
|
||||
|
4
git.c
4
git.c
@ -6,7 +6,7 @@
|
||||
|
||||
const char git_usage_string[] =
|
||||
"git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]\n"
|
||||
" [-p|--paginate|--no-pager]\n"
|
||||
" [-p|--paginate|--no-pager] [--no-replace-objects]\n"
|
||||
" [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]\n"
|
||||
" [--help] COMMAND [ARGS]";
|
||||
|
||||
@ -87,6 +87,8 @@ static int handle_options(const char ***argv, int *argc, int *envchanged)
|
||||
use_pager = 0;
|
||||
if (envchanged)
|
||||
*envchanged = 1;
|
||||
} else if (!strcmp(cmd, "--no-replace-objects")) {
|
||||
read_replace_refs = 0;
|
||||
} else if (!strcmp(cmd, "--git-dir")) {
|
||||
if (*argc < 2) {
|
||||
fprintf(stderr, "No directory given for --git-dir.\n" );
|
||||
|
@ -70,6 +70,13 @@ test_expect_success 'replace the author' '
|
||||
git show $HASH2 | grep "O Thor"
|
||||
'
|
||||
|
||||
test_expect_success 'test --no-replace-objects option' '
|
||||
git cat-file commit $HASH2 | grep "author O Thor" &&
|
||||
git --no-replace-objects cat-file commit $HASH2 | grep "author A U Thor" &&
|
||||
git show $HASH2 | grep "O Thor" &&
|
||||
git --no-replace-objects show $HASH2 | grep "A U Thor"
|
||||
'
|
||||
|
||||
cat >tag.sig <<EOF
|
||||
object $HASH2
|
||||
type commit
|
||||
|
Loading…
x
Reference in New Issue
Block a user