зеркало из https://github.com/microsoft/git.git
Merge branch 'maint'
* maint: config: add test cases for empty value and no value config variables. cvsimport: have default merge regex also match beginning of commit message git clone -s documentation: force a new paragraph for the NOTE status: suggest "git rm --cached" to unstage for initial commit Protect get_author_ident_from_commit() from filenames in work tree upload-pack: Initialize the exec-path. bisect: use verbatim commit subject in the bisect log git-cvsimport.txt: fix '-M' description. Revert "pack-objects: only throw away data during memory pressure"
This commit is contained in:
Коммит
aa8d53ec38
|
@ -62,12 +62,13 @@ OPTIONS
|
||||||
.git/objects/info/alternates to share the objects
|
.git/objects/info/alternates to share the objects
|
||||||
with the source repository. The resulting repository
|
with the source repository. The resulting repository
|
||||||
starts out without any object of its own.
|
starts out without any object of its own.
|
||||||
*NOTE*: this is a possibly dangerous operation; do *not* use
|
+
|
||||||
it unless you understand what it does. If you clone your
|
*NOTE*: this is a possibly dangerous operation; do *not* use
|
||||||
repository using this option, then delete branches in the
|
it unless you understand what it does. If you clone your
|
||||||
source repository and then run linkgit:git-gc[1] using the
|
repository using this option, then delete branches in the
|
||||||
'--prune' option in the source repository, it may remove
|
source repository and then run linkgit:git-gc[1] using the
|
||||||
objects which are referenced by the cloned repository.
|
'--prune' option in the source repository, it may remove
|
||||||
|
objects which are referenced by the cloned repository.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -107,8 +107,8 @@ If you need to pass multiple options, separate them with a comma.
|
||||||
|
|
||||||
-M <regex>::
|
-M <regex>::
|
||||||
Attempt to detect merges based on the commit message with a custom
|
Attempt to detect merges based on the commit message with a custom
|
||||||
regex. It can be used with '-m' to also see the default regexes.
|
regex. It can be used with '-m' to enable the default regexes
|
||||||
You must escape forward slashes.
|
as well. You must escape forward slashes.
|
||||||
|
|
||||||
-S <regex>::
|
-S <regex>::
|
||||||
Skip paths matching the regex.
|
Skip paths matching the regex.
|
||||||
|
|
|
@ -1464,7 +1464,7 @@ static unsigned int check_delta_limit(struct object_entry *me, unsigned int n)
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned long free_unpacked_data(struct unpacked *n)
|
static unsigned long free_unpacked(struct unpacked *n)
|
||||||
{
|
{
|
||||||
unsigned long freed_mem = sizeof_delta_index(n->index);
|
unsigned long freed_mem = sizeof_delta_index(n->index);
|
||||||
free_delta_index(n->index);
|
free_delta_index(n->index);
|
||||||
|
@ -1474,12 +1474,6 @@ static unsigned long free_unpacked_data(struct unpacked *n)
|
||||||
free(n->data);
|
free(n->data);
|
||||||
n->data = NULL;
|
n->data = NULL;
|
||||||
}
|
}
|
||||||
return freed_mem;
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned long free_unpacked(struct unpacked *n)
|
|
||||||
{
|
|
||||||
unsigned long freed_mem = free_unpacked_data(n);
|
|
||||||
n->entry = NULL;
|
n->entry = NULL;
|
||||||
n->depth = 0;
|
n->depth = 0;
|
||||||
return freed_mem;
|
return freed_mem;
|
||||||
|
@ -1520,7 +1514,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size,
|
||||||
mem_usage > window_memory_limit &&
|
mem_usage > window_memory_limit &&
|
||||||
count > 1) {
|
count > 1) {
|
||||||
uint32_t tail = (idx + window - count) % window;
|
uint32_t tail = (idx + window - count) % window;
|
||||||
mem_usage -= free_unpacked_data(array + tail);
|
mem_usage -= free_unpacked(array + tail);
|
||||||
count--;
|
count--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1553,9 +1547,6 @@ static void find_deltas(struct object_entry **list, unsigned *list_size,
|
||||||
if (!m->entry)
|
if (!m->entry)
|
||||||
break;
|
break;
|
||||||
ret = try_delta(n, m, max_depth, &mem_usage);
|
ret = try_delta(n, m, max_depth, &mem_usage);
|
||||||
if (window_memory_limit &&
|
|
||||||
mem_usage > window_memory_limit)
|
|
||||||
mem_usage -= free_unpacked_data(m);
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
break;
|
break;
|
||||||
else if (ret > 0)
|
else if (ret > 0)
|
||||||
|
|
|
@ -135,7 +135,7 @@ bisect_write() {
|
||||||
*) die "Bad bisect_write argument: $state" ;;
|
*) die "Bad bisect_write argument: $state" ;;
|
||||||
esac
|
esac
|
||||||
git update-ref "refs/bisect/$tag" "$rev"
|
git update-ref "refs/bisect/$tag" "$rev"
|
||||||
echo "# $state: "$(git show-branch $rev) >>"$GIT_DIR/BISECT_LOG"
|
echo "# $state: $(git show-branch $rev)" >>"$GIT_DIR/BISECT_LOG"
|
||||||
test -z "$nolog" && echo "git-bisect $state $rev" >>"$GIT_DIR/BISECT_LOG"
|
test -z "$nolog" && echo "git-bisect $state $rev" >>"$GIT_DIR/BISECT_LOG"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ if ($#ARGV == 0) {
|
||||||
|
|
||||||
our @mergerx = ();
|
our @mergerx = ();
|
||||||
if ($opt_m) {
|
if ($opt_m) {
|
||||||
@mergerx = ( qr/\W(?:from|of|merge|merging|merged) (\w+)/i );
|
@mergerx = ( qr/\b(?:from|of|merge|merging|merged) (\w+)/i );
|
||||||
}
|
}
|
||||||
if ($opt_M) {
|
if ($opt_M) {
|
||||||
push (@mergerx, qr/$opt_M/);
|
push (@mergerx, qr/$opt_M/);
|
||||||
|
|
|
@ -119,7 +119,7 @@ get_author_ident_from_commit () {
|
||||||
}
|
}
|
||||||
'
|
'
|
||||||
encoding=$(git config i18n.commitencoding || echo UTF-8)
|
encoding=$(git config i18n.commitencoding || echo UTF-8)
|
||||||
git show -s --pretty=raw --encoding="$encoding" "$1" |
|
git show -s --pretty=raw --encoding="$encoding" "$1" -- |
|
||||||
LANG=C LC_ALL=C sed -ne "$pick_author_script"
|
LANG=C LC_ALL=C sed -ne "$pick_author_script"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -340,4 +340,26 @@ test_expect_success 'rebase a commit violating pre-commit' '
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase with a file named HEAD in worktree' '
|
||||||
|
|
||||||
|
rm -fr .git/hooks &&
|
||||||
|
git reset --hard &&
|
||||||
|
git checkout -b branch3 A &&
|
||||||
|
|
||||||
|
(
|
||||||
|
GIT_AUTHOR_NAME="Squashed Away" &&
|
||||||
|
export GIT_AUTHOR_NAME &&
|
||||||
|
>HEAD &&
|
||||||
|
git add HEAD &&
|
||||||
|
git commit -m "Add head" &&
|
||||||
|
>BODY &&
|
||||||
|
git add BODY &&
|
||||||
|
git commit -m "Add body"
|
||||||
|
) &&
|
||||||
|
|
||||||
|
FAKE_LINES="1 squash 2" git rebase -i to-be-rebased &&
|
||||||
|
test "$(git show -s --pretty=format:%an)" = "Squashed Away"
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
|
@ -17,6 +17,9 @@ test_expect_success 'setup' '
|
||||||
: > dir1/tracked &&
|
: > dir1/tracked &&
|
||||||
: > dir1/modified &&
|
: > dir1/modified &&
|
||||||
git add . &&
|
git add . &&
|
||||||
|
|
||||||
|
git status >output &&
|
||||||
|
|
||||||
test_tick &&
|
test_tick &&
|
||||||
git commit -m initial &&
|
git commit -m initial &&
|
||||||
: > untracked &&
|
: > untracked &&
|
||||||
|
@ -28,6 +31,12 @@ test_expect_success 'setup' '
|
||||||
git add dir2/added
|
git add dir2/added
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'status (1)' '
|
||||||
|
|
||||||
|
grep -e "use \"git rm --cached <file>\.\.\.\" to unstage" output
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
cat > expect << \EOF
|
cat > expect << \EOF
|
||||||
# On branch master
|
# On branch master
|
||||||
# Changes to be committed:
|
# Changes to be committed:
|
||||||
|
@ -51,7 +60,7 @@ cat > expect << \EOF
|
||||||
# untracked
|
# untracked
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success 'status' '
|
test_expect_success 'status (2)' '
|
||||||
|
|
||||||
git status > output &&
|
git status > output &&
|
||||||
git diff expect output
|
git diff expect output
|
||||||
|
|
|
@ -620,6 +620,9 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
if (i != argc-1)
|
if (i != argc-1)
|
||||||
usage(upload_pack_usage);
|
usage(upload_pack_usage);
|
||||||
|
|
||||||
|
setup_path(NULL);
|
||||||
|
|
||||||
dir = argv[i];
|
dir = argv[i];
|
||||||
|
|
||||||
if (!enter_repo(dir, strict))
|
if (!enter_repo(dir, strict))
|
||||||
|
|
|
@ -60,7 +60,7 @@ static void wt_status_print_cached_header(struct wt_status *s)
|
||||||
{
|
{
|
||||||
const char *c = color(WT_STATUS_HEADER);
|
const char *c = color(WT_STATUS_HEADER);
|
||||||
color_fprintf_ln(s->fp, c, "# Changes to be committed:");
|
color_fprintf_ln(s->fp, c, "# Changes to be committed:");
|
||||||
if (s->reference) {
|
if (!s->is_initial) {
|
||||||
color_fprintf_ln(s->fp, c, "# (use \"git reset %s <file>...\" to unstage)", s->reference);
|
color_fprintf_ln(s->fp, c, "# (use \"git reset %s <file>...\" to unstage)", s->reference);
|
||||||
} else {
|
} else {
|
||||||
color_fprintf_ln(s->fp, c, "# (use \"git rm --cached <file>...\" to unstage)");
|
color_fprintf_ln(s->fp, c, "# (use \"git rm --cached <file>...\" to unstage)");
|
||||||
|
|
Загрузка…
Ссылка в новой задаче