Skip to content

Commit 17ac93f

Browse files
dschoKevin Willford
authored andcommitted
PR 148652: Merge users/johasc/gvfs-2.10.1 to gvfs/master
Merge v2.10.1.windows.1 This merges in tons of changes, and the diff is rather uninformative, reflecting mostly the changes between v2.10.0.windows.1 and v2.10.1.windows.1. Please note that this is a follow-up PR to https://mseng.visualstudio.com/VSOnline/_git/GitForWindows/pullrequest/148586?_a=overview, as I really wanted to make sure that everything compiles and tests just fine in Git for Windows' SDK. As with that PR, I queued a build&test: https://mseng.visualstudio.com/VSOnline/_build/index?buildId=3328228&_a=summary I carefully reviewed the "diff between diffs": I first generated a diff between `v2.10.0.windows.1` and `users/johasc/gvfs-gcc`, then a diff between `v2.10.1.windows.1` and this branch (`users/johasc/gvfs-2.10.1`), and finally I asked Git to render the differences between both, by using the `--no-index` option on the two `.diff` files. This "diff between diffs" reveals no differences except the expected ones: where the preimage changed. (I tried to paste that "diff of diffs" here, but I hit the limit for PR messages... :-)) Related work items: #726
2 parents 44b51d5 + 405eac3 commit 17ac93f

File tree

101 files changed

+3510
-2492
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+3510
-2492
lines changed

.github/ISSUE_TEMPLATE.md

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,31 @@
44

55
### Setup
66

7-
- Which version of Git for Windows are you using? 32-bit or 64-bit? Include the
8-
output of `git version` as well.
9-
10-
_TODO_
7+
- Which version of Git for Windows are you using? Is it 32-bit or 64-bit?
118

129
```
13-
$ git --version
10+
$ git --version --build-options
1411
_TODO_
1512
```
1613

17-
- Which version of Windows are you running? 32-bit or 64-bit?
14+
- Which version of Windows are you running? Vista, 7, 8, 10? Is it 32-bit or 64-bit?
1815

19-
_TODO_
16+
```
17+
$ cmd.exe /c ver
18+
_TODO_
19+
```
2020

2121
- What options did you set as part of the installation? Or did you choose the
2222
defaults?
2323

24-
_TODO_
24+
```
25+
# One of the following:
26+
> type "C:\Program Files\Git\etc\install-options.txt"
27+
> type "C:\Program Files (x86)\Git\etc\install-options.txt"
28+
> type "%USERPROFILE%\AppData\Local\Programs\Git\etc\install-options.txt"
29+
$ cat /etc/install-options.txt
30+
_TODO_
31+
```
2532

2633
- Any other interesting things about your environment that might be related
2734
to the issue you're seeing?

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ before_install:
7878
FORMULA=$1
7979
SHA=$(brew fetch --force $FORMULA 2>&1 | grep ^SHA256: | cut -d ' ' -f 2)
8080
sed -E -i.bak "s/sha256 \"[0-9a-f]{64}\"/sha256 \"$SHA\"/g" \
81-
/usr/local/Library/Taps/homebrew/homebrew-binary/$FORMULA.rb
81+
"$(brew --repository homebrew/homebrew-binary)/$FORMULA.rb"
8282
}
8383
brew update --quiet
8484
brew tap homebrew/binary --quiet

