<commit_before>Git v1.7.4 Release Notes (draft)
================================

Updates since v1.7.3
--------------------

 * The option parsers of various commands that create new branch (or
   rename existing ones to a new name) were too loose and users were
   allowed to call a branch with a name that begins with a dash by
   creative abuse of their command line options, which only lead to
   burn themselves.  The name of a branch cannot begin with a dash
   now.

 * System-wide fallback default attributes can be stored in
   /etc/gitattributes; core.attributesfile configuration variable can
   be used to customize the path to this file.

 * Bash completion script in contrib/ has been adjusted to be also
   usable by zsh.

 * "git daemon" can take more than one --listen option to listen to
   multiple addresses.

 * "git diff" and "git grep" learned how functions and subroutines
   in Fortran look like.

 * "git mergetool" tells vim/gvim to show three-way diff by default
   (use vimdiff2/gvimdiff2 as the tool name for old behaviour).

 * "git log -G<pattern>" limits the output to commits whose change has
   added or deleted lines that match the given pattern.

 * "git read-tree" with no argument as a way to empty the index is
   deprecated; we might want to remove it in the future.  Users can
   use the new --empty option to be more explicit instead.

 * "git repack -f" does not spend cycles to recompress objects in the
   non-delta representation anymore (use -F if you really mean it when
   e.g. you changed the compression level).

 * "git merge --log" used to limit the resulting merge log to 20
   entries; this is now customizable by giving e.g. "--log=47".

 * The default "recursive" merge strategy learned --rename-threshold
   option to influence the rename detection, similar to the -M option
   of "git diff".  E.g. "git merge -Xrename-threshold=50% ..." to use
   this.

 * The "recursive" strategy also learned to ignore various whitespace
   changes; the most notable is -Xignore-space-at-eol.

 * "git send-email" learned "--to-cmd", similar to "--cc-cmd", to read
   recipient list from a command output.

 * "git send-email" learned to read and use "To:" from its input files.

 * you can extend "git shell", which is often used on boxes that allow
   git-only login over ssh as login shell, with custom set of
   commands.

 * "git submodule sync" updates metainformation for all submodules,
   not just the ones that have been checked out.

 * gitweb can use custom 'highlight' command with its configuration file.


Also contains various documentation updates.


Fixes since v1.7.3
------------------

All of the fixes in v1.7.3.X maintenance series are included in this
release, unless otherwise noted.

 * "diff" and friends incorrectly applied textconv filters to symlinks
   (d391c0ff).

 * "git apply" segfaulted when a bogus input is fed to it (24305cd70).

 * Running "git cherry-pick --ff" on a root commit segfaulted (6355e50).

 * "git log --author=me --author=her" did not find commits written by
   me or by her; instead it looked for commits written by me and by
   her, which is impossible.

 * "git merge-file" can be called from within a subdirectory now
   (55846b9a).

 * "git push --progress" shows progress indicators now.

 * "git repack" places its temporary packs under $GIT_OBJECT_DIRECTORY/pack
   instead of $GIT_OBJECT_DIRECTORY/ to avoid cross directory renames.

 * "git rev-list --format="...%x00..." incorrectly chopped its output
   at NUL (9130ac9fe).

 * "git submodule update --recursive --other-flags" passes flags down
   to its subinvocations.

---
exec >/var/tmp/1
O=v1.7.3.2-245-g03276d9
echo O=$(git describe master)
git shortlog --no-merges ^maint ^$O master<commit_msg>Update draft release notes to 1.7.4<commit_after>Git v1.7.4 Release Notes (draft)
================================

