Merge branch 'as/describe-broken-refresh-index-fix'
"git describe --dirty --broken" forgot to refresh the index before seeing if there is any chang, ("git describe --dirty" correctly did so), which has been corrected. * as/describe-broken-refresh-index-fix: describe: refresh the index when 'broken' flag is usedmaint
commit
b227482ea0
|
@ -53,6 +53,10 @@ static const char *diff_index_args[] = {
|
|||
"diff-index", "--quiet", "HEAD", "--", NULL
|
||||
};
|
||||
|
||||
static const char *update_index_args[] = {
|
||||
"update-index", "--unmerged", "-q", "--refresh", NULL
|
||||
};
|
||||
|
||||
struct commit_name {
|
||||
struct hashmap_entry entry;
|
||||
struct object_id peeled;
|
||||
|
@ -645,6 +649,14 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
|
|||
if (argc == 0) {
|
||||
if (broken) {
|
||||
struct child_process cp = CHILD_PROCESS_INIT;
|
||||
|
||||
strvec_pushv(&cp.args, update_index_args);
|
||||
cp.git_cmd = 1;
|
||||
cp.no_stdin = 1;
|
||||
cp.no_stdout = 1;
|
||||
run_command(&cp);
|
||||
|
||||
child_process_init(&cp);
|
||||
strvec_pushv(&cp.args, diff_index_args);
|
||||
cp.git_cmd = 1;
|
||||
cp.no_stdin = 1;
|
||||
|
|
|
@ -671,4 +671,40 @@ test_expect_success 'setup misleading taggerdates' '
|
|||
|
||||
check_describe newer-tag-older-commit~1 --contains unique-file~2
|
||||
|
||||
test_expect_success 'describe --dirty with a file with changed stat' '
|
||||
test_when_finished "rm -fr stat-dirty" &&
|
||||
git init stat-dirty &&
|
||||
(
|
||||
cd stat-dirty &&
|
||||
|
||||
echo A >file &&
|
||||
git add file &&
|
||||
git commit -m A &&
|
||||
git tag A -a -m A &&
|
||||
echo "A" >expect &&
|
||||
|
||||
test-tool chmtime -10 file &&
|
||||
git describe --dirty >actual &&
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'describe --broken --dirty with a file with changed stat' '
|
||||
test_when_finished "rm -fr stat-dirty" &&
|
||||
git init stat-dirty &&
|
||||
(
|
||||
cd stat-dirty &&
|
||||
|
||||
echo A >file &&
|
||||
git add file &&
|
||||
git commit -m A &&
|
||||
git tag A -a -m A &&
|
||||
echo "A" >expect &&
|
||||
|
||||
test-tool chmtime -10 file &&
|
||||
git describe --dirty --broken >actual &&
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Loading…
Reference in New Issue