What's cooking (2016/02 #08)

Junio C Hamano committed Feb 26, 2016 at 14:10 UTC 590453281da906d5fc7acf361028239586b0b76a
1 file changed +315 -486
whats-cooking.txt
+315 -486
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 -Subject: What's cooking in git.git (Feb 2016, #07; Thu, 25)
4 -X-master-at: 56f37fda511e1615dc6df86c68f3b841711a7828
5 -X-next-at: 947c399e45ebc1a76d1e80d7152aa630726ed7e6
3 +Subject: What's cooking in git.git (Feb 2016, #08; Fri, 26)
4 +X-master-at: f02fbc4f9433937ee0463d0342d6d7d97e1f6f1e
5 +X-next-at: f92f5fe29a68d654894c6a10c5f5b3f0ce4bb1a5
6
7 -What's cooking in git.git (Feb 2016, #07; Thu, 25)
7 +What's cooking in git.git (Feb 2016, #08; Fri, 26)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking. Commits prefixed with
@@ -12,6 +12,24 @@ Here are the topics that have been cooking. Commits prefixed with
12 '+' are in 'next'. The ones marked with '.' do not appear in any of
13 the integration branches, but I am still holding onto them.
14
15 +v2.8-rc0 has been tagged; this is a preview for the next release.
16 +
17 +In previous cycles, I often left many topics in 'next' when tagging
18 +this zero-th preview, but eventually merged them before the final.
19 +I decided to do things a bit differently for this cycle: a topic,
20 +once it hits 'next', will not be rewound and only refined and
21 +corrected with incremental updates, so the only effect such a late
22 +merge to 'master' before the final is that some topics are not as
23 +widely tested on 'master' before the final one is tagged.
24 +
25 +So this -rc0 is deliberately aggressive in that it includes all
26 +topics that have been cooking in 'next' that I think we can fix bugs
27 +that might still lurking in them before the final (it merges 25
28 +topics since the last batch to 'master'). The topics not merged to
29 +this preview, on the other hand, will not be considered for 2.8
30 +final, even though I might later succumb to the temptation to pick
31 +up ones that are in 'next' as of today ;-)
32 +
33 You can find the changes described here in the integration branches of the
34 repositories listed at
35
@@ -20,106 +38,39 @@ repositories listed at
38 --------------------------------------------------
39 [Graduated to "master"]
40
23 -* bc/http-empty-auth (2016-02-15) 1 commit
24 - (merged to 'next' on 2016-02-18 at 6d2fc88)
25 - + http: add option to try authentication without username
26 -
27 - Some authentication methods do not need username or password, but
28 - libcurl needs some hint that it needs to perform authentication.
29 - Supplying an empty username and password string is a valid way to
30 - do so, but you can set the http.[<url>.]emptyAuth configuration
31 - variable to achieve the same, if you find it cleaner.
32 -
33 -
34 -* ce/https-public-key-pinning (2016-02-15) 1 commit
35 - (merged to 'next' on 2016-02-18 at f382cf0)
36 - + http: implement public key pinning
37 -
38 - You can now set http.[<url>.]pinnedpubkey to specify the pinned
39 - public key when building with recent enough versions of libcURL.
40 -
41 -
42 -* ew/force-ipv4 (2016-02-12) 1 commit
43 - (merged to 'next' on 2016-02-18 at d0211b0)
44 - + connect & http: support -4 and -6 switches for remote operations
45 -
46 - "git fetch" and friends that make network connections can now be
47 - told to only use ipv4 (or ipv6).
48 -
49 -
50 -* jc/am-i-v-fix (2016-02-17) 3 commits
51 - (merged to 'next' on 2016-02-18 at 331e518)
52 - + am -i: fix "v"iew
53 - + pager: factor out a helper to prepare a child process to run the pager
54 - + pager: lose a separate argv[]
55 -
56 - The "v(iew)" subcommand of the interactive "git am -i" command was
57 - broken in 2.6.0 timeframe when the command was rewritten in C.
58 -
59 -
60 -* jk/lose-name-path (2016-02-12) 5 commits
61 - (merged to 'next' on 2016-02-18 at 85831a6)
62 - + list-objects: pass full pathname to callbacks
63 - + list-objects: drop name_path entirely
64 - + list-objects: convert name_path to a strbuf
65 - + show_object_with_name: simplify by using path_name()
66 - + http-push: stop using name_path
67 -
68 - The "name_path" API was an attempt to reduce the need to construct
69 - the full path out of a series of path components while walking a
70 - tree hierarchy, but over time made less efficient because the path
71 - needs to be flattened, e.g. to be compared with another path that
72 - is already flat. The API has been removed and its users have been
73 - rewritten to simplify the overall code complexity.
74 -
75 -
76 -* nd/dwim-wildcards-as-pathspecs (2016-02-10) 3 commits
77 - (merged to 'next' on 2016-02-18 at fc7caf4)
78 - + get_sha1: don't die() on bogus search strings
79 - + check_filename: tighten dwim-wildcard ambiguity
80 - + checkout: reorder check_filename conditional
81 -
82 - "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
83 - rev, i.e. the object named by the the pathname with wildcard
84 - characters in a tree object.
85 -
86 -
87 -* nd/exclusion-regression-fix (2016-02-15) 4 commits
88 - (merged to 'next' on 2016-02-18 at 85412ab)
89 - + dir.c: don't exclude whole dir prematurely
90 - + dir.c: support marking some patterns already matched
91 - + dir.c: support tracing exclude
92 - + dir.c: fix match_pathname()
41 +* ak/extract-argv0-last-dir-sep (2016-02-19) 1 commit
42 + (merged to 'next' on 2016-02-24 at f590eb0)
43 + + exec_cmd.c: use find_last_dir_sep() for code simplification
44
94 - Another try to add support to the ignore mechanism that lets you
95 - say "this is excluded" and then later say "oh, no, this part (that
96 - is a subset of the previous part) is not excluded".
45 + Code simplification.
46
47
99 -* nd/git-common-dir-fix (2016-02-12) 1 commit
100 - (merged to 'next' on 2016-02-18 at 957afc5)
101 - + rev-parse: take prefix into account in --git-common-dir
48 +* ak/git-strip-extension-from-dashed-command (2016-02-21) 1 commit
49 + (merged to 'next' on 2016-02-24 at 8a84f91)
50 + + git.c: simplify stripping extension of a file in handle_builtin()
51
103 - "git rev-parse --git-common-dir" used in the worktree feature
104 - misbehaved when run from a subdirectory.
52 + Code simplification.
53
54
107 -* nd/worktree-add-B (2016-02-15) 2 commits
108 - (merged to 'next' on 2016-02-18 at bf77016)
109 - + worktree add -B: do the checkout test before update branch
110 - + worktree: fix "add -B"
55 +* dt/initial-ref-xn-commit-doc (2016-02-25) 1 commit
56 + (merged to 'next' on 2016-02-25 at e32d0f6)
57 + + refs: document transaction semantics
58
112 - "git worktree add -B <branchname>" did not work.
59
60 +* fa/merge-recursive-no-rename (2016-02-24) 7 commits
61 + (merged to 'next' on 2016-02-25 at 8f18cc1)
62 + + t3034: test deprecated interface
63 + + t3034: test option to disable renames
64 + + t3034: add rename threshold tests
65 + + merge-recursive: find-renames resets threshold
66 + + merge-strategies.txt: fix typo
67 + (merged to 'next' on 2016-02-18 at dd6125b)
68 + + merge-recursive: more consistent interface
69 + + merge-recursive: option to disable renames
70
115 -* sp/remote-curl-ssl-strerror (2016-02-15) 1 commit
116 - (merged to 'next' on 2016-02-18 at 1339fe4)
117 - + remote-curl: include curl_errorstr on SSL setup failures
71 + "git merge-recursive" learned "--no-renames" option to disable its
72 + rename detection logic.
73
119 - Help those who debug http(s) part of the system.
120 -
121 ---------------------------------------------------
122 -[New Topics]
74
75 * jg/credential-cache-chdir-to-sockdir (2016-02-23) 3 commits
76 (merged to 'next' on 2016-02-25 at ad35811)
@@ -132,7 +83,35 @@ repositories listed at
83 filesystem that houses the repository harder; now the process
84 chdir()s to the directory that house its own socket on startup.
85
135 - Will merge to 'master'.
86 +
87 +* jk/epipe-in-async (2016-02-25) 4 commits
88 + (merged to 'next' on 2016-02-25 at 4482ddf)
89 + + t5504: handle expected output from SIGPIPE death
90 + + test_must_fail: report number of unexpected signal
91 + + fetch-pack: ignore SIGPIPE in sideband demuxer
92 + + write_or_die: handle EPIPE in async threads
93 +
94 + Handling of errors while writing into our internal asynchronous
95 + process has been made more robust, which reduces flakiness in our
96 + tests.
97 +
98 +
99 +* jk/grep-binary-workaround-in-test (2016-02-23) 2 commits
100 + (merged to 'next' on 2016-02-25 at 0e96ae8)
101 + + t9200: avoid grep on non-ASCII data
102 + + t8005: avoid grep on non-ASCII data
103 +
104 + Recent versions of GNU grep are pickier when their input contains
105 + arbitrary binary data, which some of our tests uses. Rewrite the
106 + tests to sidestep the problem.
107 +
108 +
109 +* jk/more-comments-on-textconv (2016-02-22) 1 commit
110 + (merged to 'next' on 2016-02-24 at 4ccfdc5)
111 + + diff: clarify textconv interface
112 +
113 + The memory ownership rule of fill_textconv() API, which was a bit
114 + tricky, has been documented a bit better.
115
116
117 * jk/no-diff-emit-common (2016-02-22) 3 commits
@@ -145,114 +124,160 @@ repositories listed at
124 its own "create a fake ancestor file that has the common parts of
125 what both sides have added and do a 3-way merge" logic; this has
126 been updated to use the usual "3-way merge with an empty blob as
148 - the fake common ancestore file" approach used in the rest of the
127 + the fake common ancestor file" approach used in the rest of the
128 system.
129
151 - Will merge to 'master'.
130
131 +* jk/tighten-alloc (2016-02-22) 22 commits
132 + (merged to 'next' on 2016-02-24 at 78b3251)
133 + + ewah: convert to REALLOC_ARRAY, etc
134 + + convert ewah/bitmap code to use xmalloc
135 + + diff_populate_gitlink: use a strbuf
136 + + transport_anonymize_url: use xstrfmt
137 + + git-compat-util: drop mempcpy compat code
138 + + sequencer: simplify memory allocation of get_message
139 + + test-path-utils: fix normalize_path_copy output buffer size
140 + + fetch-pack: simplify add_sought_entry
141 + + fast-import: simplify allocation in start_packfile
142 + + write_untracked_extension: use FLEX_ALLOC helper
143 + + prepare_{git,shell}_cmd: use argv_array
144 + + use st_add and st_mult for allocation size computation
145 + + convert trivial cases to FLEX_ARRAY macros
146 + + use xmallocz to avoid size arithmetic
147 + + convert trivial cases to ALLOC_ARRAY
148 + + convert manual allocations to argv_array
149 + + argv-array: add detach function
150 + + add helpers for allocating flex-array structs
151 + + harden REALLOC_ARRAY and xcalloc against size_t overflow
152 + + tree-diff: catch integer overflow in combine_diff_path allocation
153 + + add helpers for detecting size_t overflow
154 + + reflog_expire_cfg: NUL-terminate pattern field
155
154 -* mm/push-default-warning (2016-02-25) 1 commit
155 - (merged to 'next' on 2016-02-25 at 753352f)
156 - + push: remove "push.default is unset" warning message
156 + Update various codepaths to avoid manually-counted malloc().
157
158 - Across the transition at around Git version 2.0, the user used to
159 - get a pretty loud warning when running "git push" without setting
160 - push.default configuration variable. We started to tone down the
161 - warning message, given that the transition is over long time ago.
158
163 - Will merge to 'master'.
159 +* js/config-set-in-non-repository (2016-02-25) 1 commit
160 + (merged to 'next' on 2016-02-25 at a675267)
161 + + git config: report when trying to modify a non-existing repo config
162
163 + "git config section.var value" to set a value in per-repository
164 + configuration file failed when it was run outside any repository,
165 + but didn't say the reason correctly.
166
166 -* mm/push-simple-doc (2016-02-23) 1 commit
167 - (merged to 'next' on 2016-02-25 at dc4f57c)
168 - + Documentation/git-push: document that 'simple' is the default
167
170 - The documentation did not clearly state that the 'simple' mode is
171 - now the default for "git push" when push.default configuration is
172 - not set.
168 +* kn/ref-filter-atom-parsing (2016-02-17) 11 commits
169 + (merged to 'next' on 2016-02-18 at 9606218)
170 + + ref-filter: introduce objectname_atom_parser()
171 + + ref-filter: introduce contents_atom_parser()
172 + + ref-filter: introduce remote_ref_atom_parser()
173 + + ref-filter: align: introduce long-form syntax
174 + + ref-filter: introduce align_atom_parser()
175 + + ref-filter: introduce parse_align_position()
176 + + ref-filter: introduce color_atom_parser()
177 + + ref-filter: introduce parsing functions for each valid atom
178 + + ref-filter: introduce struct used_atom
179 + + ref-filter: bump 'used_atom' and related code to the top
180 + + ref-filter: use string_list_split over strbuf_split
181
174 - Will merge to 'master'.
182 + The ref-filter's format-parsing code has been refactored, in
183 + preparation for "branch --format" and friends.
184
185
177 -* nd/shallow-deepen (2016-02-23) 25 commits
178 - - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
179 - - upload-pack: add get_reachable_list()
180 - - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
181 - - t5500, t5539: tests for shallow depth excluding a ref
182 - - clone: define shallow clone boundary with --shallow-exclude
183 - - fetch: define shallow boundary with --shallow-exclude
184 - - upload-pack: support define shallow boundary by excluding revisions
185 - - refs: add expand_ref()
186 - - t5500, t5539: tests for shallow depth since a specific date
187 - - clone: define shallow clone boundary based on time with --shallow-since
188 - - fetch: define shallow boundary with --shallow-since
189 - - upload-pack: add deepen-since to cut shallow repos based on time
190 - - shallow.c: implement a generic shallow boundary finder based on rev-list
191 - - fetch-pack: use a separate flag for fetch in deepening mode
192 - - fetch-pack: use a common function for verbose printing
193 - - fetch-pack: use skip_prefix() instead of starts_with()
194 - - upload-pack: move rev-list code out of check_non_tip()
195 - - upload-pack: tighten number parsing at "deepen" lines
196 - - upload-pack: use skip_prefix() instead of starts_with()
197 - - upload-pack: move "unshallow" sending code out of deepen()
198 - - upload-pack: remove unused variable "backup"
199 - - upload-pack: move "shallow" sending code out of deepen()
200 - - upload-pack: move shallow deepen code out of receive_needs()
201 - - transport-helper.c: refactor set_helper_option()
202 - - remote-curl.c: convert fetch_git() to use argv_array
186 +* ls/config-origin (2016-02-22) 4 commits
187 + (merged to 'next' on 2016-02-24 at 239fcc2)
188 + + config: add '--show-origin' option to print the origin of a config value
189 + + config: add 'origin_type' to config_source struct
190 + + rename git_config_from_buf to git_config_from_mem
191 + + t: do not hide Git's exit code in tests using 'nul_to_q'
192
204 - The existing "git fetch --depth=<n>" option was hard to use
205 - correctly when making the history of an existing shallow clone
206 - deeper. A new option, "--deepen=<n>", has been added to make this
207 - easier to use. "git clone" also learned "--shallow-since=<date>"
208 - and "--shallow-exclude=<tag>" options to make it easier to specify
209 - "I am interested only in the recent N months worth of history" and
210 - "Give me only the history since that version".
193 + The configuration system has been taught to phrase where it found a
194 + bad configuration variable in a better way in its error messages.
195 + "git config" learnt a new "--show-origin" option to indicate where
196 + the values come from.
197
212 - Needs review.
198
199 +* ls/makefile-cflags-developer-tweak (2016-02-25) 1 commit
200 + (merged to 'next' on 2016-02-25 at 14bb065)
201 + + add DEVELOPER makefile knob to check for acknowledged warnings
202
215 -* ps/plug-xdl-merge-leak (2016-02-23) 1 commit
216 - (merged to 'next' on 2016-02-25 at 523609e)
217 - + xdiff/xmerge: fix memory leak in xdl_merge
203 + There is a new DEVELOPER knob that enables many compiler warning
204 + options in the Makefile.
205
219 - Will merge to 'master'.
206
207 +* ma/update-hooks-sample-typofix (2016-02-25) 1 commit
208 + (merged to 'next' on 2016-02-25 at be49c79)
209 + + templates/hooks: fix minor typo in the sample update-hook
210
222 -* jk/epipe-in-async (2016-02-25) 4 commits
223 - (merged to 'next' on 2016-02-25 at 4482ddf)
224 - + t5504: handle expected output from SIGPIPE death
225 - + test_must_fail: report number of unexpected signal
226 - + fetch-pack: ignore SIGPIPE in sideband demuxer
227 - + write_or_die: handle EPIPE in async threads
211
229 - Handling of errors while writing into our internal asynchronous
230 - process has been made more robust, which reduces flakiness in our
231 - tests.
212 +* mg/work-tree-tests (2016-02-20) 1 commit
213 + (merged to 'next' on 2016-02-25 at ca8cbb0)
214 + + tests: rename work-tree tests to *work-tree*
215
233 - Will merge to 'master'.
216 + Traditionally, the tests that try commands that work on the
217 + contents in the working tree were named with "worktree" in their
218 + filenames, but with the recent addition of "git worktree"
219 + subcommand, whose tests are also named similarly, it has become
220 + harder to tell them apart. The traditional tests have been renamed
221 + to use "work-tree" instead in an attempt to differentiate them.
222
223
236 -* js/config-set-in-non-repository (2016-02-25) 1 commit
237 - (merged to 'next' on 2016-02-25 at a675267)
238 - + git config: report when trying to modify a non-existing repo config
224 +* mm/push-default-warning (2016-02-25) 1 commit
225 + (merged to 'next' on 2016-02-25 at 753352f)
226 + + push: remove "push.default is unset" warning message
227
240 - "git config section.var value" to set a value in per-repository
241 - configuration file should have failed when it was run outside any
242 - repository, but didn't.
228 + Across the transition at around Git version 2.0, the user used to
229 + get a pretty loud warning when running "git push" without setting
230 + push.default configuration variable. We no longer warn, given that
231 + the transition is over long time ago.
232
244 - Will merge to 'master'.
233
234 +* mm/push-simple-doc (2016-02-23) 1 commit
235 + (merged to 'next' on 2016-02-25 at dc4f57c)
236 + + Documentation/git-push: document that 'simple' is the default
237
247 -* sb/submodule-module-list-fix (2016-02-24) 1 commit
248 - (merged to 'next' on 2016-02-25 at 21be607)
249 - + submodule helper list: respect correct path prefix
238 + The documentation did not clearly state that the 'simple' mode is
239 + now the default for "git push" when push.default configuration is
240 + not set.
241
251 - A helper function "git submodule" uses since v2.7.0 to list the
252 - modules that match the pathspec argument given to its subcommands
253 - (e.g. "submodule add <repo> <path>") has been fixed.
242
255 - Will merge to 'master'.
243 +* mm/readme-markdown (2016-02-25) 5 commits
244 + (merged to 'next' on 2016-02-25 at b8bda29)
245 + + README.md: move down historical explanation about the name
246 + + README.md: don't call git stupid in the title
247 + + README.md: move the link to git-scm.com up
248 + + README.md: add hyperlinks on filenames
249 + + README: use markdown syntax
250 +
251 + README has been renamed to README.md and its contents got tweaked
252 + slightly to make it easier on the eyes.
253 +
254 +
255 +* ps/config-error (2016-02-22) 15 commits
256 + (merged to 'next' on 2016-02-25 at b378629)
257 + + config: rename git_config_set_or_die to git_config_set
258 + + config: rename git_config_set to git_config_set_gently
259 + + compat: die when unable to set core.precomposeunicode
260 + + sequencer: die on config error when saving replay opts
261 + + init-db: die on config errors when initializing empty repo
262 + + clone: die on config error in cmd_clone
263 + + remote: die on config error when manipulating remotes
264 + + remote: die on config error when setting/adding branches
265 + + remote: die on config error when setting URL
266 + + submodule--helper: die on config error when cloning module
267 + + submodule: die on config error when linking modules
268 + + branch: die on config error when editing branch description
269 + + branch: die on config error when unsetting upstream
270 + + branch: report errors in tracking branch setup
271 + + config: introduce set_or_die wrappers
272 +
273 + Many codepaths forget to check return value from git_config_set();
274 + the function is made to die() to make sure we do not proceed when
275 + setting a configuration variable failed.
276 +
277 +
278 +* ps/plug-xdl-merge-leak (2016-02-23) 1 commit
279 + (merged to 'next' on 2016-02-25 at 523609e)
280 + + xdiff/xmerge: fix memory leak in xdl_merge
281
282
283 * sb/submodule-fetch-nontip (2016-02-24) 1 commit
@@ -265,81 +290,59 @@ repositories listed at
290 that commit that may not be connected to the refs it usually
291 fetches.
292
268 - Will merge to 'master'.
269 -
270 -
271 -* dt/initial-ref-xn-commit-doc (2016-02-25) 1 commit
272 - (merged to 'next' on 2016-02-25 at e32d0f6)
273 - + refs: document transaction semantics
274 -
275 - Will merge to 'master'.
276 -
277 -
278 -* jk/pack-idx-corruption-safety (2016-02-25) 3 commits
279 - - use_pack: handle signed off_t overflow
280 - - nth_packed_object_offset: bounds-check extended offset
281 - - t5313: test bounds-checks of corrupted/malicious pack/idx files
282 -
283 - The code to read the pack data using the offsets stored in the pack
284 - idx file has been made more carefully check the validity of the
285 - data in the idx.
286 -
287 - Will merge to 'next'.
288 -
289 -
290 -* ls/makefile-cflags-developer-tweak (2016-02-25) 1 commit
291 - (merged to 'next' on 2016-02-25 at 14bb065)
292 - + add DEVELOPER makefile knob to check for acknowledged warnings
293
294 - There is a new DEVELOPER knob that enables many compiler warning
295 - options in the Makefile.
296 -
297 - Will merge to 'master'.
298 -
299 -
300 -* ma/update-hooks-sample-typofix (2016-02-25) 1 commit
301 - (merged to 'next' on 2016-02-25 at be49c79)
302 - + templates/hooks: fix minor typo in the sample update-hook
294 +* sb/submodule-module-list-fix (2016-02-24) 1 commit
295 + (merged to 'next' on 2016-02-25 at 21be607)
296 + + submodule helper list: respect correct path prefix
297
304 - Will merge to 'master'.
298 + A helper function "git submodule" uses since v2.7.0 to list the
299 + modules that match the pathspec argument given to its subcommands
300 + (e.g. "submodule add <repo> <path>") has been fixed.
301
302
307 -* mm/diff-renames-default (2016-02-25) 5 commits
308 - (merged to 'next' on 2016-02-25 at 947c399)
309 - + diff: activate diff.renames by default
310 - + log: introduce init_log_defaults()
311 - + t: add tests for diff.renames (true/false/unset)
312 - + t4001-diff-rename: wrap file creations in a test
313 - + Documentation/diff-config: fix description of diff.renames
303 +* tb/conversion (2016-02-23) 7 commits
304 + (merged to 'next' on 2016-02-25 at 1bb466d)
305 + + convert.c: correct attr_action()
306 + (merged to 'next' on 2016-02-12 at 6faf27b)
307 + + convert.c: simplify text_stat
308 + + convert.c: refactor crlf_action
309 + + convert.c: use text_eol_is_crlf()
310 + + convert.c: remove input_crlf_action()
311 + + convert.c: remove unused parameter 'path'
312 + + t0027: add tests for get_stream_filter()
313
315 - The end-user facing Porcelain level commands like "diff" and "log"
316 - now enables the rename detection by default.
314 + Code simplification.
315
318 - Will merge to 'master'.
316
317 +* tg/git-remote (2016-02-16) 4 commits
318 + (merged to 'next' on 2016-02-18 at 091d43e)
319 + + remote: use remote_is_configured() for add and rename
320 + + remote: actually check if remote exits
321 + + remote: simplify remote_is_configured()
322 + + remote: use parse_config_key
323
321 -* mm/readme-markdown (2016-02-25) 5 commits
322 - (merged to 'next' on 2016-02-25 at b8bda29)
323 - + README.md: move down historical explanation about the name
324 - + README.md: don't call git stupid in the title
325 - + README.md: move the link to git-scm.com up
326 - + README.md: add hyperlinks on filenames
327 - + README: use markdown syntax
324 + The internal API to interact with "remote.*" configuration
325 + variables has been streamlined.
326
329 - Move README to README.md and tweak its contents slightly to make it
330 - easier on the eyes.
327 +--------------------------------------------------
328 +[New Topics]
329
332 - Will merge to 'master'.
330 +* jk/credential-clear-config (2016-02-26) 1 commit
331 + - credential: let empty credential specs reset helper list
332
333 + The credential.helper configuration variable is cumulative and
334 + there is no good way to override it from the command line. As
335 + a special case, giving an empty string as its value now serves
336 + as the signal to clear the values specified in various files.
337
335 -* mp/upload-pack-use-embedded-args (2016-02-25) 1 commit
336 - - upload-pack: use argv_array for pack_objects
338
338 - The embedded args argv-array in the child process is used to build
339 - the command line to run pack-objects instead of using a separate
340 - array of strings.
339 +* jk/submodule-c-credential (2016-02-25) 1 commit
340 + - git: submodule honor -c credential.* from command line
341 + (this branch uses mg/httpd-tests-update-for-apache-2.4.)
342
342 - Will merge to 'next'.
343 + "git -c credential.<var>=<value> submodule" can now be used to
344 + propagate configuration variables related to credential helper
345 + down to the submodules.
346
347 --------------------------------------------------
348 [Stalled]
@@ -393,19 +396,8 @@ repositories listed at
396 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
397 .bitmap and .keep files.
398
396 - Waiting for a reroll.
397 - ($gmane/284368).
398 -
399 -
400 -* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
401 - - t/lib-git-svn: check same httpd module dirs as lib-httpd
402 - - t/lib-httpd: load mod_unixd
403 -
404 - This is the first two commits in a three-patch series $gmane/266962
405 -
406 - Becoming tired of waiting for a reroll.
407 - with updated log message ($gmane/268061).
408 - Will discard.
399 + Waiting for a reroll.
400 + ($gmane/284368).
401
402
403 * jc/diff-b-m (2015-02-23) 5 commits
@@ -426,80 +418,107 @@ repositories listed at
418 --------------------------------------------------
419 [Cooking]
420
429 -* sb/submodule-init (2016-02-25) 2 commits
430 - - submodule: port init from shell to C
431 - - submodule: port resolve_relative_url from shell to C
432 - (this branch uses sb/submodule-parallel-update; is tangled with dt/refs-backend-lmdb.)
433 -
434 - Update of "git submodule" to move pieces of logic to C continues.
435 -
436 - Comments?
437 - ($gmane/286092)
421 +* mg/httpd-tests-update-for-apache-2.4 (2016-02-25) 1 commit
422 + - t/lib-httpd: load mod_unixd
423 + (this branch is used by jk/submodule-c-credential.)
424
425
440 -* ak/extract-argv0-last-dir-sep (2016-02-19) 1 commit
441 - (merged to 'next' on 2016-02-24 at f590eb0)
442 - + exec_cmd.c: use find_last_dir_sep() for code simplification
426 +* nd/shallow-deepen (2016-02-23) 25 commits
427 + - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
428 + - upload-pack: add get_reachable_list()
429 + - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
430 + - t5500, t5539: tests for shallow depth excluding a ref
431 + - clone: define shallow clone boundary with --shallow-exclude
432 + - fetch: define shallow boundary with --shallow-exclude
433 + - upload-pack: support define shallow boundary by excluding revisions
434 + - refs: add expand_ref()
435 + - t5500, t5539: tests for shallow depth since a specific date
436 + - clone: define shallow clone boundary based on time with --shallow-since
437 + - fetch: define shallow boundary with --shallow-since
438 + - upload-pack: add deepen-since to cut shallow repos based on time
439 + - shallow.c: implement a generic shallow boundary finder based on rev-list
440 + - fetch-pack: use a separate flag for fetch in deepening mode
441 + - fetch-pack: use a common function for verbose printing
442 + - fetch-pack: use skip_prefix() instead of starts_with()
443 + - upload-pack: move rev-list code out of check_non_tip()
444 + - upload-pack: tighten number parsing at "deepen" lines
445 + - upload-pack: use skip_prefix() instead of starts_with()
446 + - upload-pack: move "unshallow" sending code out of deepen()
447 + - upload-pack: remove unused variable "backup"
448 + - upload-pack: move "shallow" sending code out of deepen()
449 + - upload-pack: move shallow deepen code out of receive_needs()
450 + - transport-helper.c: refactor set_helper_option()
451 + - remote-curl.c: convert fetch_git() to use argv_array
452
444 - Code simplification.
453 + The existing "git fetch --depth=<n>" option was hard to use
454 + correctly when making the history of an existing shallow clone
455 + deeper. A new option, "--deepen=<n>", has been added to make this
456 + easier to use. "git clone" also learned "--shallow-since=<date>"
457 + and "--shallow-exclude=<tag>" options to make it easier to specify
458 + "I am interested only in the recent N months worth of history" and
459 + "Give me only the history since that version".
460
446 - Will merge to 'master'.
461 + Needs review.
462
463
449 -* az/p4-bare-no-rebase (2016-02-19) 1 commit
450 - - git-p4.py: Don't try to rebase on submit from bare repository
464 +* jk/pack-idx-corruption-safety (2016-02-25) 3 commits
465 + (merged to 'next' on 2016-02-26 at ef0d6de)
466 + + use_pack: handle signed off_t overflow
467 + + nth_packed_object_offset: bounds-check extended offset
468 + + t5313: test bounds-checks of corrupted/malicious pack/idx files
469
452 - "git p4 submit" attempts to do a rebase, which would fail if done
453 - in a bare repository. Not doing this rebase would paper over the
454 - failure, which is what this patch does, but it is unclear what the
455 - side effect of not rebasing is.
470 + The code to read the pack data using the offsets stored in the pack
471 + idx file has been made more carefully check the validity of the
472 + data in the idx.
473
457 - Needs a better explanation.
474 + Will merge to 'master'.
475
476
460 -* ak/git-strip-extension-from-dashed-command (2016-02-21) 1 commit
461 - (merged to 'next' on 2016-02-24 at 8a84f91)
462 - + git.c: simplify stripping extension of a file in handle_builtin()
477 +* mm/diff-renames-default (2016-02-25) 5 commits
478 + (merged to 'next' on 2016-02-25 at 947c399)
479 + + diff: activate diff.renames by default
480 + + log: introduce init_log_defaults()
481 + + t: add tests for diff.renames (true/false/unset)
482 + + t4001-diff-rename: wrap file creations in a test
483 + + Documentation/diff-config: fix description of diff.renames
484
464 - Code simplification.
485 + The end-user facing Porcelain level commands like "diff" and "log"
486 + now enables the rename detection by default.
487
488 Will merge to 'master'.
489
490
469 -* jk/grep-binary-workaround-in-test (2016-02-23) 2 commits
470 - (merged to 'next' on 2016-02-25 at 0e96ae8)
471 - + t9200: avoid grep on non-ASCII data
472 - + t8005: avoid grep on non-ASCII data
491 +* mp/upload-pack-use-embedded-args (2016-02-25) 1 commit
492 + (merged to 'next' on 2016-02-26 at f0a54e5)
493 + + upload-pack: use argv_array for pack_objects
494
474 - Recent versions of GNU grep are pickier when their input contains
475 - arbitrary binary data, which some of our tests uses. Rewrite the
476 - tests to sidestep the problem.
495 + The embedded args argv-array in the child process is used to build
496 + the command line to run pack-objects instead of using a separate
497 + array of strings.
498
499 Will merge to 'master'.
500
501
481 -* mg/work-tree-tests (2016-02-20) 1 commit
482 - (merged to 'next' on 2016-02-25 at ca8cbb0)
483 - + tests: rename work-tree tests to *work-tree*
502 +* sb/submodule-init (2016-02-25) 2 commits
503 + - submodule: port init from shell to C
504 + - submodule: port resolve_relative_url from shell to C
505 + (this branch uses sb/submodule-parallel-update; is tangled with dt/refs-backend-lmdb.)
506
485 - Traditionally, the tests that try commands that work on the
486 - contents in the working tree were named with "worktree" in their
487 - filenames, but with the recent addition of "git worktree"
488 - subcommand, whose tests are also named similarly, it has become
489 - harder to tell them apart. The traditional tests have been renamed
490 - to use "work-tree" instead in an attempt to differentiate them.
507 + Update of "git submodule" to move pieces of logic to C continues.
508
492 - Will merge to 'master'.
509 + Comments?
510 + ($gmane/286092)
511
512
495 -* jk/more-comments-on-textconv (2016-02-22) 1 commit
496 - (merged to 'next' on 2016-02-24 at 4ccfdc5)
497 - + diff: clarify textconv interface
513 +* az/p4-bare-no-rebase (2016-02-19) 1 commit
514 + - git-p4.py: Don't try to rebase on submit from bare repository
515
499 - The memory ownership rule of fill_textconv() API, which was a bit
500 - tricky, has been documented a bit better.
516 + "git p4 submit" attempts to do a rebase, which would fail if done
517 + in a bare repository. Not doing this rebase would paper over the
518 + failure, which is what this patch does, but it is unclear what the
519 + side effect of not rebasing is.
520
502 - Will merge to 'master'.
521 + Needs a better explanation.
522
523
524 * cn/deprecate-ssh-git-url (2016-02-15) 1 commit
@@ -510,78 +529,6 @@ repositories listed at
529 ($gmane/286222)
530
531
513 -* fa/merge-recursive-no-rename (2016-02-24) 7 commits
514 - (merged to 'next' on 2016-02-25 at 8f18cc1)
515 - + t3034: test deprecated interface
516 - + t3034: test option to disable renames
517 - + t3034: add rename threshold tests
518 - + merge-recursive: find-renames resets threshold
519 - + merge-strategies.txt: fix typo
520 - (merged to 'next' on 2016-02-18 at dd6125b)
521 - + merge-recursive: more consistent interface
522 - + merge-recursive: option to disable renames
523 -
524 - "git merge-recursive" learned "--no-renames" option to disable its
525 - rename detection logic.
526 -
527 - Will merge to 'master'.
528 -
529 -
530 -* jk/tighten-alloc (2016-02-22) 22 commits
531 - (merged to 'next' on 2016-02-24 at 78b3251)
532 - + ewah: convert to REALLOC_ARRAY, etc
533 - + convert ewah/bitmap code to use xmalloc
534 - + diff_populate_gitlink: use a strbuf
535 - + transport_anonymize_url: use xstrfmt
536 - + git-compat-util: drop mempcpy compat code
537 - + sequencer: simplify memory allocation of get_message
538 - + test-path-utils: fix normalize_path_copy output buffer size
539 - + fetch-pack: simplify add_sought_entry
540 - + fast-import: simplify allocation in start_packfile
541 - + write_untracked_extension: use FLEX_ALLOC helper
542 - + prepare_{git,shell}_cmd: use argv_array
543 - + use st_add and st_mult for allocation size computation
544 - + convert trivial cases to FLEX_ARRAY macros
545 - + use xmallocz to avoid size arithmetic
546 - + convert trivial cases to ALLOC_ARRAY
547 - + convert manual allocations to argv_array
548 - + argv-array: add detach function
549 - + add helpers for allocating flex-array structs
550 - + harden REALLOC_ARRAY and xcalloc against size_t overflow
551 - + tree-diff: catch integer overflow in combine_diff_path allocation
552 - + add helpers for detecting size_t overflow
553 - + reflog_expire_cfg: NUL-terminate pattern field
554 -
555 - Update various codepaths to avoid manually-counted malloc().
556 -
557 - Will merge to 'master'.
558 -
559 -
560 -* ps/config-error (2016-02-22) 15 commits
561 - (merged to 'next' on 2016-02-25 at b378629)
562 - + config: rename git_config_set_or_die to git_config_set
563 - + config: rename git_config_set to git_config_set_gently
564 - + compat: die when unable to set core.precomposeunicode
565 - + sequencer: die on config error when saving replay opts
566 - + init-db: die on config errors when initializing empty repo
567 - + clone: die on config error in cmd_clone
568 - + remote: die on config error when manipulating remotes
569 - + remote: die on config error when setting/adding branches
570 - + remote: die on config error when setting URL
571 - + submodule--helper: die on config error when cloning module
572 - + submodule: die on config error when linking modules
573 - + branch: die on config error when editing branch description
574 - + branch: die on config error when unsetting upstream
575 - + branch: report errors in tracking branch setup
576 - + config: introduce set_or_die wrappers
577 -
578 - Many codepaths forget to check return value from git_config_set();
579 - the function is made to die() to make sure we do not proceed when
580 - setting a configuration variable failed.
581 -
582 - Will merge to 'master'.
583 -
584 -
532 * ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
533 - wt-status.c: set commitable bit if there is a meaningful merge.
534
@@ -591,34 +538,6 @@ repositories listed at
538 not give you the correct answer, for example).
539
540
594 -* tg/git-remote (2016-02-16) 4 commits
595 - (merged to 'next' on 2016-02-18 at 091d43e)
596 - + remote: use remote_is_configured() for add and rename
597 - + remote: actually check if remote exits
598 - + remote: simplify remote_is_configured()
599 - + remote: use parse_config_key
600 -
601 - The internal API to interact with "remote.*" configuration
602 - variables has been streamlined.
603 -
604 - Will merge to 'master'.
605 -
606 -
607 -* ls/config-origin (2016-02-22) 4 commits
608 - (merged to 'next' on 2016-02-24 at 239fcc2)
609 - + config: add '--show-origin' option to print the origin of a config value
610 - + config: add 'origin_type' to config_source struct
611 - + rename git_config_from_buf to git_config_from_mem
612 - + t: do not hide Git's exit code in tests using 'nul_to_q'
613 -
614 - The configuration system has been taught to phrase where it found a
615 - bad configuration variable in a better way in its error messages.
616 - "git config" learnt a new "--show-origin" option to indicate where
617 - the values come from.
618 -
619 - Will merge to 'master'.
620 -
621 -
541 * nd/icase (2016-02-15) 12 commits
542 - grep.c: reuse "icase" variable
543 - diffcore-pickaxe: support case insensitive match on non-ascii
@@ -639,22 +558,6 @@ repositories listed at
558 ($gmane/286137)
559
560
642 -* tb/conversion (2016-02-23) 7 commits
643 - (merged to 'next' on 2016-02-25 at 1bb466d)
644 - + convert.c: correct attr_action()
645 - (merged to 'next' on 2016-02-12 at 6faf27b)
646 - + convert.c: simplify text_stat
647 - + convert.c: refactor crlf_action
648 - + convert.c: use text_eol_is_crlf()
649 - + convert.c: remove input_crlf_action()
650 - + convert.c: remove unused parameter 'path'
651 - + t0027: add tests for get_stream_filter()
652 -
653 - Code simplification.
654 -
655 - Will merge to 'master'.
656 -
657 -
561 * sb/submodule-parallel-update (2016-02-25) 11 commits
562 - clone: allow an explicit argument for parallel submodule clones
563 - submodule update: expose parallelism to the user
@@ -719,26 +622,6 @@ repositories listed at
622 ($gmane/286572)
623
624
722 -* kn/ref-filter-atom-parsing (2016-02-17) 11 commits
723 - (merged to 'next' on 2016-02-18 at 9606218)
724 - + ref-filter: introduce objectname_atom_parser()
725 - + ref-filter: introduce contents_atom_parser()
726 - + ref-filter: introduce remote_ref_atom_parser()
727 - + ref-filter: align: introduce long-form syntax
728 - + ref-filter: introduce align_atom_parser()
729 - + ref-filter: introduce parse_align_position()
730 - + ref-filter: introduce color_atom_parser()
731 - + ref-filter: introduce parsing functions for each valid atom
732 - + ref-filter: introduce struct used_atom
733 - + ref-filter: bump 'used_atom' and related code to the top
734 - + ref-filter: use string_list_split over strbuf_split
735 -
736 - The ref-filter's format-parsing code has been refactored, in
737 - preparation for "branch --format" and friends.
738 -
739 - Will merge to 'master'.
740 -
741 -
625 * ad/cygwin-wants-rename (2015-08-07) 1 commit
626 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
627
@@ -770,57 +653,3 @@ repositories listed at
653 git-gui still uses the deprecated syntax, which needs to be fixed
654 before this final step can proceed.
655 ($gmane/282594)
773 -
774 ---------------------------------------------------
775 -[Discarded]
776 -
777 -* dv/http-try-negotiate-at-least-once (2016-02-02) 1 commit
778 - . remote-curl: don't fall back to Basic auth if we haven't tried Negotiate
779 -
780 - bc/http-empty-auth satisfies the original need that triggered this
781 - topic better.
782 -
783 -
784 -* ep/format-printf (2016-02-11) 22 commits
785 - . wt-status.h: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
786 - . utf8.h: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
787 - . transport-helper.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
788 - . trace.h: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
789 - . strbuf.h: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
790 - . remote.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
791 - . pkt-line.h: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
792 - . merge-recursive.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
793 - . imap-send.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
794 - . http-backend.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
795 - . fsck.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
796 - . daemon.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
797 - . config.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
798 - . color.h: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
799 - . cache.h: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
800 - . builtin/upload-archive.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
801 - . builtin/update-index.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
802 - . builtin/receive-pack.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
803 - . builtin/index-pack.c: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
804 - . argv-array.h: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
805 - . advice.h: use the FORMAT_PRINTF macro to declare the gcc function attribute 'format printf'
806 - . git-compat-util.h: add the FORMAT_PRINTF macro
807 -
808 - Replace __attribute__((format(printf, a, b))) with
809 - FORMAT_PRINTF(a,b) everywhere in the code.
810 -
811 - It would be a different story if another compiler had the same
812 - feature implemented using a different syntax, in which case we
813 - could use conditionally #define what FORMAT_PRINTF(a,b) expands to,
814 - but because we do not have such a compiler supported, this change
815 - is a net negative, churning the code without buying us anything
816 - (yet).
817 -
818 -
819 -* jk/merge-tree-merge-blobs (2016-02-16) 1 commit
820 - . merge_blobs: use strbuf instead of manually-sized mmfile_t
821 -
822 - "git merge-tree" (a throw-away demonstration) did not work very
823 - well when merging "both sides added a new file at the same path"
824 - case.
825 -
826 - Solved differently by jk/no-diff-emit-common topic.