Updates since v1.7.3
--------------------

 * The option parsers of various commands that create new branch (or
   rename existing ones to a new name) were too loose and users were
   allowed to call a branch with a name that begins with a dash by
   creative abuse of their command line options, which only lead to
   burn themselves.  The name of a branch cannot begin with a dash
   now.

 * System-wide fallback default attributes can be stored in
   /etc/gitattributes; core.attributesfile configuration variable can
   be used to customize the path to this file.

 * The thread structure generated by "git send-email" has changed
   slightly.  Setting the cover letter of the latest series as a reply
   to the cover letter of the previous series with --in-reply-to used
   to make the new cover letter and all the patches replies to the
   cover letter of the previous series; this has been changed to make
   the patches in the new series replies to the new cover letter.

 * Bash completion script in contrib/ has been adjusted to be also
   usable by zsh.

 * "git blame" learned --show-email option to display the e-mail
   addresses instead of the names of authors.

 * "git daemon" can be built in MinGW environment.

 * "git daemon" can take more than one --listen option to listen to
   multiple addresses.

 * "git diff" and "git grep" learned how functions and subroutines
   in Fortran look like.

 * "git mergetool" tells vim/gvim to show three-way diff by default
   (use vimdiff2/gvimdiff2 as the tool name for old behaviour).

 * "git log -G<pattern>" limits the output to commits whose change has
   added or deleted lines that match the given pattern.

 * "git read-tree" with no argument as a way to empty the index is
   deprecated; we might want to remove it in the future.  Users can
   use the new --empty option to be more explicit instead.

 * "git repack -f" does not spend cycles to recompress objects in the
   non-delta representation anymore (use -F if you really mean it when
   e.g. you changed the compression level).

 * "git merge --log" used to limit the resulting merge log to 20
   entries; this is now customizable by giving e.g. "--log=47".

 * "git merge" may work better when all files were moved out of a
   directory in one branch while a new file is created in place of that
   directory in the other branch.

 * "git rebase --autosquash" can use SHA-1 object names to name which
   commit to fix up (e.g. "fixup! e83c5163").

 * The default "recursive" merge strategy learned --rename-threshold
   option to influence the rename detection, similar to the -M option
   of "git diff".  E.g. "git merge -Xrename-threshold=50% ..." to use
   this.

 * The "recursive" strategy also learned to ignore various whitespace
   changes; the most notable is -Xignore-space-at-eol.

 * "git send-email" learned "--to-cmd", similar to "--cc-cmd", to read
   recipient list from a command output.

 * "git send-email" learned to read and use "To:" from its input files.

 * you can extend "git shell", which is often used on boxes that allow
   git-only login over ssh as login shell, with custom set of
   commands.

 * "git submodule sync" updates metainformation for all submodules,
   not just the ones that have been checked out.

 * gitweb can use custom 'highlight' command with its configuration file.


Also contains various documentation updates.


Fixes since v1.7.3
------------------

All of the fixes in v1.7.3.X maintenance series are included in this
release, unless otherwise noted.

 * Smart HTTP transport used to incorrectly retry redirected POST
   request with GET request (311e2ea006).

 * "git apply" did not correctly handle patches that only change modes
   if told to apply while stripping leading paths with -p option (aae1f6ac).

 * "git apply" can deal with patches with timezone formatted with a
   colon between the hours and minutes part (e.g. "-08:00" instead of
   "-0800").

 * "git checkout" removed an untracked file "foo" from the working
    tree when switching to a branch that contains a tracked path
    "foo/bar".  Prevent this, just like the case where the conflicting
    path were "foo" (c752e7f..7980872d).

 * "git diff --check" reported an incorrect line number for added
   blank lines at the end of file (8837d335).

 * "git log --author=me --author=her" did not find commits written by
   me or by her; instead it looked for commits written by me and by
   her, which is impossible.

 * "git merge" into an unborn branch removed an untracked file "foo"
   from the working tree when merged branch had "foo" (2caf20c..172b642).

 * "git push --progress" shows progress indicators now.

 * "git repack" places its temporary packs under $GIT_OBJECT_DIRECTORY/pack
   instead of $GIT_OBJECT_DIRECTORY/ to avoid cross directory renames.

 * "git submodule update --recursive --other-flags" passes flags down
   to its subinvocations.

---
exec >/var/tmp/1
O=v1.7.3.2-450-g5b9c331
echo O=$(git describe master)
git shortlog --no-merges ^maint ^$O master
{'fraction_non_alphanumeric': 0.08343613322866435, 'fraction_numerical': 0.01693394639452731, 'mean_word_length': 3.256801909307876, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1860091', 'n_tokens_mistral': 2587, 'n_tokens_neox': 2407, 'n_words': 1294}