Documentation/RelNotes/2.10.1.txt

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
Git v2.10.1 Release Notes
2+
=========================
3+
4+
Fixes since v2.10
5+
-----------------
6+
7+
* Clarify various ways to specify the "revision ranges" in the
8+
documentation.
9+
10+
* "diff-highlight" script (in contrib/) learned to work better with
11+
"git log -p --graph" output.
12+
13+
* The test framework left the number of tests and success/failure
14+
count in the t/test-results directory, keyed by the name of the
15+
test script plus the process ID. The latter however turned out not
16+
to serve any useful purpose. The process ID part of the filename
17+
has been removed.
18+
19+
* Having a submodule whose ".git" repository is somehow corrupt
20+
caused a few commands that recurse into submodules loop forever.
21+
22+
* "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
23+
the resulting repository becomes an invalid one. Teach the command
24+
to forbid removal of HEAD.
25+
26+
* A test spawned a short-lived background process, which sometimes
27+
prevented the test directory from getting removed at the end of the
28+
script on some platforms.
29+
30+
* Update a few tests that used to use GIT_CURL_VERBOSE to use the
31+
newer GIT_TRACE_CURL.
32+
33+
* Update Japanese translation for "git-gui".
34+
35+
* "git fetch http::/site/path" did not die correctly and segfaulted
36+
instead.
37+
38+
* "git commit-tree" stopped reading commit.gpgsign configuration
39+
variable that was meant for Porcelain "git commit" in Git 2.9; we
40+
forgot to update "git gui" to look at the configuration to match
41+
this change.
42+
43+
* "git log --cherry-pick" used to include merge commits as candidates
44+
to be matched up with other commits, resulting a lot of wasted time.
45+
The patch-id generation logic has been updated to ignore merges to
46+
avoid the wastage.
47+
48+
* The http transport (with curl-multi option, which is the default
49+
these days) failed to remove curl-easy handle from a curlm session,
50+
which led to unnecessary API failures.
51+
52+
* "git diff -W" output needs to extend the context backward to
53+
include the header line of the current function and also forward to
54+
include the body of the entire current function up to the header
55+
line of the next one. This process may have to merge to adjacent
56+
hunks, but the code forgot to do so in some cases.
57+
58+
* Performance tests done via "t/perf" did not use the same set of
59+
build configuration if the user relied on autoconf generated
60+
configuration.
61+
62+
* "git format-patch --base=..." feature that was recently added
63+
showed the base commit information after "-- " e-mail signature
64+
line, which turned out to be inconvenient. The base information
65+
has been moved above the signature line.
66+
67+
* Even when "git pull --rebase=preserve" (and the underlying "git
68+
rebase --preserve") can complete without creating any new commit
69+
(i.e. fast-forwards), it still insisted on having a usable ident
70+
information (read: user.email is set correctly), which was less
71+
than nice. As the underlying commands used inside "git rebase"
72+
would fail with a more meaningful error message and advice text
73+
when the bogus ident matters, this extra check was removed.
74+
75+
* "git gc --aggressive" used to limit the delta-chain length to 250,
76+
which is way too deep for gaining additional space savings and is
77+
detrimental for runtime performance. The limit has been reduced to
78+
50.
79+
80+
* Documentation for individual configuration variables to control use
81+
of color (like `color.grep`) said that their default value is
82+
'false', instead of saying their default is taken from `color.ui`.
83+
When we updated the default value for color.ui from 'false' to
84+
'auto' quite a while ago, all of them broke. This has been
85+
corrected.
86+
87+
* A shell script example in check-ref-format documentation has been
88+
fixed.
89+
90+
* "git checkout <word>" does not follow the usual disambiguation
91+
rules when the <word> can be both a rev and a path, to allow
92+
checking out a branch 'foo' in a project that happens to have a
93+
file 'foo' in the working tree without having to disambiguate.
94+
This was poorly documented and the check was incorrect when the
95+
command was run from a subdirectory.
96+
97+
* Some codepaths in "git diff" used regexec(3) on a buffer that was
98+
mmap(2)ed, which may not have a terminating NUL, leading to a read
99+
beyond the end of the mapped region. This was fixed by introducing
100+
a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
101+
extension.
102+
103+
* The procedure to build Git on Mac OS X for Travis CI hardcoded the
104+
internal directory structure we assumed HomeBrew uses, which was a
105+
no-no. The procedure has been updated to ask HomeBrew things we
106+
need to know to fix this.
107+
108+
* When "git rebase -i" is given a broken instruction, it told the
109+
user to fix it with "--edit-todo", but didn't say what the step
110+
after that was (i.e. "--continue").
111+
112+
* "git add --chmod=+x" added recently lacked documentation, which has
113+
been corrected.
114+
115+
* "git add --chmod=+x <pathspec>" added recently only toggled the
116+
executable bit for paths that are either new or modified. This has
117+
been corrected to flip the executable bit for all paths that match
118+
the given pathspec.
119+
120+
* "git pack-objects --include-tag" was taught that when we know that
121+
we are sending an object C, we want a tag B that directly points at
122+
C but also a tag A that points at the tag B. We used to miss the
123+
intermediate tag B in some cases.
124+
125+
* Documentation around tools to import from CVS was fairly outdated.
126+
127+
* In the codepath that comes up with the hostname to be used in an
128+
e-mail when the user didn't tell us, we looked at ai_canonname
129+
field in struct addrinfo without making sure it is not NULL first.
130+
131+
Also contains minor documentation updates and code clean-ups.

Documentation/RelNotes/2.9.4.txt

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
Git v2.9.4 Release Notes
2+
========================
3+
4+
Fixes since v2.9.3
5+
------------------
6+
7+
* There are certain house-keeping tasks that need to be performed at
8+
the very beginning of any Git program, and programs that are not
9+
built-in commands had to do them exactly the same way as "git"
10+
potty does. It was easy to make mistakes in one-off standalone
11+
programs (like test helpers). A common "main()" function that
12+
calls cmd_main() of individual program has been introduced to
13+
make it harder to make mistakes.
14+
15+
* "git merge" with renormalization did not work well with
16+
merge-recursive, due to "safer crlf" conversion kicking in when it
17+
shouldn't.
18+
19+
* The reflog output format is documented better, and a new format
20+
--date=unix to report the seconds-since-epoch (without timezone)
21+
has been added.
22+
23+
* "git push --force-with-lease" already had enough logic to allow
24+
ensuring that such a push results in creation of a ref (i.e. the
25+
receiving end did not have another push from sideways that would be
26+
discarded by our force-pushing), but didn't expose this possibility
27+
to the users. It does so now.
28+
29+
* "import-tars" fast-import script (in contrib/) used to ignore a
30+
hardlink target and replaced it with an empty file, which has been
31+
corrected to record the same blob as the other file the hardlink is
32+
shared with.
33+
34+
* "git mv dir non-existing-dir/" did not work in some environments
35+
the same way as existing mainstream platforms. The code now moves
36+
"dir" to "non-existing-dir", without relying on rename("A", "B/")
37+
that strips the trailing slash of '/'.
38+
39+
* The "t/" hierarchy is prone to get an unusual pathname; "make test"
40+
has been taught to make sure they do not contain paths that cannot
41+
be checked out on Windows (and the mechanism can be reusable to
42+
catch pathnames that are not portable to other platforms as need
43+
arises).
44+
45+
* When "git merge-recursive" works on history with many criss-cross
46+
merges in "verbose" mode, the names the command assigns to the
47+
virtual merge bases could have overwritten each other by unintended
48+
reuse of the same piece of memory.
49+
50+
* "git checkout --detach <branch>" used to give the same advice
51+
message as that is issued when "git checkout <tag>" (or anything
52+
that is not a branch name) is given, but asking with "--detach" is
53+
an explicit enough sign that the user knows what is going on. The
54+
advice message has been squelched in this case.
55+
56+
* "git difftool" by default ignores the error exit from the backend
57+
commands it spawns, because often they signal that they found
58+
differences by exiting with a non-zero status code just like "diff"
59+
does; the exit status codes 126 and above however are special in
60+
that they are used to signal that the command is not executable,
61+
does not exist, or killed by a signal. "git difftool" has been
62+
taught to notice these exit status codes.
63+
64+
* On Windows, help.browser configuration variable used to be ignored,
65+
which has been corrected.
66+
67+
* The "git -c var[=val] cmd" facility to append a configuration
68+
variable definition at the end of the search order was described in
69+
git(1) manual page, but not in git-config(1), which was more likely
70+
place for people to look for when they ask "can I make a one-shot
71+
override, and if so how?"
72+
73+
* The tempfile (hence its user lockfile) API lets the caller to open
74+
a file descriptor to a temporary file, write into it and then
75+
finalize it by first closing the filehandle and then either
76+
removing or renaming the temporary file. When the process spawns a
77+
subprocess after obtaining the file descriptor, and if the
78+
subprocess has not exited when the attempt to remove or rename is
79+
made, the last step fails on Windows, because the subprocess has
80+
the file descriptor still open. Open tempfile with O_CLOEXEC flag
81+
to avoid this (on Windows, this is mapped to O_NOINHERIT).
82+
83+
Also contains minor documentation updates and code clean-ups.

Documentation/SubmittingPatches

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,14 @@ without external resources. Instead of giving a URL to a mailing list
122122
archive, summarize the relevant points of the discussion.
123123

124124
If you want to reference a previous commit in the history of a stable
125-
branch use the format "abbreviated sha1 (subject, date)". So for example
126-
like this: "Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30)
127-
noticed [...]".
125+
branch, use the format "abbreviated sha1 (subject, date)",
126+
with the subject enclosed in a pair of double-quotes, like this:
127+
128+
Commit f86a374 ("pack-bitmap.c: fix a memleak", 2015-03-30)
129+
noticed that ...
130+
131+
The "Copy commit summary" command of gitk can be used to obtain this
132+
format.
128133

129134

130135
(3) Generate your patch using Git tools out of your commits.

Documentation/config.txt

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,7 +1021,8 @@ color.branch::
10211021
A boolean to enable/disable color in the output of
10221022
linkgit:git-branch[1]. May be set to `always`,
10231023
`false` (or `never`) or `auto` (or `true`), in which case colors are used
1024-
only when the output is to a terminal. Defaults to false.
1024+
only when the output is to a terminal. If unset, then the
1025+
value of `color.ui` is used (`auto` by default).
10251026

10261027
color.branch.<slot>::
10271028
Use customized color for branch coloration. `<slot>` is one of
@@ -1036,7 +1037,8 @@ color.diff::
10361037
linkgit:git-log[1], and linkgit:git-show[1] will use color
10371038
for all patches. If it is set to `true` or `auto`, those
10381039
commands will only use color when output is to the terminal.
1039-
Defaults to false.
1040+
If unset, then the value of `color.ui` is used (`auto` by
1041+
default).
10401042
+
10411043
This does not affect linkgit:git-format-patch[1] or the
10421044
'git-diff-{asterisk}' plumbing commands. Can be overridden on the
@@ -1059,7 +1061,8 @@ color.decorate.<slot>::
10591061
color.grep::
10601062
When set to `always`, always highlight matches. When `false` (or
10611063
`never`), never. When set to `true` or `auto`, use color only
1062-
when the output is written to the terminal. Defaults to `false`.
1064+
when the output is written to the terminal. If unset, then the
1065+
value of `color.ui` is used (`auto` by default).
10631066

10641067
color.grep.<slot>::
10651068
Use customized color for grep colorization. `<slot>` specifies which
@@ -1092,7 +1095,8 @@ color.interactive::
10921095
and displays (such as those used by "git-add --interactive" and
10931096
"git-clean --interactive"). When false (or `never`), never.
10941097
When set to `true` or `auto`, use colors only when the output is
1095-
to the terminal. Defaults to false.
1098+
to the terminal. If unset, then the value of `color.ui` is
1099+
used (`auto` by default).
10961100

10971101
color.interactive.<slot>::
10981102
Use customized color for 'git add --interactive' and 'git clean
@@ -1108,13 +1112,15 @@ color.showBranch::
11081112
A boolean to enable/disable color in the output of
11091113
linkgit:git-show-branch[1]. May be set to `always`,
11101114
`false` (or `never`) or `auto` (or `true`), in which case colors are used
1111-
only when the output is to a terminal. Defaults to false.
1115+
only when the output is to a terminal. If unset, then the
1116+
value of `color.ui` is used (`auto` by default).
11121117

11131118
color.status::
11141119
A boolean to enable/disable color in the output of
11151120
linkgit:git-status[1]. May be set to `always`,
11161121
`false` (or `never`) or `auto` (or `true`), in which case colors are used
1117-
only when the output is to a terminal. Defaults to false.
1122+
only when the output is to a terminal. If unset, then the
1123+
value of `color.ui` is used (`auto` by default).
11181124

11191125
color.status.<slot>::
11201126
Use customized color for status colorization. `<slot>` is
@@ -1434,7 +1440,7 @@ fsck.skipList::
14341440
gc.aggressiveDepth::
14351441
The depth parameter used in the delta compression
14361442
algorithm used by 'git gc --aggressive'. This defaults
1437-
to 250.
1443+
to 50.
14381444

14391445
gc.aggressiveWindow::
14401446
The window size parameter used in the delta compression

Documentation/git-add.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ SYNOPSIS
1111
'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
1212
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
1313
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
14-
[--] [<pathspec>...]
14+
[--chmod=(+|-)x] [--] [<pathspec>...]
1515

1616
DESCRIPTION
1717
-----------
@@ -165,6 +165,11 @@ for "git add --no-all <pathspec>...", i.e. ignored removed files.
165165
be ignored, no matter if they are already present in the work
166166
tree or not.
167167

168+
--chmod=(+|-)x::
169+
Override the executable bit of the added files. The executable
170+
bit is only changed in the index, the files on disk are left
171+
unchanged.
172+
168173
\--::
169174
This option can be used to separate command-line options from
170175
the list of files, (useful when filenames might be mistaken

Documentation/git-check-ref-format.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ $ git check-ref-format --branch @{-1}
118118
* Determine the reference name to use for a new branch:
119119
+
120120
------------
121-
$ ref=$(git check-ref-format --normalize "refs/heads/$newbranch") ||
122-
die "we do not like '$newbranch' as a branch name."
121+
$ ref=$(git check-ref-format --normalize "refs/heads/$newbranch")||
122+
{ echo "we do not like '$newbranch' as a branch name." >&2 ; exit 1 ; }
123123
------------
124124

125125
GIT

0 commit comments

Comments
 (0)