зеркало из https://github.com/microsoft/git.git
reset: reinstate support for the deprecated --stdin option
The `--stdin` option was a well-established paradigm in other commands, therefore we implemented it in `git reset` for use by Visual Studio. Unfortunately, upstream Git decided that it is time to introduce `--pathspec-from-file` instead. To keep backwards-compatibility for some grace period, we therefore reinstate the `--stdin` option on top of the `--pathspec-from-file` option, but mark it firmly as deprecated. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Родитель
24c99f401e
Коммит
c7fdd31e3e
|
@ -12,6 +12,7 @@ SYNOPSIS
|
||||||
'git reset' [-q] [--pathspec-from-file=<file> [--pathspec-file-nul]] [<tree-ish>]
|
'git reset' [-q] [--pathspec-from-file=<file> [--pathspec-file-nul]] [<tree-ish>]
|
||||||
'git reset' (--patch | -p) [<tree-ish>] [--] [<pathspec>...]
|
'git reset' (--patch | -p) [<tree-ish>] [--] [<pathspec>...]
|
||||||
'git reset' [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
|
'git reset' [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
|
||||||
|
DEPRECATED: 'git reset' [-q] [--stdin [-z]] [<tree-ish>]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -133,6 +134,16 @@ OPTIONS
|
||||||
+
|
+
|
||||||
For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
|
For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
|
||||||
|
|
||||||
|
--stdin::
|
||||||
|
DEPRECATED (use `--pathspec-from-file=-` instead): Instead of taking
|
||||||
|
list of paths from the command line, read list of paths from the
|
||||||
|
standard input. Paths are separated by LF (i.e. one path per line) by
|
||||||
|
default.
|
||||||
|
|
||||||
|
-z::
|
||||||
|
DEPRECATED (use `--pathspec-file-nul` instead): Only meaningful with
|
||||||
|
`--stdin`; paths are separated with NUL character instead of LF.
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
#include "submodule-config.h"
|
#include "submodule-config.h"
|
||||||
#include "dir.h"
|
#include "dir.h"
|
||||||
#include "add-interactive.h"
|
#include "add-interactive.h"
|
||||||
|
#include "strbuf.h"
|
||||||
|
#include "quote.h"
|
||||||
|
|
||||||
#define REFRESH_INDEX_DELAY_WARNING_IN_MS (2 * 1000)
|
#define REFRESH_INDEX_DELAY_WARNING_IN_MS (2 * 1000)
|
||||||
|
|
||||||
|
@ -35,6 +37,7 @@ static const char * const git_reset_usage[] = {
|
||||||
N_("git reset [-q] [<tree-ish>] [--] <pathspec>..."),
|
N_("git reset [-q] [<tree-ish>] [--] <pathspec>..."),
|
||||||
N_("git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"),
|
N_("git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"),
|
||||||
N_("git reset --patch [<tree-ish>] [--] [<pathspec>...]"),
|
N_("git reset --patch [<tree-ish>] [--] [<pathspec>...]"),
|
||||||
|
N_("DEPRECATED: git reset [-q] [--stdin [-z]] [<tree-ish>]"),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -321,6 +324,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
|
||||||
struct object_id oid;
|
struct object_id oid;
|
||||||
struct pathspec pathspec;
|
struct pathspec pathspec;
|
||||||
int intent_to_add = 0;
|
int intent_to_add = 0;
|
||||||
|
int nul_term_line = 0, read_from_stdin = 0;
|
||||||
const struct option options[] = {
|
const struct option options[] = {
|
||||||
OPT__QUIET(&quiet, N_("be quiet, only report errors")),
|
OPT__QUIET(&quiet, N_("be quiet, only report errors")),
|
||||||
OPT_BOOL(0, "no-refresh", &no_refresh,
|
OPT_BOOL(0, "no-refresh", &no_refresh,
|
||||||
|
@ -342,6 +346,10 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
|
||||||
N_("record only the fact that removed paths will be added later")),
|
N_("record only the fact that removed paths will be added later")),
|
||||||
OPT_PATHSPEC_FROM_FILE(&pathspec_from_file),
|
OPT_PATHSPEC_FROM_FILE(&pathspec_from_file),
|
||||||
OPT_PATHSPEC_FILE_NUL(&pathspec_file_nul),
|
OPT_PATHSPEC_FILE_NUL(&pathspec_file_nul),
|
||||||
|
OPT_BOOL('z', NULL, &nul_term_line,
|
||||||
|
N_("DEPRECATED (use --pathspec-file-nul instead): paths are separated with NUL character")),
|
||||||
|
OPT_BOOL(0, "stdin", &read_from_stdin,
|
||||||
|
N_("DEPRECATED (use --pathspec-from-file=- instead): read paths from <stdin>")),
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -351,6 +359,12 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
|
||||||
PARSE_OPT_KEEP_DASHDASH);
|
PARSE_OPT_KEEP_DASHDASH);
|
||||||
parse_args(&pathspec, argv, prefix, patch_mode, &rev);
|
parse_args(&pathspec, argv, prefix, patch_mode, &rev);
|
||||||
|
|
||||||
|
if (read_from_stdin) {
|
||||||
|
pathspec_from_file = "-";
|
||||||
|
if (nul_term_line)
|
||||||
|
pathspec_file_nul = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (pathspec_from_file) {
|
if (pathspec_from_file) {
|
||||||
if (patch_mode)
|
if (patch_mode)
|
||||||
die(_("options '%s' and '%s' cannot be used together"), "--pathspec-from-file", "--patch");
|
die(_("options '%s' and '%s' cannot be used together"), "--pathspec-from-file", "--patch");
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='reset --stdin'
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success 'reset --stdin' '
|
||||||
|
test_commit hello &&
|
||||||
|
git rm hello.t &&
|
||||||
|
test -z "$(git ls-files hello.t)" &&
|
||||||
|
echo hello.t | git reset --stdin &&
|
||||||
|
test hello.t = "$(git ls-files hello.t)"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'reset --stdin -z' '
|
||||||
|
test_commit world &&
|
||||||
|
git rm hello.t world.t &&
|
||||||
|
test -z "$(git ls-files hello.t world.t)" &&
|
||||||
|
printf world.tQworld.tQhello.tQ | q_to_nul | git reset --stdin -z &&
|
||||||
|
printf "hello.t\nworld.t\n" >expect &&
|
||||||
|
git ls-files >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success '--stdin requires --mixed' '
|
||||||
|
echo hello.t >list &&
|
||||||
|
test_must_fail git reset --soft --stdin <list &&
|
||||||
|
test_must_fail git reset --hard --stdin <list &&
|
||||||
|
git reset --mixed --stdin <list
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Загрузка…
Ссылка в новой задаче