> * tb/apply-with-crlf (2017-08-17) 3 commits > - SQUASH??? > - apply: file commited with CRLF should roundtrip diff and apply > - convert: add SAFE_CRLF_KEEP_CRLF > (this branch is tangled with jc/apply-with-crlf.) > > "git apply" that is used as a better "patch -p1" failed to apply a > taken from a file with CRLF line endings to a file with CRLF line > endings. The root cause was because it misused convert_to_git() > that tried to do "safe-crlf" processing by looking at the index > entry at the same path, which is a nonsense---in that mode, "apply" > is not working on the data in (or derived from) the index at all. > This has been fixed. > > Will merge to 'next' after squashing the fix in. > > > * rs/t1002-do-not-use-sum (2017-08-15) 1 commit > - t1002: stop using sum(1) > > Test simplification. > > Will merge to 'next'. > > > * sb/sha1-file-cleanup (2017-08-15) 1 commit > - sha1_file: make read_info_alternates static > > Code clean-up. > > Will merge to 'next'. > > > * as/grep-quiet-no-match-exit-code-fix (2017-08-17) 1 commit > - git-grep: correct exit code with --quiet and -L > > "git grep -L" and "git grep --quiet -L" reported different exit > codes; this has been corrected. > > Will merge to 'next'. > > > * hv/t5526-andand-chain-fix (2017-08-17) 1 commit > - t5526: fix some broken && chains > > Test fix. > > Will merge to 'next'. > > > * jc/diff-sane-truncate-no-more (2017-08-17) 1 commit > - diff: retire sane_truncate_fn > > Code clean-up. > > Will merge to 'next'. > > > * ks/branch-set-upstream (2017-08-17) 3 commits > - branch: quote branch/ref names to improve readability > - builtin/branch: stop supporting the "--set-upstream" option > - t3200: cleanup cruft of a test > > "branch --set-upstream" that has been deprecated in Git 1.8 has > finally been retired. > > Will merge to 'next'. > > > * mg/format-ref-doc-fix (2017-08-18) 2 commits > - Documentation/git-for-each-ref: clarify peeling of tags for --format > - Documentation: use proper wording for ref format strings > > Doc fix. > > Will merge to 'next'. > > > * po/read-graft-line (2017-08-18) 4 commits > - commit: rewrite read_graft_line > - commit: allocate array using object_id size > - commit: replace the raw buffer with strbuf in read_graft_line > - sha1_file: fix definition of null_sha1 > > Conversion from uchar[20] to struct object_id continues; this is to > ensure that we do not assume sizeof(struct object_id) is the same > as the length of SHA-1 hash (or length of longest hash we support). > > Will merge to 'next'. > > > * sb/submodule-parallel-update (2017-08-17) 1 commit > - submodule.sh: remove unused variable > > Code clean-up. > > Will merge to 'next'. > > > * jc/apply-with-crlf (2017-08-16) 6 commits > . apply: clarify read_old_data() is about no-index case > . apply: localize the CRLF business to read_old_data() > . apply: only pay attention to CRLF in the preimage > . apply: remove unused field apply_state.flags > . apply: file commited with CRLF should roundtrip diff and apply > - convert: add SAFE_CRLF_KEEP_CRLF > (this branch is tangled with tb/apply-with-crlf.) > > Will discard as it now is part of the tb/apply-with-crlf topic. > > -------------------------------------------------- > [Stalled] > > * mg/status-in-progress-info (2017-05-10) 2 commits > - status --short --inprogress: spell it as --in-progress > - status: show in-progress info for short status > > "git status" learns an option to report various operations > (e.g. "merging") that the user is in the middle of. > > cf. <xmqqmvakcdqw.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxx> > > > * nd/worktree-move (2017-04-20) 6 commits > - worktree remove: new command > - worktree move: refuse to move worktrees with submodules > - worktree move: accept destination as directory > - worktree move: new command > - worktree.c: add update_worktree_location() > - worktree.c: add validate_worktree() > > "git worktree" learned move and remove subcommands. > > Expecting a reroll. > cf. <20170420101024.7593-1-pclouds@xxxxxxxxx> > cf. <20170421145916.mknekgqzhxffu7di@xxxxxxxxxxxxxxxxxxxxx> > cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@xxxxxxxxxxxxxxxxxxxx> > > > * sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits > - Documentation/clone: document ignored configuration variables > - clone: respect additional configured fetch refspecs during initial fetch > (this branch is used by sg/remote-no-string-refspecs.) > > "git clone -c var=val" is a way to set configuration variables in > the resulting repository, but it is more useful to also make these > variables take effect while the initial clone is happening, > e.g. these configuration variables could be fetch refspecs. > > Waiting for a response. > cf. <20170617112228.vugswym4o4owf6wj@xxxxxxxxxxxxxxxxxxxxx> > cf. <xmqqmv8zhdap.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxx> > > > * js/rebase-i-final (2017-07-27) 10 commits > - rebase -i: rearrange fixup/squash lines using the rebase--helper > - t3415: test fixup with wrapped oneline > - rebase -i: skip unnecessary picks using the rebase--helper > - rebase -i: check for missing commits in the rebase--helper > - t3404: relax rebase.missingCommitsCheck tests > - rebase -i: also expand/collapse the SHA-1s via the rebase--helper > - rebase -i: do not invent onelines when expanding/collapsing SHA-1s > - rebase -i: remove useless indentation > - rebase -i: generate the script via rebase--helper > - t3415: verify that an empty instructionFormat is handled as before > > The final batch to "git rebase -i" updates to move more code from > the shell script to C. > > Expecting a reroll. > > > * bp/fsmonitor (2017-06-12) 6 commits > - fsmonitor: add a sample query-fsmonitor hook script for Watchman > - fsmonitor: add documentation for the fsmonitor extension. > - fsmonitor: add test cases for fsmonitor extension > - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files. > - dir: make lookup_untracked() available outside of dir.c > - bswap: add 64 bit endianness helper get_be64 > > We learned to talk to watchman to speed up "git status". > > Expecting a reroll. > cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@xxxxxxxxx> > > -------------------------------------------------- > [Cooking] > > * ks/prepare-commit-msg-sample-fix (2017-08-14) 1 commit > - hook: use correct logical variable > > An "oops" fix to a topic that is already in 'master'. > > Will merge to 'next'. > > > * ab/ref-filter-no-contains (2017-08-07) 1 commit > (merged to 'next' on 2017-08-18 at 7ec9d3d3a2) > + tests: don't give unportable ">" to "test" built-in, use -gt > > A test fix. > > Will merge to 'master'. > > > * ma/parse-maybe-bool (2017-08-07) 6 commits > (merged to 'next' on 2017-08-18 at ba22bb836c) > + parse_decoration_style: drop unused argument `var` > + treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool > + config: make git_{config,parse}_maybe_bool equivalent > + config: introduce git_parse_maybe_bool_text > + t5334: document that git push --signed=1 does not work > + Doc/git-{push,send-pack}: correct --sign= to --signed= > > Code clean-up. > > Will merge to 'master'. > > > * mf/no-dashed-subcommands (2017-08-07) 1 commit > (merged to 'next' on 2017-08-18 at 05365af2ff) > + scripts: use "git foo" not "git-foo" > > Code clean-up. > > Will merge to 'master'. > > > * mk/diff-delta-uint-may-be-shorter-than-ulong (2017-08-10) 1 commit > - diff-delta: fix encoding size that would not fit in "unsigned int" > > The machinery to create xdelta used in pack files received the > sizes of the data in size_t, but lost the higher bits of them by > storing them in "unsigned int" during the computation, which is > fixed. > > Will merge to 'next'. > > > * rs/obsd-getcwd-workaround (2017-08-07) 1 commit > (merged to 'next' on 2017-08-18 at adb98cfe0c) > + t0001: skip test with restrictive permissions if getpwd(3) respects them > > Test portability fix for BSDs. > > Will merge to 'master'. > > > * rs/in-obsd-basename-dirname-take-const (2017-08-07) 1 commit > (merged to 'next' on 2017-08-18 at c739077e3b) > + test-path-utils: handle const parameter of basename and dirname > > Portability fix. > > Will merge to 'master'. > > > * rs/t3700-clean-leftover (2017-08-08) 1 commit > (merged to 'next' on 2017-08-18 at 12232a8cd3) > + t3700: fix broken test under !POSIXPERM > > A test fix. > > Will merge to 'master'. > > > * jc/perl-git-comment-typofix (2017-08-07) 1 commit > (merged to 'next' on 2017-08-18 at b2ad043e6a) > + perl/Git.pm: typofix in a comment > > A comment fix. > > Will merge to 'master'. > > > * jk/drop-ancient-curl (2017-08-09) 5 commits > - http: #error on too-old curl > - curl: remove ifdef'd code never used with curl >=7.19.4 > - http: drop support for curl < 7.19.4 > - http: drop support for curl < 7.16.0 > - http: drop support for curl < 7.11.1 > > Some code in http.c that has bitrot is being removed. > > What is the status of the discussion around this area???? > > > * tc/curl-with-backports (2017-08-11) 2 commits > - http: use a feature check to enable GSSAPI delegation control > - http: fix handling of missing CURLPROTO_* > > Updates to the HTTP layer we made recently unconditionally used > features of libCurl without checking the existence of them, causing > compilation errors, which has been fixed. Also migrate the code to > check feature macros, not version numbers, to cope better with > libCurl that vendor ships with backported features. > > What is the doneness of this topic???? > > > * jk/drop-sha1-entry-pos (2017-08-09) 1 commit > (merged to 'next' on 2017-08-18 at 3a4d9bcf12) > + sha1_file: drop experimental GIT_USE_LOOKUP search > > Code clean-up. > > Will merge to 'master'. > > > * jk/hashcmp-memcmp (2017-08-09) 1 commit > (merged to 'next' on 2017-08-18 at 27c4aa5520) > + hashcmp: use memcmp instead of open-coded loop > > Code clean-up. > > Will merge to 'master'. > > > * jk/trailers-parse (2017-08-15) 8 commits > - pretty: support normalization options for %(trailers) > - t4205: refactor %(trailers) tests > - pretty: move trailer formatting to trailer.c > - interpret-trailers: add --parse convenience option > - interpret-trailers: add an option to unfold values > - interpret-trailers: add an option to show only existing trailers > - interpret-trailers: add an option to show only the trailers > - trailer: put process_trailers() options into a struct > > "git interpret-trailers" has been taught a "--parse" and a few > other options to make it easier for scripts to grab existing > trailer lines from a commit log message. > > Will merge to 'next'. > > > * mk/use-size-t-in-zlib (2017-08-10) 1 commit > - zlib.c: use size_t for size > > The wrapper to call into zlib followed our long tradition to use > "unsigned long" for sizes of regions in memory, which have been > updated to use "size_t". > > Needs review. > > There were some concerns raised around s/off_t/size_t/ in this > change. > > > * pw/am-signoff (2017-08-08) 1 commit > (merged to 'next' on 2017-08-18 at 7678ed822c) > + am: fix signoff when other trailers are present > > "git am -s" has been taught that some input may end with a trailer > block that is not Signed-off-by: and it should refrain from adding > an extra blank line before adding a new sign-off in such a case. > > Will merge to 'master'. > > > * rj/add-chmod-error-message (2017-08-09) 1 commit > (merged to 'next' on 2017-08-18 at ba2afb696a) > + builtin/add: add detail to a 'cannot chmod' error message > > Message fix. > > Will merge to 'master'. > > > * rs/apply-lose-prefix-length (2017-08-09) 1 commit > (merged to 'next' on 2017-08-18 at 6ce0dbb3f0) > + apply: remove prefix_length member from apply_state > > Code clean-up. > > Will merge to 'master'. > > > * rs/find-pack-entry-bisection (2017-08-09) 1 commit > (merged to 'next' on 2017-08-18 at b4130177a9) > + sha1_file: avoid comparison if no packed hash matches the first byte > > Code clean-up. > > Will merge to 'master'. > > > * rs/fsck-obj-leakfix (2017-08-10) 1 commit > (merged to 'next' on 2017-08-18 at 77e3d111ef) > + fsck: free buffers on error in fsck_obj() > > Memory leak in an error codepath has been plugged. > > Will merge to 'master'. > > > * rs/merge-microcleanup (2017-08-10) 1 commit > (merged to 'next' on 2017-08-18 at 79ba7d301d) > + merge: use skip_prefix() > > Code clean-up. > > Will merge to 'master'. > > > * rs/strbuf-getwholeline-fix (2017-08-10) 1 commit > (merged to 'next' on 2017-08-18 at 5f879d8261) > + strbuf: clear errno before calling getdelim(3) > > A helper function to read a single whole line into strbuf > mistakenly triggered OOM error at EOF under certain conditions, > which has been fixed. > > Will merge to 'master'. > > > * rs/t4062-obsd (2017-08-09) 1 commit > (merged to 'next' on 2017-08-18 at 02bff42d86) > + t4062: use less than 256 repetitions in regex > > Test portability fix. > > Will merge to 'master'. > > > * rs/unpack-entry-leakfix (2017-08-10) 1 commit > (merged to 'next' on 2017-08-18 at 1e7d8f54b1) > + sha1_file: release delta_stack on error in unpack_entry() > > Memory leak in an error codepath has been plugged. > > Will merge to 'master'. > > > * rs/win32-syslog-leakfix (2017-08-10) 1 commit > (merged to 'next' on 2017-08-18 at 011eccb7bd) > + win32: plug memory leak on realloc() failure in syslog() > > Memory leak in an error codepath has been plugged. > > Will merge to 'master'. > > > * sb/retire-t1200 (2017-08-10) 1 commit > (merged to 'next' on 2017-08-18 at d436f9bbce) > + t1200: remove t1200-tutorial.sh > > A test script that outlived its usefulness has been removed. > > Will merge to 'master'. > > > * ur/svn-local-zone (2017-08-08) 1 commit > (merged to 'next' on 2017-08-18 at f222bb6db0) > + git svn fetch: Create correct commit timestamp when using --localtime > > "git svn" used with "--localtime" option did not compute the tz > offset for the timestamp in question and instead always used the > current time, which has been corrected. > > Will merge to 'master'. > > > * jt/sha1-file-cleanup (2017-08-11) 2 commits > - sha1_file: remove read_packed_sha1() > - sha1_file: set whence in storage-specific info fn > > Preparatory code clean-up. > > Will merge to 'next'. > > > * kw/rebase-progress (2017-08-14) 2 commits > - rebase: turn on progress option by default for format-patch > - format-patch: have progress option while generating patches > > "git rebase", especially when it is run by mistake and ends up > trying to replay many changes, spent long time in silence. The > command has been taught to show progress report when it spends > long time preparing these many changes to replay (which would give > the user a chance to abort with ^C). > > Will merge to 'next'. > > > * mk/diff-delta-avoid-large-offset (2017-08-11) 1 commit > - diff-delta: do not allow delta offset truncation > > The delta format used in the packfile cannot reference data at > offset larger than what can be expressed in 4-byte, but the > generator for the data failed to make sure the offset does not > overflow. This has been corrected. > > Will merge to 'next'. > > > * nm/stash-untracked (2017-08-11) 1 commit > - stash: clean untracked files before reset > > "git stash -u" used the contents of the committed version of the > ".gitignore" file to decide which paths are ignored, even when the > file has local changes. The command has been taught to instead use > the locally modified contents. > > Will merge to 'next'. > > > * rs/object-id (2017-08-14) 1 commit > - tree-walk: convert fill_tree_descriptor() to object_id > > Conversion from uchar[20] to struct object_id continues. > > Will merge to 'next'. > > > * ah/doc-empty-string-is-false (2017-08-14) 1 commit > - doc: clarify "config --bool" behaviour with empty string > > Doc update. > > Will merge to 'next'. > > > * jt/diff-color-move-fix (2017-08-16) 3 commits > - diff: define block by number of alphanumeric chars > - diff: respect MIN_BLOCK_LENGTH for last block > - diff: avoid redundantly clearing a flag > (this branch uses sb/diff-color-move.) > > A handful of bugfixes and an improvement to "diff --color-moved". > > Will merge to 'next'. > > > * kd/stash-with-bash-4.4 (2017-08-14) 1 commit > - stash: prevent warning about null bytes in input > > bash 4.4 or newer gave a warning on NUL byte in command > substitution done in "git stash"; this has been squelched. > > Will merge to 'next'. > > > * kw/commit-keep-index-when-pre-commit-is-not-run (2017-08-16) 1 commit > - commit: skip discarding the index if there is no pre-commit hook > > "git commit" used to discard the index and re-read from the filesystem > just in case the pre-commit hook has updated it in the middle; this > has been optimized out when we know we do not run the pre-commit hook. > > Will merge to 'next'. > > > * bw/git-clang-format (2017-08-14) 2 commits > - Makefile: add style build rule > - clang-format: outline the git project's coding style > > "make style" runs git-clang-format to help developers by pointing > out coding style issues. > > > * pw/sequence-rerere-autoupdate (2017-08-02) 6 commits > (merged to 'next' on 2017-08-14 at 010cbb0cbe) > + cherry-pick/revert: reject --rerere-autoupdate when continuing > + cherry-pick/revert: remember --rerere-autoupdate > + t3504: use test_commit > + rebase -i: honor --rerere-autoupdate > + rebase: honor --rerere-autoupdate > + am: remember --rerere-autoupdate setting > > Commands like "git rebase" accepted the --rerere-autoupdate option > from the command line, but did not always use it. This has been > fixed. > > Will merge to 'master'. > > > * bw/clone-recursive-quiet (2017-08-04) 1 commit > (merged to 'next' on 2017-08-14 at fbd4473ce4) > + clone: teach recursive clones to respect -q > > "git clone --recurse-submodules --quiet" did not pass the quiet > option down to submodules. > > Will merge to 'master'. > > > * lg/merge-signoff (2017-07-25) 1 commit > - merge: add a --signoff flag > > "git merge" learned a "--signoff" option to add the Signed-off-by: > trailer with the committer's name. > > Will merge to 'next'. > > > * pb/trailers-from-command-line (2017-08-14) 4 commits > - interpret-trailers: fix documentation typo > - interpret-trailers: add options for actions > - trailers: introduce struct new_trailer_item > - trailers: export action enums and corresponding lookup functions > > "git interpret-trailers" learned to take the trailer specifications > from the command line that overrides the configured values. > > Will merge to 'next'. > > > * sb/submodule-recursive-checkout-detach-head (2017-07-28) 2 commits > - Documentation/checkout: clarify submodule HEADs to be detached > - recursive submodules: detach HEAD from new state > > "git checkout --recursive" may overwrite and rewind the history of > the branch that happens to be checked out in submodule > repositories, which might not be desirable. Detach the HEAD but > still allow the recursive checkout to succeed in such a case. > > Undecided. > This needs justification in a larger picture; it is unclear why > this is better than rejecting recursive checkout, for example. > > > * ti/external-sha1dc (2017-08-16) 2 commits > - sha1dc: allow building with the external sha1dc library > - sha1dc: build git plumbing code more explicitly > > Platforms that ship with a separate sha1 with collision detection > library can link to it instead of using the copy we ship as part of > our source tree. > > Waiting for reviews. > cf. <20170815120417.31616-1-tiwai@xxxxxxx> > > > * bw/submodule-config-cleanup (2017-08-03) 17 commits > - submodule: remove gitmodules_config > - unpack-trees: improve loading of .gitmodules > - submodule-config: lazy-load a repository's .gitmodules file > - submodule-config: move submodule-config functions to submodule-config.c > - submodule-config: remove support for overlaying repository config > - diff: stop allowing diff to have submodules configured in .git/config > - submodule: remove submodule_config callback routine > - unpack-trees: don't respect submodule.update > - submodule: don't rely on overlayed config when setting diffopts > - fetch: don't overlay config with submodule-config > - submodule--helper: don't overlay config in update-clone > - submodule--helper: don't overlay config in remote_submodule_branch > - add, reset: ensure submodules can be added or reset > - submodule: don't use submodule_from_name > - t7411: check configuration parsing errors > - Merge branch 'bc/object-id' into bw/submodule-config-cleanup > - Merge branch 'bw/grep-recurse-submodules' into bw/submodule-config-cleanup > (this branch uses bw/grep-recurse-submodules.) > > Code clean-up to avoid mixing values read from the .gitmodules file > and values read from the .git/config file. > > > * bw/push-options-recursively-to-submodules (2017-07-20) 1 commit > (merged to 'next' on 2017-08-14 at 421dc09fd0) > + submodule--helper: teach push-check to handle HEAD > > "git push --recurse-submodules $there HEAD:$target" was not > propagated down to the submodules, but now it is. > > Will merge to 'master'. > > > * jk/check-ref-format-oor-fix (2017-07-14) 1 commit > - check-ref-format: require a repository for --branch > > Discussion slowly continues... > cf. <20170717172709.GL93855@xxxxxxxxxxxxxxxxxxxxxxxxx> > cf. <20170817102217.3yw7uxnkupdy3lh5@xxxxxxxxxxxxxxxxxxxxx> > > > * bw/grep-recurse-submodules (2017-08-02) 10 commits > (merged to 'next' on 2017-08-14 at dcfcfc94af) > + grep: recurse in-process using 'struct repository' > + submodule: merge repo_read_gitmodules and gitmodules_config > + submodule: check for unmerged .gitmodules outside of config parsing > + submodule: check for unstaged .gitmodules outside of config parsing > + submodule: remove fetch.recursesubmodules from submodule-config parsing > + submodule: remove submodule.fetchjobs from submodule-config parsing > + config: add config_from_gitmodules > + cache.h: add GITMODULES_FILE macro > + repository: have the_repository use the_index > + repo_read_index: don't discard the index > (this branch is used by bw/submodule-config-cleanup.) > > "git grep --recurse-submodules" has been reworked to give a more > consistent output across submodule boundary (and do its thing > without having to fork a separate process). > > Will merge to 'master'. > > > * rs/sha1-file-micro-optim (2017-07-09) 2 commits > - SQUASH??? > - sha1_file: add slash once in for_each_file_in_obj_subdir() > > Code cleanup. > > Perhaps drop. > cf. <f59c8256-716b-9305-2a4f-d4fe49f666ff@xxxxxx> > > > * jc/allow-lazy-cas (2017-07-06) 1 commit > - push: disable lazy --force-with-lease by default > > Because "git push --force-with-lease[=<ref>]" that relies on the > stability of remote-tracking branches is unsafe when something > fetches into the repository behind user's back, it is now disabled > by default. A new configuration variable can be used to enable it > by users who know what they are doing. This would pave the way to > possibly turn `--force` into `--force-with-lease`. > > Will discard. > Independent from disabling the feature by default, this stirred up > a discussion to replace the DWIM heuristics with a better one, which > deserves to be its own topic. > cf. <alpine.DEB.2.21.1.1707131435220.4193@virtualbox> > > > * ex/deprecate-empty-pathspec-as-match-all (2017-06-23) 2 commits > (merged to 'next' on 2017-08-14 at 24db08a6e8) > + pathspec: die on empty strings as pathspec > + t0027: do not use an empty string as a pathspec element > > The final step to make an empty string as a pathspec element > illegal. We started this by first deprecating and warning a > pathspec that has such an element in 2.11 (Nov 2016). > > Hopefully we can merge this down to the 'master' by the end of the > year? A deprecation warning period that is about 1 year does not > sound too bad. > > Will cook in 'next'. > > > * mh/packed-ref-store (2017-08-17) 32 commits > (merged to 'next' on 2017-08-18 at 14c58936e1) > + files-backend: cheapen refname_available check when locking refs > (merged to 'next' on 2017-08-14 at 987b76d302) > + packed_ref_store: handle a packed-refs file that is a symlink > + read_packed_refs(): die if `packed-refs` contains bogus data > + t3210: add some tests of bogus packed-refs file contents > + repack_without_refs(): don't lock or unlock the packed refs > + commit_packed_refs(): remove call to `packed_refs_unlock()` > + clear_packed_ref_cache(): don't protest if the lock is held > + packed_refs_unlock(), packed_refs_is_locked(): new functions > + packed_refs_lock(): report errors via a `struct strbuf *err` > + packed_refs_lock(): function renamed from lock_packed_refs() > + commit_packed_refs(): use a staging file separate from the lockfile > + commit_packed_refs(): report errors rather than dying > + packed_ref_store: make class into a subclass of `ref_store` > + packed-backend: new module for handling packed references > + packed_read_raw_ref(): new function, replacing `resolve_packed_ref()` > + packed_ref_store: support iteration > + packed_peel_ref(): new function, extracted from `files_peel_ref()` > + repack_without_refs(): take a `packed_ref_store *` parameter > + get_packed_ref(): take a `packed_ref_store *` parameter > + rollback_packed_refs(): take a `packed_ref_store *` parameter > + commit_packed_refs(): take a `packed_ref_store *` parameter > + lock_packed_refs(): take a `packed_ref_store *` parameter > + add_packed_ref(): take a `packed_ref_store *` parameter > + get_packed_refs(): take a `packed_ref_store *` parameter > + get_packed_ref_cache(): take a `packed_ref_store *` parameter > + validate_packed_ref_cache(): take a `packed_ref_store *` parameter > + clear_packed_ref_cache(): take a `packed_ref_store *` parameter > + packed_ref_store: move `packed_refs_lock` member here > + packed_ref_store: move `packed_refs_path` here > + packed_ref_store: new struct > + add_packed_ref(): teach function to overwrite existing refs > + t1408: add a test of stale packed refs covered by loose refs > > The "ref-store" code reorganization continues. > > Will merge to 'master'. > > > * sd/branch-copy (2017-06-18) 3 commits > - branch: add a --copy (-c) option to go with --move (-m) > - branch: add test for -m renaming multiple config sections > - config: create a function to format section headers > > "git branch" learned "-c/-C" to create and switch to a new branch > by copying an existing one. > > I personally do not think "branch --copy master backup" while on > "master" that switches to "backup" is a good UI, and I *will* say > "I told you so" when users complain after we merge this down to > 'master'. > > > * sb/diff-color-move (2017-06-30) 26 commits > - diff: document the new --color-moved setting > - diff.c: add dimming to moved line detection > - diff.c: color moved lines differently, plain mode > - diff.c: color moved lines differently > - diff.c: buffer all output if asked to > - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY > - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP > - diff.c: convert word diffing to use emit_diff_symbol > - diff.c: convert show_stats to use emit_diff_symbol > - diff.c: convert emit_binary_diff_body to use emit_diff_symbol > - submodule.c: migrate diff output to use emit_diff_symbol > - diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF > - diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES > - diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER > - diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS} > - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE > - diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN] > - diff.c: migrate emit_line_checked to use emit_diff_symbol > - diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF > - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO > - diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER > - diff.c: introduce emit_diff_symbol > - diff.c: factor out diff_flush_patch_all_file_pairs > - diff.c: move line ending check into emit_hunk_header > - diff.c: readability fix > - Merge branch 'sb/hashmap-customize-comparison' into sb/diff-color-move > (this branch is used by jt/diff-color-move-fix.) > > "git diff" has been taught to optionally paint new lines that are > the same as deleted lines elsewhere differently from genuinely new > lines. > > Will merge to 'next'. > ... again. > > -------------------------------------------------- > [Discarded] > > * nd/prune-in-worktree (2017-04-24) 12 commits > . rev-list: expose and document --single-worktree > . revision.c: --reflog add HEAD reflog from all worktrees > . files-backend: make reflog iterator go through per-worktree reflog > . revision.c: --all adds HEAD from all worktrees > . refs: remove dead for_each_*_submodule() > . revision.c: use refs_for_each*() instead of for_each_*_submodule() > . refs: add refs_head_ref() > . refs: move submodule slash stripping code to get_submodule_ref_store > . refs.c: refactor get_submodule_ref_store(), share common free block > . revision.c: --indexed-objects add objects from all worktrees > . revision.c: refactor add_index_objects_to_pending() > . revision.h: new flag in struct rev_info wrt. worktree-related refs > > "git gc" and friends when multiple worktrees are used off of a > single repository did not consider the index and per-worktree refs > of other worktrees as the root for reachability traversal, making > objects that are in use only in other worktrees to be subject to > garbage collection. I will send V4 in a second (hopefully the last version)