Want more features on Pastebin? Sign Up, it's FREE!
Guest

Git Release Notes up to 1.7.0.4

By: a guest on Apr 17th, 2010  |  syntax: None  |  size: 247.91 KB  |  views: 450  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Git v1.7.0.5 Release Notes
  2. ==========================
  3.  
  4. Fixes since v1.7.0.4
  5. --------------------
  6.  
  7.  * "git daemon" failed to compile on platforms without sockaddr_storage type.
  8.  
  9.  * Output from "git rev-list --pretty=oneline" was unparsable when a
  10.    commit did not have any message, which is abnormal but possible in a
  11.    repository converted from foreign scm.
  12.  
  13.  * "git stash show <commit-that-is-not-a-stash>" gave an error message
  14.    that was not so useful.  Reworded the message to "<it> is not a
  15.    stash".
  16.  
  17.  * Python scripts in contrib/ area now start with "#!/usr/bin/env python"
  18.    to honor user's PATH.
  19.  
  20.  * "git imap-send" used to mistake any line that begins with "From " as a
  21.    message separator in format-patch output.
  22.  
  23.  * Smart http server backend failed to report an internal server error and
  24.    infinitely looped instead after output pipe was closed.
  25.  
  26. And other minor fixes and documentation updates.
  27. Git v1.7.0.4 Release Notes
  28. ==========================
  29.  
  30. Fixes since v1.7.0.3
  31. --------------------
  32.  
  33.  * Optimized ntohl/htonl on big-endian machines were broken.
  34.  
  35.  * Color values given to "color.<cmd>.<slot>" configuration can now have
  36.    more than one attributes (e.g. "bold ul").
  37.  
  38.  * "git add -u nonexistent-path" did not complain.
  39.  
  40.  * "git apply --whitespace=fix" didn't work well when an early patch in
  41.    a patch series adds trailing blank lines and a later one depended on
  42.    such a block of blank lines at the end.
  43.  
  44.  * "git fast-export" didn't check error status and stop when marks file
  45.    cannot be opened.
  46.  
  47.  * "git format-patch --ignore-if-in-upstream" gave unwarranted errors
  48.    when the range was empty, instead of silently finishing.
  49.  
  50.  * "git remote prune" did not detect remote tracking refs that became
  51.    dangling correctly.
  52.  
  53. And other minor fixes and documentation updates.
  54. Git v1.7.0.3 Release Notes
  55. ==========================
  56.  
  57. Fixes since v1.7.0.2
  58. --------------------
  59.  
  60.  * Object files are created in a more ACL friendly way in repositories
  61.    where group permission is ACL controlled.
  62.  
  63.  * "git add -i" didn't handle a deleted path very well.
  64.  
  65.  * "git blame" padded line numbers with one extra SP when the total number
  66.    of lines was one less than multiple of ten due to an off-by-one error.
  67.  
  68.  * "git fetch --all/--multi" used to discard information for remotes that
  69.    are fetched earlier.
  70.  
  71.  * "git log --author=me --grep=it" tried to find commits that have "it"
  72.    or are written by "me", instead of the ones that have "it" _and_ are
  73.    written by "me".
  74.  
  75.  * "git log -g branch" misbehaved when there was no entries in the reflog
  76.    for the named branch.
  77.  
  78.  * "git mailinfo" (hence "git am") incorrectly removed initial indent from
  79.    paragraphs.
  80.  
  81.  * "git prune" and "git reflog" (hence "git gc" as well) didn't honor
  82.    an instruction never to expire by setting gc.reflogexpire to never.
  83.  
  84.  * "git push" misbehaved when branch.<name>.merge was configured without
  85.    matching branch.<name>.remote.
  86.  
  87. And other minor fixes and documentation updates.
  88. Git v1.7.0.2 Release Notes
  89. ==========================
  90.  
  91. Fixes since v1.7.0.1
  92. --------------------
  93.  
  94.  * GIT_PAGER was not honored consistently by some scripted Porcelains, most
  95.    notably "git am".
  96.  
  97.  * updating working tree files after telling git to add them to the
  98.    index and while it is still working created garbage object files in
  99.    the repository without diagnosing it as an error.
  100.  
  101.  * "git bisect -- pathspec..." did not diagnose an error condition properly when
  102.    the simplification with given pathspec made the history empty.
  103.  
  104.  * "git rev-list --cherry-pick A...B" now has an obvious optimization when the
  105.    histories haven't diverged (i.e. when one end is an ancestor of the other).
  106.  
  107.  * "git diff --quiet -w" did not work as expected.
  108.  
  109.  * "git fast-import" didn't work with a large input, as it lacked support
  110.    for producing the pack index in v2 format.
  111.  
  112.  * "git imap-send" didn't use CRLF line endings over the imap protocol
  113.    when storing its payload to the draft box, violating RFC 3501.
  114.  
  115.  * "git log --format='%w(x,y,z)%b'" and friends that rewrap message
  116.    has been optimized for utf-8 payload.
  117.  
  118.  * Error messages generated on the receiving end did not come back to "git
  119.    push".
  120.  
  121.  * "git status" in 1.7.0 lacked the optimization we used to have in 1.6.X series
  122.    to speed up scanning of large working tree.
  123.  
  124.  * "gitweb" did not diagnose parsing errors properly while reading tis configuration
  125.    file.
  126.  
  127. And other minor fixes and documentation updates.
  128. Git v1.7.0.1 Release Notes
  129. ==========================
  130.  
  131. Fixes since v1.7.0
  132. ------------------
  133.  
  134.  * In a freshly created repository "rev-parse HEAD^0" complained that
  135.    it is dangling symref, even though "rev-parse HEAD" didn't.
  136.  
  137.  * "git show :no-such-name" tried to access the index without bounds
  138.    check, leading to a potential segfault.
  139.  
  140.  * Message from "git cherry-pick" was harder to read and use than necessary
  141.    when it stopped due to conflicting changes.
  142.  
  143.  * We referred to ".git/refs/" throughout the documentation when we
  144.    meant to talk about abstract notion of "ref namespace".  Because
  145.    people's repositories often have packed refs these days, this was
  146.    confusing.
  147.  
  148.  * "git diff --output=/path/that/cannot/be/written" did not correctly
  149.    error out.
  150.  
  151.  * "git grep -e -pattern-that-begin-with-dash paths..." could not be
  152.    spelled as "git grep -- -pattern-that-begin-with-dash paths..." which
  153.    would be a GNU way to use "--" as "end of options".
  154.  
  155.  * "git grep" compiled with threading support tried to access an
  156.    uninitialized mutex on boxes with a single CPU.
  157.  
  158.  * "git stash pop -q --index" failed because the unnecessary --index
  159.    option was propagated to "git stash drop" that is internally run at the
  160.    end.
  161.  
  162. And other minor fixes and documentation updates.
  163. Git v1.7.0 Release Notes
  164. ========================
  165.  
  166. Notes on behaviour change
  167. -------------------------
  168.  
  169.  * "git push" into a branch that is currently checked out (i.e. pointed at by
  170.    HEAD in a repository that is not bare) is refused by default.
  171.  
  172.    Similarly, "git push $there :$killed" to delete the branch $killed
  173.    in a remote repository $there, when $killed branch is the current
  174.    branch pointed at by its HEAD, will be refused by default.
  175.  
  176.    Setting the configuration variables receive.denyCurrentBranch and
  177.    receive.denyDeleteCurrent to 'ignore' in the receiving repository
  178.    can be used to override these safety features.
  179.  
  180.  * "git send-email" does not make deep threads by default when sending a
  181.    patch series with more than two messages.  All messages will be sent
  182.    as a reply to the first message, i.e. cover letter.
  183.  
  184.    It has been possible already to configure send-email to send "shallow thread"
  185.    by setting sendemail.chainreplyto configuration variable to false.  The
  186.    only thing this release does is to change the default when you haven't
  187.    configured that variable.
  188.  
  189.  * "git status" is not "git commit --dry-run" anymore.  This change does
  190.    not affect you if you run the command without argument.
  191.  
  192.  * "git diff" traditionally treated various "ignore whitespace" options
  193.    only as a way to filter the patch output.  "git diff --exit-code -b"
  194.    exited with non-zero status even if all changes were about changing the
  195.    amount of whitespace and nothing else;  and "git diff -b" showed the
  196.    "diff --git" header line for such a change without patch text.
  197.  
  198.    In this release, the "ignore whitespaces" options affect the semantics
  199.    of the diff operation.  A change that does not affect anything but
  200.    whitespaces is reported with zero exit status when run with
  201.    --exit-code, and there is no "diff --git" header for such a change.
  202.  
  203.  * External diff and textconv helpers are now executed using the shell.
  204.    This makes them consistent with other programs executed by git, and
  205.    allows you to pass command-line parameters to the helpers. Any helper
  206.    paths containing spaces or other metacharacters now need to be
  207.    shell-quoted.  The affected helpers are GIT_EXTERNAL_DIFF in the
  208.    environment, and diff.*.command and diff.*.textconv in the config
  209.    file.
  210.  
  211.  * The --max-pack-size argument to 'git repack', 'git pack-objects', and
  212.    'git fast-import' was assuming the provided size to be expressed in MiB,
  213.    unlike the corresponding config variable and other similar options accepting
  214.    a size value.  It is now expecting a size expressed in bytes, with a possible
  215.    unit suffix of 'k', 'm', or 'g'.
  216.  
  217. Updates since v1.6.6
  218. --------------------
  219.  
  220. (subsystems)
  221.  
  222.  * "git fast-import" updates; adds "option" and "feature" to detect the
  223.    mismatch between fast-import and the frontends that produce the input
  224.    stream.
  225.  
  226.  * "git svn" support of subversion "merge tickets" and miscellaneous fixes.
  227.  
  228.  * "gitk" and "git gui" translation updates.
  229.  
  230.  * "gitweb" updates (code clean-up, load checking etc.)
  231.  
  232. (portability)
  233.  
  234.  * Some more MSVC portability patches for msysgit port.
  235.  
  236.  * Minimum Pthreads emulation for msysgit port.
  237.  
  238. (performance)
  239.  
  240.  * More performance improvement patches for msysgit port.
  241.  
  242. (usability, bells and whistles)
  243.  
  244.  * More commands learned "--quiet" and "--[no-]progress" options.
  245.  
  246.  * Various commands given by the end user (e.g. diff.type.textconv,
  247.    and GIT_EDITOR) can be specified with command line arguments.  E.g. it
  248.    is now possible to say "[diff "utf8doc"] textconv = nkf -w".
  249.  
  250.  * "sparse checkout" feature allows only part of the work tree to be
  251.    checked out.
  252.  
  253.  * HTTP transfer can use authentication scheme other than basic
  254.    (i.e./e.g. digest).
  255.  
  256.  * Switching from a version of superproject that used to have a submodule
  257.    to another version of superproject that no longer has it did not remove
  258.    the submodule directory when it should (namely, when you are not
  259.    interested in the submodule at all and didn't clone/checkout).
  260.  
  261.  * A new attribute conflict-marker-size can be used to change the size of
  262.    the conflict markers from the default 7; this is useful when tracked
  263.    contents (e.g. git-merge documentation) have strings that resemble the
  264.    conflict markers.
  265.  
  266.  * A new syntax "<branch>@{upstream}" can be used on the command line to
  267.    substitute the name of the "upstream" of the branch.  Missing branch
  268.    defaults to the current branch, so "git fetch && git merge @{upstream}"
  269.    will be equivalent to "git pull".
  270.  
  271.  * "git am --resolved" has a synonym "git am --continue".
  272.  
  273.  * "git branch --set-upstream" can be used to update the (surprise!) upstream,
  274.    i.e. where the branch is supposed to pull and merge from (or rebase onto).
  275.  
  276.  * "git checkout A...B" is a way to detach HEAD at the merge base between
  277.    A and B.
  278.  
  279.  * "git checkout -m path" to reset the work tree file back into the
  280.    conflicted state works even when you already ran "git add path" and
  281.    resolved the conflicts.
  282.  
  283.  * "git commit --date='<date>'" can be used to override the author date
  284.    just like "git commit --author='<name> <email>'" can be used to
  285.    override the author identity.
  286.  
  287.  * "git commit --no-status" can be used to omit the listing of the index
  288.    and the work tree status in the editor used to prepare the log message.
  289.  
  290.  * "git commit" warns a bit more aggressively until you configure user.email,
  291.    whose default value almost always is not (and fundamentally cannot be)
  292.    what you want.
  293.  
  294.  * "git difftool" has been extended to make it easier to integrate it
  295.    with gitk.
  296.  
  297.  * "git fetch --all" can now be used in place of "git remote update".
  298.  
  299.  * "git grep" does not rely on external grep anymore.  It can use more than
  300.    one thread to accelerate the operation.
  301.  
  302.  * "git grep" learned "--quiet" option.
  303.  
  304.  * "git log" and friends learned "--glob=heads/*" syntax that is a more
  305.    flexible way to complement "--branches/--tags/--remotes".
  306.  
  307.  * "git merge" learned to pass options specific to strategy-backends.  E.g.
  308.  
  309.     - "git merge -Xsubtree=path/to/directory" can be used to tell the subtree
  310.       strategy how much to shift the trees explicitly.
  311.  
  312.     - "git merge -Xtheirs" can be used to auto-merge as much as possible,
  313.       while discarding your own changes and taking merged version in
  314.       conflicted regions.
  315.  
  316.  * "git push" learned "git push origin --delete branch", a syntactic sugar
  317.    for "git push origin :branch".
  318.  
  319.  * "git push" learned "git push --set-upstream origin forker:forkee" that
  320.    lets you configure your "forker" branch to later pull from "forkee"
  321.    branch at "origin".
  322.  
  323.  * "git rebase --onto A...B" means the history is replayed on top of the
  324.    merge base between A and B.
  325.  
  326.  * "git rebase -i" learned new action "fixup" that squashes the change
  327.    but does not affect existing log message.
  328.  
  329.  * "git rebase -i" also learned --autosquash option that is useful
  330.    together with the new "fixup" action.
  331.  
  332.  * "git remote" learned set-url subcommand that updates (surprise!) url
  333.    for an existing remote nickname.
  334.  
  335.  * "git rerere" learned "forget path" subcommand.  Together with "git
  336.    checkout -m path" it will be useful when you recorded a wrong
  337.    resolution.
  338.  
  339.  * Use of "git reset --merge" has become easier when resetting away a
  340.    conflicted mess left in the work tree.
  341.  
  342.  * "git rerere" had rerere.autoupdate configuration but there was no way
  343.    to countermand it from the command line; --no-rerere-autoupdate option
  344.    given to "merge", "revert", etc. fixes this.
  345.  
  346.  * "git status" learned "-s(hort)" output format.
  347.  
  348. (developers)
  349.  
  350.  * The infrastructure to build foreign SCM interface has been updated.
  351.  
  352.  * Many more commands are now built-in.
  353.  
  354.  * THREADED_DELTA_SEARCH is no more.  If you build with threads, delta
  355.    compression will always take advantage of it.
  356.  
  357. Fixes since v1.6.6
  358. ------------------
  359.  
  360. All of the fixes in v1.6.6.X maintenance series are included in this
  361. release, unless otherwise noted.
  362.  
  363.  * "git branch -d branch" used to refuse deleting the branch even when
  364.    the branch is fully merged to its upstream branch if it is not merged
  365.    to the current branch.  It now deletes it in such a case.
  366.  
  367.  * "fiter-branch" command incorrectly said --prune-empty and --filter-commit
  368.    were incompatible; the latter should be read as --commit-filter.
  369.  
  370.  * When using "git status" or asking "git diff" to compare the work tree
  371.    with something, they used to consider that a checked-out submodule with
  372.    uncommitted changes is not modified; this could cause people to forget
  373.    committing these changes in the submodule before committing in the
  374.    superproject. They now consider such a change as a modification and
  375.    "git diff" will append a "-dirty" to the work tree side when generating
  376.    patch output or when used with the --submodule option.
  377. Git v1.6.6.2 Release Notes
  378. ==========================
  379.  
  380. Fixes since v1.6.6.1
  381. --------------------
  382.  
  383.  * recursive merge didn't correctly diagnose its own programming errors,
  384.    and instead caused the caller to segfault.
  385.  
  386.  * The new "smart http" aware clients probed the web servers to see if
  387.    they support smart http, but did not fall back to dumb http transport
  388.    correctly with some servers.
  389.  
  390.  * Time based reflog syntax e.g. "@{yesterday}" didn't diagnose a misspelled
  391.    time specification and instead assumed "@{now}".
  392.  
  393.  * "git archive HEAD -- no-such-directory" produced an empty archive
  394.    without complaining.
  395.  
  396.  * "git blame -L start,end -- file" misbehaved when given a start that is
  397.    larger than the number of lines in the file.
  398.  
  399.  * "git checkout -m" didn't correctly call custom merge backend supplied
  400.    by the end user.
  401.  
  402.  * "git config -f <file>" misbehaved when run from a subdirectory.
  403.  
  404.  * "git cvsserver" didn't like having regex metacharacters (e.g. '+') in
  405.    CVSROOT environment.
  406.  
  407.  * "git fast-import" did not correctly handle large blobs that may
  408.    bust the pack size limit.
  409.  
  410.  * "git gui" is supposed to work even when launched from inside a .git
  411.    directory.
  412.  
  413.  * "git gui" misbehaved when applying a hunk that ends with deletion.
  414.  
  415.  * "git imap-send" did not honor imap.preformattedHTML as documented.
  416.  
  417.  * "git log" family incorrectly showed the commit notes unconditionally by
  418.    mistake, which was especially irritating when running "git log --oneline".
  419.  
  420.  * "git status" shouldn't require an write access to the repository.
  421.  
  422. Other minor documentation updates are included.
  423. Git v1.6.6.1 Release Notes
  424. ==========================
  425.  
  426. Fixes since v1.6.6
  427. ------------------
  428.  
  429.  * "git blame" did not work well when commit lacked the author name.
  430.  
  431.  * "git branch -a name" wasn't diagnosed as an error.
  432.  
  433.  * "git count-objects" did not handle packfiles that are bigger than 4G on
  434.    platforms with 32-bit off_t.
  435.  
  436.  * "git checkout -m other" while on a branch that does not have any commit
  437.    segfaulted, instead of failing.
  438.  
  439.  * "git fast-import" choked when fed a tag that do not point at a
  440.    commit.
  441.  
  442.  * "git grep" finding from work tree files could have fed garbage to
  443.    the underlying regexec(3).
  444.  
  445.  * "git grep -L" didn't show empty files (they should never match, and
  446.    they should always appear in -L output as unmatching).
  447.  
  448.  * "git rebase -i" did not abort cleanly if it failed to launch the editor.
  449.  
  450.  * "git reset --hard" did not work correctly when GIT_WORK_TREE environment
  451.    variable is used to point at the root of the true work tree.
  452.  
  453.  * http-backend was not listed in the command list in the documentation.
  454.  
  455.  * Building on FreeBSD (both 7 and 8) needs OLD_ICONV set in the Makefile
  456.  
  457.  * "git checkout -m some-branch" while on an unborn branch crashed.
  458.  
  459. Other minor documentation updates are included.
  460. Git v1.6.6 Release Notes
  461. ========================
  462.  
  463. Notes on behaviour change
  464. -------------------------
  465.  
  466.  * In this release, "git fsck" defaults to "git fsck --full" and
  467.    checks packfiles, and because of this it will take much longer to
  468.    complete than before.  If you prefer a quicker check only on loose
  469.    objects (the old default), you can say "git fsck --no-full".  This
  470.    has been supported by 1.5.4 and newer versions of git, so it is
  471.    safe to write it in your script even if you use slightly older git
  472.    on some of your machines.
  473.  
  474. Preparing yourselves for compatibility issues in 1.7.0
  475. ------------------------------------------------------
  476.  
  477. In git 1.7.0, which is planned to be the release after 1.6.6, there will
  478. be a handful of behaviour changes that will break backward compatibility.
  479.  
  480. These changes were discussed long time ago and existing behaviours have
  481. been identified as more problematic to the userbase than keeping them for
  482. the sake of backward compatibility.
  483.  
  484. When necessary, a transition strategy for existing users has been designed
  485. not to force them running around setting configuration variables and
  486. updating their scripts in order to either keep the traditional behaviour
  487. or adjust to the new behaviour, on the day their sysadmin decides to install
  488. the new version of git.  When we switched from "git-foo" to "git foo" in
  489. 1.6.0, even though the change had been advertised and the transition
  490. guide had been provided for a very long time, the users procrastinated
  491. during the entire transtion period, and ended up panicking on the day
  492. their sysadmins updated their git installation.  We are trying to avoid
  493. repeating that unpleasantness in the 1.7.0 release.
  494.  
  495. For changes decided to be in 1.7.0, commands that will be affected
  496. have been much louder to strongly discourage such procrastination, and
  497. they continue to be in this release.  If you have been using recent
  498. versions of git, you would have seen warnings issued when you used
  499. features whose behaviour will change, with a clear instruction on how
  500. to keep the existing behaviour if you want to.  You hopefully are
  501. already well prepared.
  502.  
  503. Of course, we have also been giving "this and that will change in
  504. 1.7.0; prepare yourselves" warnings in the release notes and
  505. announcement messages for the past few releases.  Let's see how well
  506. users will fare this time.
  507.  
  508.  * "git push" into a branch that is currently checked out (i.e. pointed by
  509.    HEAD in a repository that is not bare) will be refused by default.
  510.  
  511.    Similarly, "git push $there :$killed" to delete the branch $killed
  512.    in a remote repository $there, when $killed branch is the current
  513.    branch pointed at by its HEAD, will be refused by default.
  514.  
  515.    Setting the configuration variables receive.denyCurrentBranch and
  516.    receive.denyDeleteCurrent to 'ignore' in the receiving repository
  517.    can be used to override these safety features.  Versions of git
  518.    since 1.6.2 have issued a loud warning when you tried to do these
  519.    operations without setting the configuration, so repositories of
  520.    people who still need to be able to perform such a push should
  521.    already have been future proofed.
  522.  
  523.    Please refer to:
  524.  
  525.    http://git.or.cz/gitwiki/GitFaq#non-bare
  526.    http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
  527.  
  528.    for more details on the reason why this change is needed and the
  529.    transition process that already took place so far.
  530.  
  531.  * "git send-email" will not make deep threads by default when sending a
  532.    patch series with more than two messages.  All messages will be sent
  533.    as a reply to the first message, i.e. cover letter.  Git 1.6.6 (this
  534.    release) will issue a warning about the upcoming default change, when
  535.    it uses the traditional "deep threading" behaviour as the built-in
  536.    default.  To squelch the warning but still use the "deep threading"
  537.    behaviour, give --chain-reply-to option or set sendemail.chainreplyto
  538.    to true.
  539.  
  540.    It has been possible to configure send-email to send "shallow thread"
  541.    by setting sendemail.chainreplyto configuration variable to false.
  542.    The only thing 1.7.0 release will do is to change the default when
  543.    you haven't configured that variable.
  544.  
  545.  * "git status" will not be "git commit --dry-run".  This change does not
  546.    affect you if you run the command without pathspec.
  547.  
  548.    Nobody sane found the current behaviour of "git status Makefile" useful
  549.    nor meaningful, and it confused users.  "git commit --dry-run" has been
  550.    provided as a way to get the current behaviour of this command since
  551.    1.6.5.
  552.  
  553.  * "git diff" traditionally treated various "ignore whitespace" options
  554.    only as a way to filter the patch output.  "git diff --exit-code -b"
  555.    exited with non-zero status even if all changes were about changing the
  556.    ammount of whitespace and nothing else.  and "git diff -b" showed the
  557.    "diff --git" header line for such a change without patch text.
  558.  
  559.    In 1.7.0, the "ignore whitespaces" will affect the semantics of the
  560.    diff operation itself.  A change that does not affect anything but
  561.    whitespaces will be reported with zero exit status when run with
  562.    --exit-code, and there will not be "diff --git" header for such a
  563.    change.
  564.  
  565.  
  566. Updates since v1.6.5
  567. --------------------
  568.  
  569. (subsystems)
  570.  
  571.  * various gitk updates including use of themed widgets under Tk 8.5,
  572.    Japanese translation, a fix to a bug when running "gui blame" from
  573.    a subdirectory, etc.
  574.  
  575.  * various git-gui updates including new translations, wm states fixes,
  576.    Tk bug workaround after quitting, improved heuristics to trigger gc,
  577.    etc.
  578.  
  579.  * various git-svn updates.
  580.  
  581.  * "git fetch" over http learned a new mode that is different from the
  582.    traditional "dumb commit walker".
  583.  
  584. (portability)
  585.  
  586.  * imap-send can be built on mingw port.
  587.  
  588. (performance)
  589.  
  590.  * "git diff -B" has smaller memory footprint.
  591.  
  592. (usability, bells and whistles)
  593.  
  594.  * The object replace mechanism can be bypassed with --no-replace-objects
  595.    global option given to the "git" program.
  596.  
  597.  * In configuration files, a few variables that name paths can begin with ~/
  598.    and ~username/ and they are expanded as expected.
  599.  
  600.  * "git subcmd -h" now shows short usage help for many more subcommands.
  601.  
  602.  * "git bisect reset" can reset to an arbitrary commit.
  603.  
  604.  * "git checkout frotz" when there is no local branch "frotz" but there
  605.    is only one remote tracking branch "frotz" is taken as a request to
  606.    start the named branch at the corresponding remote tracking branch.
  607.  
  608.  * "git commit -c/-C/--amend" can be told with a new "--reset-author" option
  609.    to ignore authorship information in the commit it is taking the message
  610.    from.
  611.  
  612.  * "git describe" can be told to add "-dirty" suffix with "--dirty" option.
  613.  
  614.  * "git diff" learned --submodule option to show a list of one-line logs
  615.    instead of differences between the commit object names.
  616.  
  617.  * "git diff" learned to honor diff.color.func configuration to paint
  618.    function name hint printed on the hunk header "@@ -j,k +l,m @@" line
  619.    in the specified color.
  620.  
  621.  * "git fetch" learned --all and --multiple options, to run fetch from
  622.    many repositories, and --prune option to remove remote tracking
  623.    branches that went stale.  These make "git remote update" and "git
  624.    remote prune" less necessary (there is no plan to remove "remote
  625.    update" nor "remote prune", though).
  626.  
  627.  * "git fsck" by default checks the packfiles (i.e. "--full" is the
  628.    default); you can turn it off with "git fsck --no-full".
  629.  
  630.  * "git grep" can use -F (fixed strings) and -i (ignore case) together.
  631.  
  632.  * import-tars contributed fast-import frontend learned more types of
  633.    compressed tarballs.
  634.  
  635.  * "git instaweb" knows how to talk with mod_cgid to apache2.
  636.  
  637.  * "git log --decorate" shows the location of HEAD as well.
  638.  
  639.  * "git log" and "git rev-list" learned to take revs and pathspecs from
  640.    the standard input with the new "--stdin" option.
  641.  
  642.  * "--pretty=format" option to "log" family of commands learned:
  643.  
  644.    . to wrap text with the "%w()" specifier.
  645.    . to show reflog information with "%g[sdD]" specifier.
  646.  
  647.  * "git notes" command to annotate existing commits.
  648.  
  649.  * "git merge" (and "git pull") learned --ff-only option to make it fail
  650.    if the merge does not result in a fast-forward.
  651.  
  652.  * "git mergetool" learned to use p4merge.
  653.  
  654.  * "git rebase -i" learned "reword" that acts like "edit" but immediately
  655.    starts an editor to tweak the log message without returning control to
  656.    the shell, which is done by "edit" to give an opportunity to tweak the
  657.    contents.
  658.  
  659.  * "git send-email" can be told with "--envelope-sender=auto" to use the
  660.    same address as "From:" address as the envelope sender address.
  661.  
  662.  * "git send-email" will issue a warning when it defaults to the
  663.    --chain-reply-to behaviour without being told by the user and
  664.    instructs to prepare for the change of the default in 1.7.0 release.
  665.  
  666.  * In "git submodule add <repository> <path>", <path> is now optional and
  667.    inferred from <repository> the same way "git clone <repository>" does.
  668.  
  669.  * "git svn" learned to read SVN 1.5+ and SVK merge tickets.
  670.  
  671.  * "git svn" learned to recreate empty directories tracked only by SVN.
  672.  
  673.  * "gitweb" can optionally render its "blame" output incrementally (this
  674.    requires JavaScript on the client side).
  675.  
  676.  * Author names shown in gitweb output are links to search commits by the
  677.    author.
  678.  
  679. Fixes since v1.6.5
  680. ------------------
  681.  
  682. All of the fixes in v1.6.5.X maintenance series are included in this
  683. release, unless otherwise noted.
  684. Git v1.6.5.8 Release Notes
  685. ==========================
  686.  
  687. Fixes since v1.6.5.7
  688. --------------------
  689.  
  690. * "git count-objects" did not handle packfiles that are bigger than 4G on
  691.   platforms with 32-bit off_t.
  692.  
  693. * "git rebase -i" did not abort cleanly if it failed to launch the editor.
  694.  
  695. * "git blame" did not work well when commit lacked the author name.
  696.  
  697. * "git fast-import" choked when handling a tag that points at an object
  698.   that is not a commit.
  699.  
  700. * "git reset --hard" did not work correctly when GIT_WORK_TREE environment
  701.   variable is used to point at the root of the true work tree.
  702.  
  703. * "git grep" fed a buffer that is not NUL-terminated to underlying
  704.   regexec().
  705.  
  706. * "git checkout -m other" while on a branch that does not have any commit
  707.   segfaulted, instead of failing.
  708.  
  709. * "git branch -a other" should have diagnosed the command as an error.
  710.  
  711. Other minor documentation updates are also included.
  712. Git v1.6.5.7 Release Notes
  713. ==========================
  714.  
  715. Fixes since v1.6.5.6
  716. --------------------
  717.  
  718. * If a user specifies a color for a <slot> (i.e. a class of things to show
  719.   in a particular color) that is known only by newer versions of git
  720.   (e.g. "color.diff.func" was recently added for upcoming 1.6.6 release),
  721.   an older version of git should just ignore them.  Instead we diagnosed
  722.   it as an error.
  723.  
  724. * With help.autocorrect set to non-zero value, the logic to guess typoes
  725.   in the subcommand name misfired and ran a random nonsense command.
  726.  
  727. * If a command is run with an absolute path as a pathspec inside a bare
  728.   repository, e.g. "rev-list HEAD -- /home", the code tried to run
  729.   strlen() on NULL, which is the result of get_git_work_tree(), and
  730.   segfaulted.
  731. Git v1.6.5.6 Release Notes
  732. ==========================
  733.  
  734. Fixes since v1.6.5.5
  735. --------------------
  736.  
  737.  * "git add -p" had a regression since v1.6.5.3 that broke deletion of
  738.    non-empty files.
  739.  
  740.  * "git archive -o o.zip -- Makefile" produced an archive in o.zip
  741.    but in POSIX tar format.
  742.  
  743.  * Error message given to "git pull --rebase" when the user didn't give
  744.    enough clue as to what branch to integrate with still talked about
  745.    "merging with" the branch.
  746.  
  747.  * Error messages given by "git merge" when the merge resulted in a
  748.    fast-forward still were in plumbing lingo, even though in v1.6.5
  749.    we reworded messages in other cases.
  750.  
  751.  * The post-upload-hook run by upload-pack in response to "git fetch" has
  752.    been removed, due to security concerns (the hook first appeared in
  753.    1.6.5).
  754. Git v1.6.5.5 Release Notes
  755. ==========================
  756.  
  757. Fixes since v1.6.5.4
  758. --------------------
  759.  
  760.  * Manual pages can be formatted with older xmlto again.
  761.  
  762.  * GREP_OPTIONS exported from user's environment could have broken
  763.    our scripted commands.
  764.  
  765.  * In configuration files, a few variables that name paths can begin with
  766.    ~/ and ~username/ and they are expanded as expected.  This is not a
  767.    bugfix but 1.6.6 will have this and without backporting users cannot
  768.    easily use the same ~/.gitconfig across versions.
  769.  
  770.  * "git diff -B -M" did the same computation to hash lines of contents
  771.    twice, and held onto memory after it has used the data in it
  772.    unnecessarily before it freed.
  773.  
  774.  * "git diff -B" and "git diff --dirstat" was not counting newly added
  775.    contents correctly.
  776.  
  777.  * "git format-patch revisions... -- path" issued an incorrect error
  778.    message that suggested to use "--" on the command line when path
  779.    does not exist in the current work tree (it is a separate matter if
  780.    it makes sense to limit format-patch with pathspecs like that
  781.    without using the --full-diff option).
  782.  
  783.  * "git grep -F -i StRiNg" did not work as expected.
  784.  
  785.  * Enumeration of available merge strategies iterated over the list of
  786.    commands in a wrong way, sometimes producing an incorrect result.
  787.  
  788.  * "git shortlog" did not honor the "encoding" header embedded in the
  789.    commit object like "git log" did.
  790.  
  791.  * Reading progress messages that come from the remote side while running
  792.    "git pull" is given precedence over reading the actual pack data to
  793.    prevent garbled progress message on the user's terminal.
  794.  
  795.  * "git rebase" got confused when the log message began with certain
  796.    strings that looked like Subject:, Date: or From: header.
  797.  
  798.  * "git reset" accidentally run in .git/ directory checked out the
  799.    work tree contents in there.
  800.  
  801.  
  802. Other minor documentation updates are included.
  803. Git v1.6.5.4 Release Notes
  804. ==========================
  805.  
  806. Fixes since v1.6.5.3
  807. --------------------
  808.  
  809.  * "git help" (without argument) used to check if you are in a directory
  810.    under git control. There was no breakage in behaviour per-se, but this
  811.    was unnecessary.
  812.  
  813.  * "git prune-packed" gave progress output even when its standard error is
  814.    not connected to a terminal; this caused cron jobs that run it to
  815.    produce crufts.
  816.  
  817.  * "git pack-objects --all-progress" is an option to ask progress output
  818.    from write-object phase _if_ progress output were to be produced, and
  819.    shouldn't have forced the progress output.
  820.  
  821.  * "git apply -p<n> --directory=<elsewhere>" did not work well for a
  822.    non-default value of n.
  823.  
  824.  * "git merge foo HEAD" was misparsed as an old-style invocation of the
  825.    command and produced a confusing error message.  As it does not specify
  826.    any other branch to merge, it shouldn't be mistaken as such.  We will
  827.    remove the old style "git merge <message> HEAD <commit>..."  syntax in
  828.    future versions, but not in this release,
  829.  
  830.  * "git merge -m <message> <branch>..." added the standard merge message
  831.    on its own after user-supplied message, which should have overrided the
  832.    standard one.
  833.  
  834. Other minor documentation updates are included.
  835. Git v1.6.5.3 Release Notes
  836. ==========================
  837.  
  838. Fixes since v1.6.5.2
  839. --------------------
  840.  
  841.  * info/grafts file didn't ignore trailing CR at the end of lines.
  842.  
  843.  * Packages generated on newer FC were unreadable by older versions of
  844.    RPM as the new default is to use stronger hash.
  845.  
  846.  * output from "git blame" was unreadable when the file ended in an
  847.    incomplete line.
  848.  
  849.  * "git add -i/-p" didn't handle deletion of empty files correctly.
  850.  
  851.  * "git clone" takes up to two parameters, but did not complain when
  852.    given more arguments than necessary and silently ignored them.
  853.  
  854.  * "git cvsimport" did not read files given as command line arguments
  855.    correctly when it is run from a subdirectory.
  856.  
  857.  * "git diff --color-words -U0" didn't work correctly.
  858.  
  859.  * The handling of blank lines at the end of file by "git diff/apply
  860.    --whitespace" was inconsistent with the other kinds of errors.
  861.    They are now colored, warned against, and fixed the same way as others.
  862.  
  863.  * There was no way to allow blank lines at the end of file without
  864.    allowing extra blanks at the end of lines.  You can use blank-at-eof
  865.    and blank-at-eol whitespace error class to specify them separately.
  866.    The old trailing-space error class is now a short-hand to set both.
  867.  
  868.  * "-p" option to "git format-patch" was supposed to suppress diffstat
  869.    generation, but it was broken since 1.6.1.
  870.  
  871.  * "git imap-send" did not compile cleanly with newer OpenSSL.
  872.  
  873.  * "git help -a" outside of a git repository was broken.
  874.  
  875.  * "git ls-files -i" was supposed to be inverse of "git ls-files" without -i
  876.    with respect to exclude patterns, but it was broken since 1.6.5.2.
  877.  
  878.  * "git ls-remote" outside of a git repository over http was broken.
  879.  
  880.  * "git rebase -i" gave bogus error message when the command word was
  881.    misspelled.
  882.  
  883.  * "git receive-pack" that is run in response to "git push" did not run
  884.    garbage collection nor update-server-info, but in larger hosting sites,
  885.    these almost always need to be run.  To help site administrators, the
  886.    command now runs "gc --auto" and "u-s-i" by setting receive.autogc
  887.    and receive.updateserverinfo configuration variables, respectively.
  888.  
  889.  * Release notes spelled the package name with incorrect capitalization.
  890.  
  891.  * "gitweb" did not escape non-ascii characters correctly in the URL.
  892.  
  893.  * "gitweb" showed "patch" link even for merge commits.
  894.  
  895.  * "gitweb" showed incorrect links for blob line numbers in pathinfo mode.
  896.  
  897. Other minor documentation updates are included.
  898. GIT v1.6.5.2 Release Notes
  899. ==========================
  900.  
  901. Fixes since v1.6.5.1
  902. --------------------
  903.  
  904.  * Installation of templates triggered a bug in busybox when using tar
  905.    implementation from it.
  906.  
  907.  * "git add -i" incorrectly ignored paths that are already in the index
  908.    if they matched .gitignore patterns.
  909.  
  910.  * "git describe --always" should have produced some output even there
  911.    were no tags in the repository, but it didn't.
  912.  
  913.  * "git ls-files" when showing tracked files incorrectly paid attention
  914.    to the exclude patterns.
  915.  
  916. Other minor documentation updates are included.
  917. GIT v1.6.5.1 Release Notes
  918. ==========================
  919.  
  920. Fixes since v1.6.5
  921. ------------------
  922.  
  923.  * An corrupt pack could make codepath to read objects into an
  924.    infinite loop.
  925.  
  926.  * Download throughput display was always shown in KiB/s but on fast links
  927.    it is more appropriate to show it in MiB/s.
  928.  
  929.  * "git grep -f filename" used uninitialized variable and segfaulted.
  930.  
  931.  * "git clone -b branch" gave a wrong commit object name to post-checkout
  932.    hook.
  933.  
  934.  * "git pull" over http did not work on msys.
  935.  
  936. Other minor documentation updates are included.
  937. GIT v1.6.5 Release Notes
  938. ========================
  939.  
  940. In git 1.7.0, which was planned to be the release after 1.6.5, "git
  941. push" into a branch that is currently checked out will be refused by
  942. default.
  943.  
  944. You can choose what should happen upon such a push by setting the
  945. configuration variable receive.denyCurrentBranch in the receiving
  946. repository.
  947.  
  948. Also, "git push $there :$killed" to delete the branch $killed in a remote
  949. repository $there, when $killed branch is the current branch pointed at by
  950. its HEAD, will be refused by default.
  951.  
  952. You can choose what should happen upon such a push by setting the
  953. configuration variable receive.denyDeleteCurrent in the receiving
  954. repository.
  955.  
  956. To ease the transition plan, the receiving repository of such a
  957. push running this release will issue a big warning when the
  958. configuration variable is missing.  Please refer to:
  959.  
  960.   http://git.or.cz/gitwiki/GitFaq#non-bare
  961.   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
  962.  
  963. for more details on the reason why this change is needed and the
  964. transition plan.
  965.  
  966. Updates since v1.6.4
  967. --------------------
  968.  
  969. (subsystems)
  970.  
  971.  * various updates to gitk, git-svn and gitweb.
  972.  
  973. (portability)
  974.  
  975.  * more improvements on mingw port.
  976.  
  977.  * mingw will also give FRSX as the default value for the LESS
  978.    environment variable when the user does not have one.
  979.  
  980.  * initial support to compile git on Windows with MSVC.
  981.  
  982. (performance)
  983.  
  984.  * On major platforms, the system can be compiled to use with Linus's
  985.    block-sha1 implementation of the SHA-1 hash algorithm, which
  986.    outperforms the default fallback implementation we borrowed from
  987.    Mozilla.
  988.  
  989.  * Unnecessary inefficiency in deepening of a shallow repository has
  990.    been removed.
  991.  
  992.  * "git clone" does not grab objects that it does not need (i.e.
  993.    referenced only from refs outside refs/heads and refs/tags
  994.    hierarchy) anymore.
  995.  
  996.  * The "git" main binary used to link with libcurl, which then dragged
  997.    in a large number of external libraries.  When using basic plumbing
  998.    commands in scripts, this unnecessarily slowed things down.  We now
  999.    implement http/https/ftp transfer as a separate executable as we
  1000.    used to.
  1001.  
  1002.  * "git clone" run locally hardlinks or copies the files in .git/ to
  1003.    newly created repository.  It used to give new mtime to copied files,
  1004.    but this delayed garbage collection to trigger unnecessarily in the
  1005.    cloned repository.  We now preserve mtime for these files to avoid
  1006.    this issue.
  1007.  
  1008. (usability, bells and whistles)
  1009.  
  1010.  * Human writable date format to various options, e.g. --since=yesterday,
  1011.    master@{2000.09.17}, are taught to infer some omitted input properly.
  1012.  
  1013.  * A few programs gave verbose "advice" messages to help uninitiated
  1014.    people when issuing error messages.  An infrastructure to allow
  1015.    users to squelch them has been introduced, and a few such messages
  1016.    can be silenced now.
  1017.  
  1018.  * refs/replace/ hierarchy is designed to be usable as a replacement
  1019.    of the "grafts" mechanism, with the added advantage that it can be
  1020.    transferred across repositories.
  1021.  
  1022.  * "git am" learned to optionally ignore whitespace differences.
  1023.  
  1024.  * "git am" handles input e-mail files that has CRLF line endings sensibly.
  1025.  
  1026.  * "git am" learned "--scissors" option to allow you to discard early part
  1027.    of an incoming e-mail.
  1028.  
  1029.  * "git archive -o output.zip" works without being told what format to
  1030.    use with an explicit "--format=zip".option.
  1031.  
  1032.  * "git checkout", "git reset" and "git stash" learned to pick and
  1033.    choose to use selected changes you made, similar to "git add -p".
  1034.  
  1035.  * "git clone" learned a "-b" option to pick a HEAD to check out
  1036.    different from the remote's default branch.
  1037.  
  1038.  * "git clone" learned --recursive option.
  1039.  
  1040.  * "git clone" from a local repository on a different filesystem used to
  1041.    copy individual object files without preserving the old timestamp, giving
  1042.    them extra lifetime in the new repository until they gc'ed.
  1043.  
  1044.  * "git commit --dry-run $args" is a new recommended way to ask "what would
  1045.    happen if I try to commit with these arguments."
  1046.  
  1047.  * "git commit --dry-run" and "git status" shows conflicted paths in a
  1048.    separate section to make them easier to spot during a merge.
  1049.  
  1050.  * "git cvsimport" now supports password-protected pserver access even
  1051.    when the password is not taken from ~/.cvspass file.
  1052.  
  1053.  * "git fast-export" learned --no-data option that can be useful when
  1054.    reordering commits and trees without touching the contents of
  1055.    blobs.
  1056.  
  1057.  * "git fast-import" has a pair of new front-end in contrib/ area.
  1058.  
  1059.  * "git init" learned to mkdir/chdir into a directory when given an
  1060.    extra argument (i.e. "git init this").
  1061.  
  1062.  * "git instaweb" optionally can use mongoose as the web server.
  1063.  
  1064.  * "git log --decorate" can optionally be told with --decorate=full to
  1065.    give the reference name in full.
  1066.  
  1067.  * "git merge" issued an unnecessarily scary message when it detected
  1068.    that the merge may have to touch the path that the user has local
  1069.    uncommitted changes to. The message has been reworded to make it
  1070.    clear that the command aborted, without doing any harm.
  1071.  
  1072.  * "git push" can be told to be --quiet.
  1073.  
  1074.  * "git push" pays attention to url.$base.pushInsteadOf and uses a URL
  1075.    that is derived from the URL used for fetching.
  1076.  
  1077.  * informational output from "git reset" that lists the locally modified
  1078.    paths is made consistent with that of "git checkout $another_branch".
  1079.  
  1080.  * "git submodule" learned to give submodule name to scripts run with
  1081.    "foreach" subcommand.
  1082.  
  1083.  * various subcommands to "git submodule" learned --recursive option.
  1084.  
  1085.  * "git submodule summary" learned --files option to compare the work
  1086.    tree vs the commit bound at submodule path, instead of comparing
  1087.    the index.
  1088.  
  1089.  * "git upload-pack", which is the server side support for "git clone" and
  1090.    "git fetch", can call a new post-upload-pack hook for statistics purposes.
  1091.  
  1092. (developers)
  1093.  
  1094.  * With GIT_TEST_OPTS="--root=/p/a/t/h", tests can be run outside the
  1095.    source directory; using tmpfs may give faster turnaround.
  1096.  
  1097.  * With NO_PERL_MAKEMAKER set, DESTDIR= is now honoured, so you can
  1098.    build for one location, and install into another location to tar it
  1099.    up.
  1100.  
  1101. Fixes since v1.6.4
  1102. ------------------
  1103.  
  1104. All of the fixes in v1.6.4.X maintenance series are included in this
  1105. release, unless otherwise noted.
  1106. GIT v1.6.4.4 Release Notes
  1107. ==========================
  1108.  
  1109. Fixes since v1.6.4.4
  1110. --------------------
  1111.  
  1112. * The workaround for Github server that sometimes gave 500 (Internal server
  1113.   error) response to HEAD requests in 1.6.4.3 introduced a regression that
  1114.   caused re-fetching projects over http to segfault in certain cases due
  1115.   to uninitialized pointer being freed.
  1116.  
  1117. * "git pull" on an unborn branch used to consider anything in the work
  1118.   tree and the index discardable.
  1119.  
  1120. * "git diff -b/w" did not work well on the incomplete line at the end of
  1121.   the file, due to an incorrect hashing of lines in the low-level xdiff
  1122.   routines.
  1123.  
  1124. * "git checkout-index --prefix=$somewhere" used to work when $somewhere is
  1125.   a symbolic link to a directory elsewhere, but v1.6.4.2 broke it.
  1126.  
  1127. * "git unpack-objects --strict", invoked when receive.fsckobjects
  1128.   configuration is set in the receiving repository of "git push", did not
  1129.   properly check the objects, especially the submodule links, it received.
  1130.  
  1131. Other minor documentation updates are included.
  1132. GIT v1.6.4.3 Release Notes
  1133. ==========================
  1134.  
  1135. Fixes since v1.6.4.2
  1136. --------------------
  1137.  
  1138. * "git clone" from an empty repository gave unnecessary error message,
  1139.   even though it did everything else correctly.
  1140.  
  1141. * "git cvsserver" invoked git commands via "git-foo" style, which has long
  1142.   been deprecated.
  1143.  
  1144. * "git fetch" and "git clone" had an extra sanity check to verify the
  1145.   presense of the corresponding *.pack file before downloading *.idx
  1146.   file by issuing a HEAD request.  Github server however sometimes
  1147.   gave 500 (Internal server error) response to HEAD even if a GET
  1148.   request for *.pack file to the same URL would have succeeded, and broke
  1149.   clone over HTTP from some of their repositories.  As a workaround, this
  1150.   verification has been removed (as it is not absolutely necessary).
  1151.  
  1152. * "git grep" did not like relative pathname to refer outside the current
  1153.   directory when run from a subdirectory.
  1154.  
  1155. * an error message from "git push" was formatted in a very ugly way.
  1156.  
  1157. * "git svn" did not quote the subversion user name correctly when
  1158.   running its author-prog helper program.
  1159.  
  1160. Other minor documentation updates are included.
  1161. GIT v1.6.4.2 Release Notes
  1162. ==========================
  1163.  
  1164. Fixes since v1.6.4.1
  1165. --------------------
  1166.  
  1167. * --date=relative output between 1 and 5 years ago rounded the number of
  1168.     years when saying X years Y months ago, instead of rounding it down.
  1169.  
  1170. * "git add -p" did not handle changes in executable bits correctly
  1171.   (a regression around 1.6.3).
  1172.  
  1173. * "git apply" did not honor GNU diff's convention to mark the creation/deletion
  1174.   event with UNIX epoch timestamp on missing side.
  1175.  
  1176. * "git checkout" incorrectly removed files in a directory pointed by a
  1177.   symbolic link during a branch switch that replaces a directory with
  1178.   a symbolic link.
  1179.  
  1180. * "git clean -d -f" happily descended into a subdirectory that is managed by a
  1181.   separate git repository.  It now requires two -f options for safety.
  1182.  
  1183. * "git fetch/push" over http transports had two rather grave bugs.
  1184.  
  1185. * "git format-patch --cover-letter" did not prepare the cover letter file
  1186.   for use with non-ASCII strings when there are the series contributors with
  1187.   non-ASCII names.
  1188.  
  1189. * "git pull origin branch" and "git fetch origin && git merge origin/branch"
  1190.   left different merge messages in the resulting commit.
  1191.  
  1192. Other minor documentation updates are included.
  1193. GIT v1.6.4.1 Release Notes
  1194. ==========================
  1195.  
  1196. Fixes since v1.6.4
  1197. ------------------
  1198.  
  1199.  * An unquoted value in the configuration file, when it contains more than
  1200.    one whitespaces in a row, got them replaced with a single space.
  1201.  
  1202.  * "git am" used to accept a single piece of e-mail per file (not a mbox)
  1203.    as its input, but multiple input format support in v1.6.4 broke it.
  1204.    Apparently many people have been depending on this feature.
  1205.  
  1206.  * The short help text for "git filter-branch" command was a single long
  1207.    line, wrapped by terminals, and was hard to read.
  1208.  
  1209.  * The "recursive" strategy of "git merge" segfaulted when a merge has
  1210.    more than one merge-bases, and merging of these merge-bases involves
  1211.    a rename/rename or a rename/add conflict.
  1212.  
  1213.  * "git pull --rebase" did not use the right fork point when the
  1214.    repository has already fetched from the upstream that rewinds the
  1215.    branch it is based on in an earlier fetch.
  1216.  
  1217.  * Explain the concept of fast-forward more fully in "git push"
  1218.    documentation, and hint to refer to it from an error message when the
  1219.    command refuses an update to protect the user.
  1220.  
  1221.  * The default value for pack.deltacachesize, used by "git repack", is now
  1222.    256M, instead of unbounded.  Otherwise a repack of a moderately sized
  1223.    repository would needlessly eat into swap.
  1224.  
  1225.  * Document how "git repack" (hence "git gc") interacts with a repository
  1226.    that borrows its objects from other repositories (e.g. ones created by
  1227.    "git clone -s").
  1228.  
  1229.  * "git show" on an annotated tag lacked a delimiting blank line between
  1230.    the tag itself and the contents of the object it tags.
  1231.  
  1232.  * "git verify-pack -v" erroneously reported number of objects with too
  1233.    deep delta depths as "chain length 0" objects.
  1234.  
  1235.  * Long names of authors and committers outside US-ASCII were sometimes
  1236.    incorrectly shown in "gitweb".
  1237.  
  1238. Other minor documentation updates are included.
  1239. GIT v1.6.4 Release Notes
  1240. ========================
  1241.  
  1242. With the next major release, "git push" into a branch that is
  1243. currently checked out will be refused by default.  You can choose
  1244. what should happen upon such a push by setting the configuration
  1245. variable receive.denyCurrentBranch in the receiving repository.
  1246.  
  1247. To ease the transition plan, the receiving repository of such a
  1248. push running this release will issue a big warning when the
  1249. configuration variable is missing.  Please refer to:
  1250.  
  1251.   http://git.or.cz/gitwiki/GitFaq#non-bare
  1252.   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
  1253.  
  1254. for more details on the reason why this change is needed and the
  1255. transition plan.
  1256.  
  1257. For a similar reason, "git push $there :$killed" to delete the branch
  1258. $killed in a remote repository $there, if $killed branch is the current
  1259. branch pointed at by its HEAD, gets a large warning.  You can choose what
  1260. should happen upon such a push by setting the configuration variable
  1261. receive.denyDeleteCurrent in the receiving repository.
  1262.  
  1263.  
  1264. Updates since v1.6.3
  1265. --------------------
  1266.  
  1267. (subsystems)
  1268.  
  1269.  * gitweb Perl style clean-up.
  1270.  
  1271.  * git-svn updates, including a new --authors-prog option to map author
  1272.    names by invoking an external program, 'git svn reset' to unwind
  1273.    'git svn fetch', support for more than one branches, documenting
  1274.    of the useful --minimize-url feature, new "git svn gc" command, etc.
  1275.  
  1276. (portability)
  1277.  
  1278.  * We feed iconv with "UTF-8" instead of "utf8"; the former is
  1279.    understood more widely.  Similarly updated test scripts to use
  1280.    encoding names more widely understood (e.g. use "ISO8859-1" instead
  1281.    of "ISO-8859-1").
  1282.  
  1283.  * Various portability fixes/workarounds for different vintages of
  1284.    SunOS, IRIX, and Windows.
  1285.  
  1286.  * Git-over-ssh transport on Windows supports PuTTY plink and TortoisePlink.
  1287.  
  1288. (performance)
  1289.  
  1290.  * Many repeated use of lstat() are optimized out in "checkout" codepath.
  1291.  
  1292.  * git-status (and underlying git-diff-index --cached) are optimized
  1293.    to take advantage of cache-tree information in the index.
  1294.  
  1295. (usability, bells and whistles)
  1296.  
  1297.  * "git add --edit" lets users edit the whole patch text to fine-tune what
  1298.    is added to the index.
  1299.  
  1300.  * "git am" accepts StGIT series file as its input.
  1301.  
  1302.  * "git bisect skip" skips to a more randomly chosen place in the hope
  1303.    to avoid testing a commit that is too close to a commit that is
  1304.    already known to be untestable.
  1305.  
  1306.  * "git cvsexportcommit" learned -k option to stop CVS keywords expansion
  1307.  
  1308.  * "git fast-export" learned to handle history simplification more
  1309.    gracefully.
  1310.  
  1311.  * "git fast-export" learned an option --tag-of-filtered-object to handle
  1312.    dangling tags resulting from history simplification more usefully.
  1313.  
  1314.  * "git grep" learned -p option to show the location of the match using the
  1315.    same context hunk marker "git diff" uses.
  1316.  
  1317.  * https transport can optionally be told that the used client
  1318.    certificate is password protected, in which case it asks the
  1319.    password only once.
  1320.  
  1321.  * "git imap-send" is IPv6 aware.
  1322.  
  1323.  * "git log --graph" draws graphs more compactly by using horizontal lines
  1324.    when able.
  1325.  
  1326.  * "git log --decorate" shows shorter refnames by stripping well-known
  1327.    refs/* prefix.
  1328.  
  1329.  * "git push $name" honors remote.$name.pushurl if present before
  1330.    using remote.$name.url.  In other words, the URL used for fetching
  1331.    and pushing can be different.
  1332.  
  1333.  * "git send-email" understands quoted aliases in .mailrc files (might
  1334.    have to be backported to 1.6.3.X).
  1335.  
  1336.  * "git send-email" can fetch the sender address from the configuration
  1337.    variable "sendmail.from" (and "sendmail.<identity>.from").
  1338.  
  1339.  * "git show-branch" can color its output.
  1340.  
  1341.  * "add" and "update" subcommands to "git submodule" learned --reference
  1342.    option to use local clone with references.
  1343.  
  1344.  * "git submodule update" learned --rebase option to update checked
  1345.    out submodules by rebasing the local changes.
  1346.  
  1347.  * "gitweb" can optionally use gravatar to adorn author/committer names.
  1348.  
  1349. (developers)
  1350.  
  1351.  * A major part of the "git bisect" wrapper has moved to C.
  1352.  
  1353.  * Formatting with the new version of AsciiDoc 8.4.1 is now supported.
  1354.  
  1355. Fixes since v1.6.3
  1356. ------------------
  1357.  
  1358. All of the fixes in v1.6.3.X maintenance series are included in this
  1359. release, unless otherwise noted.
  1360.  
  1361. Here are fixes that this release has, but have not been backported to
  1362. v1.6.3.X series.
  1363.  
  1364.  * "git diff-tree -r -t" used to omit new or removed directories from
  1365.    the output.  df533f3 (diff-tree -r -t: include added/removed
  1366.    directories in the output, 2009-06-13) may need to be cherry-picked
  1367.    to backport this fix.
  1368.  
  1369.  * The way Git.pm sets up a Repository object was not friendly to callers
  1370.    that chdir around.  It now internally records the repository location
  1371.    as an absolute path when autodetected.
  1372.  
  1373.  * Removing a section with "git config --remove-section", when its
  1374.    section header has a variable definition on the same line, lost
  1375.    that variable definition.
  1376.  
  1377.  * "git rebase -p --onto" used to always leave side branches of a merge
  1378.    intact, even when both branches are subject to rewriting.
  1379.  
  1380.  * "git repack" used to faithfully follow grafts and considered true
  1381.    parents recorded in the commit object unreachable from the commit.
  1382.    After such a repacking, you cannot remove grafts without corrupting
  1383.    the repository.
  1384.  
  1385.  * "git send-email" did not detect erroneous loops in alias expansion.
  1386. GIT v1.6.3.4 Release Notes
  1387. ==========================
  1388.  
  1389. Fixes since v1.6.3.3
  1390. --------------------
  1391.  
  1392.  * "git add --no-ignore-errors" did not override configured
  1393.    add.ignore-errors configuration.
  1394.  
  1395.  * "git apply --whitespace=fix" did not fix trailing whitespace on an
  1396.    incomplete line.
  1397.  
  1398.  * "git branch" opened too many commit objects unnecessarily.
  1399.  
  1400.  * "git checkout -f $commit" with a path that is a file (or a symlink) in
  1401.    the work tree to a commit that has a directory at the path issued an
  1402.    unnecessary error message.
  1403.  
  1404.  * "git diff -c/--cc" was very inefficient in coalescing the removed lines
  1405.    shared between parents.
  1406.  
  1407.  * "git diff -c/--cc" showed removed lines at the beginning of a file
  1408.    incorrectly.
  1409.  
  1410.  * "git remote show nickname" did not honor configured
  1411.    remote.nickname.uploadpack when inspecting the branches at the remote.
  1412.  
  1413.  * "git request-pull" when talking to the terminal for a preview
  1414.    showed some of the output in the pager.
  1415.  
  1416.  * "git request-pull start nickname [end]" did not honor configured
  1417.    remote.nickname.uploadpack when it ran git-ls-remote against the remote
  1418.    repository to learn the current tip of branches.
  1419.  
  1420. Includes other documentation updates and minor fixes.
  1421.  
  1422. GIT v1.6.3.3 Release Notes
  1423. ==========================
  1424.  
  1425. Fixes since v1.6.3.2
  1426. --------------------
  1427.  
  1428.  * "git archive" running on Cygwin can get stuck in an infinite loop.
  1429.  
  1430.  * "git daemon" did not correctly parse the initial line that carries
  1431.    virtual host request information.
  1432.  
  1433.  * "git diff --textconv" leaked memory badly when the textconv filter
  1434.    errored out.
  1435.  
  1436.  * The built-in regular expressions to pick function names to put on
  1437.    hunk header lines for java and objc were very inefficiently written.
  1438.  
  1439.  * in certain error situations git-fetch (and git-clone) on Windows didn't
  1440.    detect connection abort and ended up waiting indefinitely.
  1441.  
  1442.  * import-tars script (in contrib) did not import symbolic links correctly.
  1443.  
  1444.  * http.c used CURLOPT_SSLKEY even on libcURL version 7.9.2, even though
  1445.    it was only available starting 7.9.3.
  1446.  
  1447.  * low-level filelevel merge driver used return value from strdup()
  1448.    without checking if we ran out of memory.
  1449.  
  1450.  * "git rebase -i" left stray closing parenthesis in its reflog message.
  1451.  
  1452.  * "git remote show" did not show all the URLs associated with the named
  1453.    remote, even though "git remote -v" did.  Made them consistent by
  1454.    making the former show all URLs.
  1455.  
  1456.  * "whitespace" attribute that is set was meant to detect all errors known
  1457.    to git, but it told git to ignore trailing carriage-returns.
  1458.  
  1459. Includes other documentation fixes.
  1460. GIT v1.6.3.2 Release Notes
  1461. ==========================
  1462.  
  1463. Fixes since v1.6.3.1
  1464. --------------------
  1465.  
  1466.  * A few codepaths picked up the first few bytes from an sha1[] by
  1467.    casting the (char *) pointer to (int *); GCC 4.4 did not like this,
  1468.    and aborted compilation.
  1469.  
  1470.  * Some unlink(2) failures went undiagnosed.
  1471.  
  1472.  * The "recursive" merge strategy misbehaved when faced rename/delete
  1473.    conflicts while coming up with an intermediate merge base.
  1474.  
  1475.  * The low-level merge algorithm did not handle a degenerate case of
  1476.    merging a file with itself using itself as the common ancestor
  1477.    gracefully.  It should produce the file itself, but instead
  1478.    produced an empty result.
  1479.  
  1480.  * GIT_TRACE mechanism segfaulted when tracing a shell-quoted aliases.
  1481.  
  1482.  * OpenBSD also uses st_ctimspec in "struct stat", instead of "st_ctim".
  1483.  
  1484.  * With NO_CROSS_DIRECTORY_HARDLINKS, "make install" can be told not to
  1485.    create hardlinks between $(gitexecdir)/git-$builtin_commands and
  1486.    $(bindir)/git.
  1487.  
  1488.  * command completion code in bash did not reliably detect that we are
  1489.    in a bare repository.
  1490.  
  1491.  * "git add ." in an empty directory complained that pathspec "." did not
  1492.    match anything, which may be technically correct, but not useful.  We
  1493.    silently make it a no-op now.
  1494.  
  1495.  * "git add -p" (and "patch" action in "git add -i") was broken when
  1496.    the first hunk that adds a line at the top was split into two and
  1497.    both halves are marked to be used.
  1498.  
  1499.  * "git blame path" misbehaved at the commit where path became file
  1500.    from a directory with some files in it.
  1501.  
  1502.  * "git for-each-ref" had a segfaulting bug when dealing with a tag object
  1503.    created by an ancient git.
  1504.  
  1505.  * "git format-patch -k" still added patch numbers if format.numbered
  1506.    configuration was set.
  1507.  
  1508.  * "git grep --color ''" did not terminate.  The command also had
  1509.    subtle bugs with its -w option.
  1510.  
  1511.  * http-push had a small use-after-free bug.
  1512.  
  1513.  * "git push" was converting OFS_DELTA pack representation into less
  1514.    efficient REF_DELTA representation unconditionally upon transfer,
  1515.    making the transferred data unnecessarily larger.
  1516.  
  1517.  * "git remote show origin" segfaulted when origin was still empty.
  1518.  
  1519. Many other general usability updates around help text, diagnostic messages
  1520. and documentation are included as well.
  1521. GIT v1.6.3.1 Release Notes
  1522. ==========================
  1523.  
  1524. Fixes since v1.6.3
  1525. ------------------
  1526.  
  1527. * "git checkout -b new-branch" with a staged change in the index
  1528.   incorrectly primed the in-index cache-tree, resulting a wrong tree
  1529.   object to be written out of the index.  This is a grave regression
  1530.   since the last 1.6.2.X maintenance release.
  1531. GIT v1.6.3 Release Notes
  1532. ========================
  1533.  
  1534. With the next major release, "git push" into a branch that is
  1535. currently checked out will be refused by default.  You can choose
  1536. what should happen upon such a push by setting the configuration
  1537. variable receive.denyCurrentBranch in the receiving repository.
  1538.  
  1539. To ease the transition plan, the receiving repository of such a
  1540. push running this release will issue a big warning when the
  1541. configuration variable is missing.  Please refer to:
  1542.  
  1543.   http://git.or.cz/gitwiki/GitFaq#non-bare
  1544.   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
  1545.  
  1546. for more details on the reason why this change is needed and the
  1547. transition plan.
  1548.  
  1549. For a similar reason, "git push $there :$killed" to delete the branch
  1550. $killed in a remote repository $there, if $killed branch is the current
  1551. branch pointed at by its HEAD, gets a large warning.  You can choose what
  1552. should happen upon such a push by setting the configuration variable
  1553. receive.denyDeleteCurrent in the receiving repository.
  1554.  
  1555. When the user does not tell "git push" what to push, it has always
  1556. pushed matching refs.  For some people it is unexpected, and a new
  1557. configuration variable push.default has been introduced to allow
  1558. changing a different default behaviour.  To advertise the new feature,
  1559. a big warning is issued if this is not configured and a git push without
  1560. arguments is attempted.
  1561.  
  1562.  
  1563. Updates since v1.6.2
  1564. --------------------
  1565.  
  1566. (subsystems)
  1567.  
  1568. * various git-svn updates.
  1569.  
  1570. * git-gui updates, including an update to Russian translation, and a
  1571.   fix to an infinite loop when showing an empty diff.
  1572.  
  1573. * gitk updates, including an update to Russian translation and improved Windows
  1574.   support.
  1575.  
  1576. (performance)
  1577.  
  1578. * many uses of lstat(2) in the codepath for "git checkout" have been
  1579.   optimized out.
  1580.  
  1581. (usability, bells and whistles)
  1582.  
  1583. * Boolean configuration variable yes/no can be written as on/off.
  1584.  
  1585. * rsync:/path/to/repo can be used to run git over rsync for local
  1586.   repositories.  It may not be useful in practice; meant primarily for
  1587.   testing.
  1588.  
  1589. * http transport learned to prompt and use password when fetching from or
  1590.   pushing to http://user@host.xz/ URL.
  1591.  
  1592. * (msysgit) progress output that is sent over the sideband protocol can
  1593.   be handled appropriately in Windows console.
  1594.  
  1595. * "--pretty=<style>" option to the log family of commands can now be
  1596.   spelled as "--format=<style>".  In addition, --format=%formatstring
  1597.   is a short-hand for --pretty=tformat:%formatstring.
  1598.  
  1599. * "--oneline" is a synonym for "--pretty=oneline --abbrev-commit".
  1600.  
  1601. * "--graph" to the "git log" family can draw the commit ancestry graph
  1602.   in colors.
  1603.  
  1604. * If you realize that you botched the patch when you are editing hunks
  1605.   with the 'edit' action in git-add -i/-p, you can abort the editor to
  1606.   tell git not to apply it.
  1607.  
  1608. * @{-1} is a new way to refer to the last branch you were on introduced in
  1609.   1.6.2, but the initial implementation did not teach this to a few
  1610.   commands.  Now the syntax works with "branch -m @{-1} newname".
  1611.  
  1612. * git-archive learned --output=<file> option.
  1613.  
  1614. * git-archive takes attributes from the tree being archived; strictly
  1615.   speaking, this is an incompatible behaviour change, but is a good one.
  1616.   Use --worktree-attributes option to allow it to read attributes from
  1617.   the work tree as before (deprecated git-tar tree command always reads
  1618.   attributes from the work tree).
  1619.  
  1620. * git-bisect shows not just the number of remaining commits whose goodness
  1621.   is unknown, but also shows the estimated number of remaining rounds.
  1622.  
  1623. * You can give --date=<format> option to git-blame.
  1624.  
  1625. * "git-branch -r" shows HEAD symref that points at a remote branch in
  1626.   interest of each tracked remote repository.
  1627.  
  1628. * "git-branch -v -v" is a new way to get list of names for branches and the
  1629.   "upstream" branch for them.
  1630.  
  1631. * git-config learned -e option to open an editor to edit the config file
  1632.   directly.
  1633.  
  1634. * git-clone runs post-checkout hook when run without --no-checkout.
  1635.  
  1636. * git-difftool is now part of the officially supported command, primarily
  1637.   maintained by David Aguilar.
  1638.  
  1639. * git-for-each-ref learned a new "upstream" token.
  1640.  
  1641. * git-format-patch can be told to use attachment with a new configuration,
  1642.   format.attach.
  1643.  
  1644. * git-format-patch can be told to produce deep or shallow message threads.
  1645.  
  1646. * git-format-patch can be told to always add sign-off with a configuration
  1647.   variable.
  1648.  
  1649. * git-format-patch learned format.headers configuration to add extra
  1650.   header fields to the output.  This behaviour is similar to the existing
  1651.   --add-header=<header> option of the command.
  1652.  
  1653. * git-format-patch gives human readable names to the attached files, when
  1654.   told to send patches as attachments.
  1655.  
  1656. * git-grep learned to highlight the found substrings in color.
  1657.  
  1658. * git-imap-send learned to work around Thunderbird's inability to easily
  1659.   disable format=flowed with a new configuration, imap.preformattedHTML.
  1660.  
  1661. * git-rebase can be told to rebase the series even if your branch is a
  1662.   descendant of the commit you are rebasing onto with --force-rebase
  1663.   option.
  1664.  
  1665. * git-rebase can be told to report diffstat with the --stat option.
  1666.  
  1667. * Output from git-remote command has been vastly improved.
  1668.  
  1669. * "git remote update --prune $remote" updates from the named remote and
  1670.   then prunes stale tracking branches.
  1671.  
  1672. * git-send-email learned --confirm option to review the Cc: list before
  1673.   sending the messages out.
  1674.  
  1675. (developers)
  1676.  
  1677. * Test scripts can be run under valgrind.
  1678.  
  1679. * Test scripts can be run with installed git.
  1680.  
  1681. * Makefile learned 'coverage' option to run the test suites with
  1682.   coverage tracking enabled.
  1683.  
  1684. * Building the manpages with docbook-xsl between 1.69.1 and 1.71.1 now
  1685.   requires setting DOCBOOK_SUPPRESS_SP to work around a docbook-xsl bug.
  1686.   This workaround used to be enabled by default, but causes problems
  1687.   with newer versions of docbook-xsl.  In addition, there are a few more
  1688.   knobs you can tweak to work around issues with various versions of the
  1689.   docbook-xsl package.  See comments in Documentation/Makefile for details.
  1690.  
  1691. * Support for building and testing a subset of git on a system without a
  1692.   working perl has been improved.
  1693.  
  1694.  
  1695. Fixes since v1.6.2
  1696. ------------------
  1697.  
  1698. All of the fixes in v1.6.2.X maintenance series are included in this
  1699. release, unless otherwise noted.
  1700.  
  1701. Here are fixes that this release has, but have not been backported to
  1702. v1.6.2.X series.
  1703.  
  1704. * "git-apply" rejected a patch that swaps two files (i.e. renames A to B
  1705.   and B to A at the same time).  May need to be backported by cherry
  1706.   picking d8c81df and then 7fac0ee).
  1707.  
  1708. * The initial checkout did not read the attributes from the .gitattribute
  1709.   file that is being checked out.
  1710.  
  1711. * git-gc spent excessive amount of time to decide if an object appears
  1712.   in a locally existing pack (if needed, backport by merging 69e020a).
  1713. GIT v1.6.2.5 Release Notes
  1714. ==========================
  1715.  
  1716. Fixes since v1.6.2.4
  1717. --------------------
  1718.  
  1719. * "git apply" mishandled if you fed a git generated patch that renames
  1720.   file A to B and file B to A at the same time.
  1721.  
  1722. * "git diff -c -p" (and "diff --cc") did not expect to see submodule
  1723.   differences and instead refused to work.
  1724.  
  1725. * "git grep -e '('" segfaulted, instead of diagnosing a mismatched
  1726.   parentheses error.
  1727.  
  1728. * "git fetch" generated packs with offset-delta encoding when both ends of
  1729.   the connection are capable of producing one; this cannot be read by
  1730.   ancient git and the user should be able to disable this by setting
  1731.   repack.usedeltabaseoffset configuration to false.
  1732.  
  1733.  
  1734. GIT v1.6.2.4 Release Notes
  1735. ==========================
  1736.  
  1737. Fixes since v1.6.2.3
  1738. --------------------
  1739.  
  1740. * The configuration parser had a buffer overflow while parsing an overlong
  1741.   value.
  1742.  
  1743. * pruning reflog entries that are unreachable from the tip of the ref
  1744.   during "git reflog prune" (hence "git gc") was very inefficient.
  1745.  
  1746. * "git-add -p" lacked a way to say "q"uit to refuse staging any hunks for
  1747.   the remaining paths.  You had to say "d" and then ^C.
  1748.  
  1749. * "git-checkout <tree-ish> <submodule>" did not update the index entry at
  1750.   the named path; it now does.
  1751.  
  1752. * "git-fast-export" choked when seeing a tag that does not point at commit.
  1753.  
  1754. * "git init" segfaulted when given an overlong template location via
  1755.   the --template= option.
  1756.  
  1757. * "git-ls-tree" and "git-diff-tree" used a pathspec correctly when
  1758.   deciding to descend into a subdirectory but they did not match the
  1759.   individual paths correctly.  This caused pathspecs "abc/d ab" to match
  1760.   "abc/0" ("abc/d" made them decide to descend into the directory "abc/",
  1761.   and then "ab" incorrectly matched "abc/0" when it shouldn't).
  1762.  
  1763. * "git-merge-recursive" was broken when a submodule entry was involved in
  1764.   a criss-cross merge situation.
  1765.  
  1766. Many small documentation updates are included as well.
  1767.  
  1768. ---
  1769. exec >/var/tmp/1
  1770. echo O=$(git describe maint)
  1771. O=v1.6.2.3-38-g318b847
  1772. git shortlog --no-merges $O..maint
  1773. GIT v1.6.2.3 Release Notes
  1774. ==========================
  1775.  
  1776. Fixes since v1.6.2.2
  1777. --------------------
  1778.  
  1779. * Setting an octal mode value to core.sharedrepository configuration to
  1780.   restrict access to the repository to group members did not work as
  1781.   advertised.
  1782.  
  1783. * A fairly large and trivial memory leak while rev-list shows list of
  1784.   reachable objects has been identified and plugged.
  1785.  
  1786. * "git-commit --interactive" did not abort when underlying "git-add -i"
  1787.   signaled a failure.
  1788.  
  1789. * git-repack (invoked from git-gc) did not work as nicely as it should in
  1790.   a repository that borrows objects from neighbours via alternates
  1791.   mechanism especially when some packs are marked with the ".keep" flag
  1792.   to prevent them from being repacked.
  1793.  
  1794. Many small documentation updates are included as well.
  1795. GIT v1.6.2.2 Release Notes
  1796. ==========================
  1797.  
  1798. Fixes since v1.6.2.1
  1799. --------------------
  1800.  
  1801. * A longstanding confusing description of what --pickaxe option of
  1802.   git-diff does has been clarified in the documentation.
  1803.  
  1804. * "git-blame -S" did not quite work near the commits that were given
  1805.   on the command line correctly.
  1806.  
  1807. * "git diff --pickaxe-regexp" did not count overlapping matches
  1808.   correctly.
  1809.  
  1810. * "git diff" did not feed files in work-tree representation to external
  1811.   diff and textconv.
  1812.  
  1813. * "git-fetch" in a repository that was not cloned from anywhere said
  1814.   it cannot find 'origin', which was hard to understand for new people.
  1815.  
  1816. * "git-format-patch --numbered-files --stdout" did not have to die of
  1817.   incompatible options; it now simply ignores --numbered-files as no files
  1818.   are produced anyway.
  1819.  
  1820. * "git-ls-files --deleted" did not work well with GIT_DIR&GIT_WORK_TREE.
  1821.  
  1822. * "git-read-tree A B C..." without -m option has been broken for a long
  1823.   time.
  1824.  
  1825. * git-send-email ignored --in-reply-to when --no-thread was given.
  1826.  
  1827. * 'git-submodule add' did not tolerate extra slashes and ./ in the path it
  1828.   accepted from the command line; it now is more lenient.
  1829.  
  1830. * git-svn misbehaved when the project contained a path that began with
  1831.   two dashes.
  1832.  
  1833. * import-zips script (in contrib) did not compute the common directory
  1834.   prefix correctly.
  1835.  
  1836. * miscompilation of negated enum constants by old gcc (2.9) affected the
  1837.   codepaths to spawn subprocesses.
  1838.  
  1839. Many small documentation updates are included as well.
  1840. GIT v1.6.2.1 Release Notes
  1841. ==========================
  1842.  
  1843. Fixes since v1.6.2
  1844. ------------------
  1845.  
  1846. * .gitignore learned to handle backslash as a quoting mechanism for
  1847.   comment introduction character "#".
  1848.  
  1849. * timestamp output in --date=relative mode used to display timestamps that
  1850.   are long time ago in the default mode; it now uses "N years M months
  1851.   ago", and "N years ago".
  1852.  
  1853. * git-add -i/-p now works with non-ASCII pathnames.
  1854.  
  1855. * "git hash-object -w" did not read from the configuration file from the
  1856.   correct .git directory.
  1857.  
  1858. * git-send-email learned to correctly handle multiple Cc: addresses.
  1859. GIT v1.6.2 Release Notes
  1860. ========================
  1861.  
  1862. With the next major release, "git push" into a branch that is
  1863. currently checked out will be refused by default.  You can choose
  1864. what should happen upon such a push by setting the configuration
  1865. variable receive.denyCurrentBranch in the receiving repository.
  1866.  
  1867. To ease the transition plan, the receiving repository of such a
  1868. push running this release will issue a big warning when the
  1869. configuration variable is missing.  Please refer to:
  1870.  
  1871.   http://git.or.cz/gitwiki/GitFaq#non-bare
  1872.   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
  1873.  
  1874. for more details on the reason why this change is needed and the
  1875. transition plan.
  1876.  
  1877. For a similar reason, "git push $there :$killed" to delete the branch
  1878. $killed in a remote repository $there, if $killed branch is the current
  1879. branch pointed at by its HEAD, gets a large warning.  You can choose what
  1880. should happen upon such a push by setting the configuration variable
  1881. receive.denyDeleteCurrent in the receiving repository.
  1882.  
  1883.  
  1884. Updates since v1.6.1
  1885. --------------------
  1886.  
  1887. (subsystems)
  1888.  
  1889. * git-svn updates.
  1890.  
  1891. * gitweb updates, including a new patch view and RSS/Atom feed
  1892.   improvements.
  1893.  
  1894. * (contrib/emacs) git.el now has commands for checking out a branch,
  1895.   creating a branch, cherry-picking and reverting commits; vc-git.el
  1896.   is not shipped with git anymore (it is part of official Emacs).
  1897.  
  1898. (performance)
  1899.  
  1900. * pack-objects autodetects the number of CPUs available and uses threaded
  1901.   version.
  1902.  
  1903. (usability, bells and whistles)
  1904.  
  1905. * automatic typo correction works on aliases as well
  1906.  
  1907. * @{-1} is a way to refer to the last branch you were on.  This is
  1908.   accepted not only where an object name is expected, but anywhere
  1909.   a branch name is expected and acts as if you typed the branch name.
  1910.   E.g. "git branch --track mybranch @{-1}", "git merge @{-1}", and
  1911.   "git rev-parse --symbolic-full-name @{-1}" would work as expected.
  1912.  
  1913. * When refs/remotes/origin/HEAD points at a remote tracking branch that
  1914.   has been pruned away, many git operations issued warning when they
  1915.   internally enumerated the refs.  We now warn only when you say "origin"
  1916.   to refer to that pruned branch.
  1917.  
  1918. * The location of .mailmap file can be configured, and its file format was
  1919.   enhanced to allow mapping an incorrect e-mail field as well.
  1920.  
  1921. * "git add -p" learned 'g'oto action to jump directly to a hunk.
  1922.  
  1923. * "git add -p" learned to find a hunk with given text with '/'.
  1924.  
  1925. * "git add -p" optionally can be told to work with just the command letter
  1926.   without Enter.
  1927.  
  1928. * when "git am" stops upon a patch that does not apply, it shows the
  1929.   title of the offending patch.
  1930.  
  1931. * "git am --directory=<dir>" and "git am --reject" passes these options
  1932.   to underlying "git apply".
  1933.  
  1934. * "git am" learned --ignore-date option.
  1935.  
  1936. * "git blame" aligns author names better when they are spelled in
  1937.   non US-ASCII encoding.
  1938.  
  1939. * "git clone" now makes its best effort when cloning from an empty
  1940.   repository to set up configuration variables to refer to the remote
  1941.   repository.
  1942.  
  1943. * "git checkout -" is a shorthand for "git checkout @{-1}".
  1944.  
  1945. * "git cherry" defaults to whatever the current branch is tracking (if
  1946.   exists) when the <upstream> argument is not given.
  1947.  
  1948. * "git cvsserver" can be told not to add extra "via git-CVS emulator" to
  1949.   the commit log message it serves via gitcvs.commitmsgannotation
  1950.   configuration.
  1951.  
  1952. * "git cvsserver" learned to handle 'noop' command some CVS clients seem
  1953.   to expect to work.
  1954.  
  1955. * "git diff" learned a new option --inter-hunk-context to coalesce close
  1956.   hunks together and show context between them.
  1957.  
  1958. * The definition of what constitutes a word for "git diff --color-words"
  1959.   can be customized via gitattributes, command line or a configuration.
  1960.  
  1961. * "git diff" learned --patience to run "patience diff" algorithm.
  1962.  
  1963. * "git filter-branch" learned --prune-empty option that discards commits
  1964.   that do not change the contents.
  1965.  
  1966. * "git fsck" now checks loose objects in alternate object stores, instead
  1967.   of misreporting them as missing.
  1968.  
  1969. * "git gc --prune" was resurrected to allow "git gc --no-prune" and
  1970.   giving non-default expiration period e.g. "git gc --prune=now".
  1971.  
  1972. * "git grep -w" and "git grep" for fixed strings have been optimized.
  1973.  
  1974. * "git mergetool" learned -y(--no-prompt) option to disable prompting.
  1975.  
  1976. * "git rebase -i" can transplant a history down to root to elsewhere
  1977.   with --root option.
  1978.  
  1979. * "git reset --merge" is a new mode that works similar to the way
  1980.   "git checkout" switches branches, taking the local changes while
  1981.   switching to another commit.
  1982.  
  1983. * "git submodule update" learned --no-fetch option.
  1984.  
  1985. * "git tag" learned --contains that works the same way as the same option
  1986.   from "git branch".
  1987.  
  1988.  
  1989. Fixes since v1.6.1
  1990. ------------------
  1991.  
  1992. All of the fixes in v1.6.1.X maintenance series are included in this
  1993. release, unless otherwise noted.
  1994.  
  1995. Here are fixes that this release has, but have not been backported to
  1996. v1.6.1.X series.
  1997.  
  1998. * "git-add sub/file" when sub is a submodule incorrectly added the path to
  1999.   the superproject.
  2000.  
  2001. * "git bundle" did not exclude annotated tags even when a range given
  2002.   from the command line wanted to.
  2003.  
  2004. * "git filter-branch" unnecessarily refused to work when you had
  2005.   checked out a different commit from what is recorded in the superproject
  2006.   index in a submodule.
  2007.  
  2008. * "git filter-branch" incorrectly tried to update a nonexistent work tree
  2009.   at the end when it is run in a bare repository.
  2010.  
  2011. * "git gc" did not work if your repository was created with an ancient git
  2012.   and never had any pack files in it before.
  2013.  
  2014. * "git mergetool" used to ignore autocrlf and other attributes
  2015.   based content rewriting.
  2016.  
  2017. * branch switching and merges had a silly bug that did not validate
  2018.   the correct directory when making sure an existing subdirectory is
  2019.   clean.
  2020.  
  2021. * "git -p cmd" when cmd is not a built-in one left the display in funny state
  2022.   when killed in the middle.
  2023. GIT v1.6.1.3 Release Notes
  2024. ==========================
  2025.  
  2026. Fixes since v1.6.1.2
  2027. --------------------
  2028.  
  2029. * "git diff --binary | git apply" pipeline did not work well when
  2030.   a binary blob is changed to a symbolic link.
  2031.  
  2032. * Some combinations of -b/-w/--ignore-space-at-eol to "git diff" did
  2033.   not work as expected.
  2034.  
  2035. * "git grep" did not pass the -I (ignore binary) option when
  2036.   calling out an external grep program.
  2037.  
  2038. * "git log" and friends include HEAD to the set of starting points
  2039.   when --all is given.  This makes a difference when you are not
  2040.   on any branch.
  2041.  
  2042. * "git mv" to move an untracked file to overwrite a tracked
  2043.   contents misbehaved.
  2044.  
  2045. * "git merge -s octopus" with many potential merge bases did not
  2046.   work correctly.
  2047.  
  2048. * RPM binary package installed the html manpages in a wrong place.
  2049.  
  2050. Also includes minor documentation fixes and updates.
  2051.  
  2052.  
  2053. --
  2054. git shortlog --no-merges v1.6.1.2-33-gc789350..
  2055. GIT v1.6.1.2 Release Notes
  2056. ==========================
  2057.  
  2058. Fixes since v1.6.1.1
  2059. --------------------
  2060.  
  2061. * The logic for rename detection in internal diff used by commands like
  2062.   "git diff" and "git blame" has been optimized to avoid loading the same
  2063.   blob repeatedly.
  2064.  
  2065. * We did not allow writing out a blob that is larger than 2GB for no good
  2066.   reason.
  2067.  
  2068. * "git format-patch -o $dir", when $dir is a relative directory, used it
  2069.   as relative to the root of the work tree, not relative to the current
  2070.   directory.
  2071.  
  2072. * v1.6.1 introduced an optimization for "git push" into a repository (A)
  2073.   that borrows its objects from another repository (B) to avoid sending
  2074.   objects that are available in repository B, when they are not yet used
  2075.   by repository A.  However the code on the "git push" sender side was
  2076.   buggy and did not work when repository B had new objects that are not
  2077.   known by the sender.  This caused pushing into a "forked" repository
  2078.   served by v1.6.1 software using "git push" from v1.6.1 sometimes did not
  2079.   work.  The bug was purely on the "git push" sender side, and has been
  2080.   corrected.
  2081.  
  2082. * "git status -v" did not paint its diff output in colour even when
  2083.   color.ui configuration was set.
  2084.  
  2085. * "git ls-tree" learned --full-tree option to help Porcelain scripts that
  2086.   want to always see the full path regardless of the current working
  2087.   directory.
  2088.  
  2089. * "git grep" incorrectly searched in work tree paths even when they are
  2090.   marked as assume-unchanged.  It now searches in the index entries.
  2091.  
  2092. * "git gc" with no grace period needlessly ejected packed but unreachable
  2093.   objects in their loose form, only to delete them right away.
  2094. GIT v1.6.1.1 Release Notes
  2095. ==========================
  2096.  
  2097. Fixes since v1.6.1
  2098. ------------------
  2099.  
  2100. * "git add frotz/nitfol" when "frotz" is a submodule should have errored
  2101.   out, but it didn't.
  2102.  
  2103. * "git apply" took file modes from the patch text and updated the mode
  2104.   bits of the target tree even when the patch was not about mode changes.
  2105.  
  2106. * "git bisect view" on Cygwin did not launch gitk
  2107.  
  2108. * "git checkout $tree" did not trigger an error.
  2109.  
  2110. * "git commit" tried to remove COMMIT_EDITMSG from the work tree by mistake.
  2111.  
  2112. * "git describe --all" complained when a commit is described with a tag,
  2113.   which was nonsense.
  2114.  
  2115. * "git diff --no-index --" did not trigger no-index (aka "use git-diff as
  2116.   a replacement of diff on untracked files") behaviour.
  2117.  
  2118. * "git format-patch -1 HEAD" on a root commit failed to produce patch
  2119.   text.
  2120.  
  2121. * "git fsck branch" did not work as advertised; instead it behaved the same
  2122.   way as "git fsck".
  2123.  
  2124. * "git log --pretty=format:%s" did not handle a multi-line subject the
  2125.   same way as built-in log listers (i.e. shortlog, --pretty=oneline, etc.)
  2126.  
  2127. * "git daemon", and "git merge-file" are more careful when freopen fails
  2128.   and barf, instead of going on and writing to unopened filehandle.
  2129.  
  2130. * "git http-push" did not like some RFC 4918 compliant DAV server
  2131.   responses.
  2132.  
  2133. * "git merge -s recursive" mistakenly overwritten an untracked file in the
  2134.   work tree upon delete/modify conflict.
  2135.  
  2136. * "git merge -s recursive" didn't leave the index unmerged for entries with
  2137.   rename/delete conflicts.
  2138.  
  2139. * "git merge -s recursive" clobbered untracked files in the work tree.
  2140.  
  2141. * "git mv -k" with more than one erroneous paths misbehaved.
  2142.  
  2143. * "git read-tree -m -u" hence branch switching incorrectly lost a
  2144.   subdirectory in rare cases.
  2145.  
  2146. * "git rebase -i" issued an unnecessary error message upon a user error of
  2147.   marking the first commit to be "squash"ed.
  2148.  
  2149. * "git shortlog" did not format a commit message with multi-line
  2150.   subject correctly.
  2151.  
  2152. Many documentation updates.
  2153. GIT v1.6.1 Release Notes
  2154. ========================
  2155.  
  2156. Updates since v1.6.0
  2157. --------------------
  2158.  
  2159. When some commands (e.g. "git log", "git diff") spawn pager internally, we
  2160. used to make the pager the parent process of the git command that produces
  2161. output.  This meant that the exit status of the whole thing comes from the
  2162. pager, not the underlying git command.  We swapped the order of the
  2163. processes around and you will see the exit code from the command from now
  2164. on.
  2165.  
  2166. (subsystems)
  2167.  
  2168. * gitk can call out to git-gui to view "git blame" output; git-gui in turn
  2169.   can run gitk from its blame view.
  2170.  
  2171. * Various git-gui updates including updated translations.
  2172.  
  2173. * Various gitweb updates from repo.or.cz installation.
  2174.  
  2175. * Updates to emacs bindings.
  2176.  
  2177. (portability)
  2178.  
  2179. * A few test scripts used nonportable "grep" that did not work well on
  2180.   some platforms, e.g. Solaris.
  2181.  
  2182. * Sample pre-auto-gc script has OS X support.
  2183.  
  2184. * Makefile has support for (ancient) FreeBSD 4.9.
  2185.  
  2186. (performance)
  2187.  
  2188. * Many operations that are lstat(3) heavy can be told to pre-execute
  2189.   necessary lstat(3) in parallel before their main operations, which
  2190.   potentially gives much improved performance for cold-cache cases or in
  2191.   environments with weak metadata caching (e.g. NFS).
  2192.  
  2193. * The underlying diff machinery to produce textual output has been
  2194.   optimized, which would result in faster "git blame" processing.
  2195.  
  2196. * Most of the test scripts (but not the ones that try to run servers)
  2197.   can be run in parallel.
  2198.  
  2199. * Bash completion of refnames in a repository with massive number of
  2200.   refs has been optimized.
  2201.  
  2202. * Cygwin port uses native stat/lstat implementations when applicable,
  2203.   which leads to improved performance.
  2204.  
  2205. * "git push" pays attention to alternate repositories to avoid sending
  2206.   unnecessary objects.
  2207.  
  2208. * "git svn" can rebuild an out-of-date rev_map file.
  2209.  
  2210. (usability, bells and whistles)
  2211.  
  2212. * When you mistype a command name, git helpfully suggests what it guesses
  2213.   you might have meant to say.  help.autocorrect configuration can be set
  2214.   to a non-zero value to accept the suggestion when git can uniquely
  2215.   guess.
  2216.  
  2217. * The packfile machinery hopefully is more robust when dealing with
  2218.   corrupt packs if redundant objects involved in the corruption are
  2219.   available elsewhere.
  2220.  
  2221. * "git add -N path..." adds the named paths as an empty blob, so that
  2222.   subsequent "git diff" will show a diff as if they are creation events.
  2223.  
  2224. * "git add" gained a built-in synonym for people who want to say "stage
  2225.   changes" instead of "add contents to the staging area" which amounts
  2226.   to the same thing.
  2227.  
  2228. * "git apply" learned --include=paths option, similar to the existing
  2229.   --exclude=paths option.
  2230.  
  2231. * "git bisect" is careful about a user mistake and suggests testing of
  2232.   merge base first when good is not a strict ancestor of bad.
  2233.  
  2234. * "git bisect skip" can take a range of commits.
  2235.  
  2236. * "git blame" re-encodes the commit metainfo to UTF-8 from i18n.commitEncoding
  2237.   by default.
  2238.  
  2239. * "git check-attr --stdin" can check attributes for multiple paths.
  2240.  
  2241. * "git checkout --track origin/hack" used to be a syntax error.  It now
  2242.   DWIMs to create a corresponding local branch "hack", i.e. acts as if you
  2243.   said "git checkout --track -b hack origin/hack".
  2244.  
  2245. * "git checkout --ours/--theirs" can be used to check out one side of a
  2246.   conflicting merge during conflict resolution.
  2247.  
  2248. * "git checkout -m" can be used to recreate the initial conflicted state
  2249.   during conflict resolution.
  2250.  
  2251. * "git cherry-pick" can also utilize rerere for conflict resolution.
  2252.  
  2253. * "git clone" learned to be verbose with -v
  2254.  
  2255. * "git commit --author=$name" can look up author name from existing
  2256.   commits.
  2257.  
  2258. * output from "git commit" has been reworded in a more concise and yet
  2259.   more informative way.
  2260.  
  2261. * "git count-objects" reports the on-disk footprint for packfiles and
  2262.   their corresponding idx files.
  2263.  
  2264. * "git daemon" learned --max-connections=<count> option.
  2265.  
  2266. * "git daemon" exports REMOTE_ADDR to record client address, so that
  2267.   spawned programs can act differently on it.
  2268.  
  2269. * "git describe --tags" favours closer lightweight tags than farther
  2270.   annotated tags now.
  2271.  
  2272. * "git diff" learned to mimic --suppress-blank-empty from GNU diff via a
  2273.   configuration option.
  2274.  
  2275. * "git diff" learned to put more sensible hunk headers for Python,
  2276.   HTML and ObjC contents.
  2277.  
  2278. * "git diff" learned to vary the a/ vs b/ prefix depending on what are
  2279.   being compared, controlled by diff.mnemonicprefix configuration.
  2280.  
  2281. * "git diff" learned --dirstat-by-file to count changed files, not number
  2282.   of lines, when summarizing the global picture.
  2283.  
  2284. * "git diff" learned "textconv" filters --- a binary or hard-to-read
  2285.   contents can be munged into human readable form and the difference
  2286.   between the results of the conversion can be viewed (obviously this
  2287.   cannot produce a patch that can be applied, so this is disabled in
  2288.   format-patch among other things).
  2289.  
  2290. * "--cached" option to "git diff has an easier to remember synonym "--staged",
  2291.   to ask "what is the difference between the given commit and the
  2292.   contents staged in the index?"
  2293.  
  2294. * "git for-each-ref" learned "refname:short" token that gives an
  2295.   unambiguously abbreviated refname.
  2296.  
  2297. * Auto-numbering of the subject lines is the default for "git
  2298.   format-patch" now.
  2299.  
  2300. * "git grep" learned to accept -z similar to GNU grep.
  2301.  
  2302. * "git help" learned to use GIT_MAN_VIEWER environment variable before
  2303.   using "man" program.
  2304.  
  2305. * "git imap-send" can optionally talk SSL.
  2306.  
  2307. * "git index-pack" is more careful against disk corruption while
  2308.   completing a thin pack.
  2309.  
  2310. * "git log --check" and "git log --exit-code" passes their underlying diff
  2311.   status with their exit status code.
  2312.  
  2313. * "git log" learned --simplify-merges, a milder variant of --full-history;
  2314.   "gitk --simplify-merges" is easier to view than with --full-history.
  2315.  
  2316. * "git log" learned "--source" to show what ref each commit was reached
  2317.   from.
  2318.  
  2319. * "git log" also learned "--simplify-by-decoration" to show the
  2320.   birds-eye-view of the topology of the history.
  2321.  
  2322. * "git log --pretty=format:" learned "%d" format element that inserts
  2323.   names of tags that point at the commit.
  2324.  
  2325. * "git merge --squash" and "git merge --no-ff" into an unborn branch are
  2326.   noticed as user errors.
  2327.  
  2328. * "git merge -s $strategy" can use a custom built strategy if you have a
  2329.   command "git-merge-$strategy" on your $PATH.
  2330.  
  2331. * "git pull" (and "git fetch") can be told to operate "-v"erbosely or
  2332.   "-q"uietly.
  2333.  
  2334. * "git push" can be told to reject deletion of refs with receive.denyDeletes
  2335.   configuration.
  2336.  
  2337. * "git rebase" honours pre-rebase hook; use --no-verify to bypass it.
  2338.  
  2339. * "git rebase -p" uses interactive rebase machinery now to preserve the merges.
  2340.  
  2341. * "git reflog expire branch" can be used in place of "git reflog expire
  2342.   refs/heads/branch".
  2343.  
  2344. * "git remote show $remote" lists remote branches one-per-line now.
  2345.  
  2346. * "git send-email" can be given revision range instead of files and
  2347.   maildirs on the command line, and automatically runs format-patch to
  2348.   generate patches for the given revision range.
  2349.  
  2350. * "git submodule foreach" subcommand allows you to iterate over checked
  2351.   out submodules.
  2352.  
  2353. * "git submodule sync" subcommands allows you to update the origin URL
  2354.   recorded in submodule directories from the toplevel .gitmodules file.
  2355.  
  2356. * "git svn branch" can create new branches on the other end.
  2357.  
  2358. * "gitweb" can use more saner PATH_INFO based URL.
  2359.  
  2360. (internal)
  2361.  
  2362. * "git hash-object" learned to lie about the path being hashed, so that
  2363.   correct gitattributes processing can be done while hashing contents
  2364.   stored in a temporary file.
  2365.  
  2366. * various callers of git-merge-recursive avoid forking it as an external
  2367.   process.
  2368.  
  2369. * Git class defined in "Git.pm" can be subclasses a bit more easily.
  2370.  
  2371. * We used to link GNU regex library as a compatibility layer for some
  2372.   platforms, but it turns out it is not necessary on most of them.
  2373.  
  2374. * Some path handling routines used fixed number of buffers used alternately
  2375.   but depending on the call depth, this arrangement led to hard to track
  2376.   bugs.  This issue is being addressed.
  2377.  
  2378.  
  2379. Fixes since v1.6.0
  2380. ------------------
  2381.  
  2382. All of the fixes in v1.6.0.X maintenance series are included in this
  2383. release, unless otherwise noted.
  2384.  
  2385. * Porcelains implemented as shell scripts were utterly confused when you
  2386.   entered to a subdirectory of a work tree from sideways, following a
  2387.   symbolic link (this may need to be backported to older releases later).
  2388.  
  2389. * Tracking symbolic links would work better on filesystems whose lstat()
  2390.   returns incorrect st_size value for them.
  2391.  
  2392. * "git add" and "git update-index" incorrectly allowed adding S/F when S
  2393.   is a tracked symlink that points at a directory D that has a path F in
  2394.   it (we still need to fix a similar nonsense when S is a submodule and F
  2395.   is a path in it).
  2396.  
  2397. * "git am" after stopping at a broken patch lost --whitespace, -C, -p and
  2398.   --3way options given from the command line initially.
  2399.  
  2400. * "git diff --stdin" used to take two trees on a line and compared them,
  2401.   but we dropped support for such a use case long time ago.  This has
  2402.   been resurrected.
  2403.  
  2404. * "git filter-branch" failed to rewrite a tag name with slashes in it.
  2405.  
  2406. * "git http-push" did not understand URI scheme other than opaquelocktoken
  2407.   when acquiring a lock from the server (this may need to be backported to
  2408.   older releases later).
  2409.  
  2410. * After "git rebase -p" stopped with conflicts while replaying a merge,
  2411.  "git rebase --continue" did not work (may need to be backported to older
  2412.   releases).
  2413.  
  2414. * "git revert" records relative to which parent a revert was made when
  2415.   reverting a merge.  Together with new documentation that explains issues
  2416.   around reverting a merge and merging from the updated branch later, this
  2417.   hopefully will reduce user confusion (this may need to be backported to
  2418.   older releases later).
  2419.  
  2420. * "git rm --cached" used to allow an empty blob that was added earlier to
  2421.   be removed without --force, even when the file in the work tree has
  2422.   since been modified.
  2423.  
  2424. * "git push --tags --all $there" failed with generic usage message without
  2425.   telling saying these two options are incompatible.
  2426.  
  2427. * "git log --author/--committer" match used to potentially match the
  2428.   timestamp part, exposing internal implementation detail.  Also these did
  2429.   not work with --fixed-strings match at all.
  2430.  
  2431. * "gitweb" did not mark non-ASCII characters imported from external HTML fragments
  2432.   correctly.
  2433.  
  2434. --
  2435. exec >/var/tmp/1
  2436. O=v1.6.1-rc3-74-gf66bc5f
  2437. echo O=$(git describe master)
  2438. git shortlog --no-merges $O..master ^maint
  2439. GIT v1.6.0.6 Release Notes
  2440. ==========================
  2441.  
  2442. Fixes since 1.6.0.5
  2443. -------------------
  2444.  
  2445.  * "git fsck" had a deep recursion that wasted stack space.
  2446.  
  2447.  * "git fast-export" and "git fast-import" choked on an old style
  2448.    annotated tag that lack the tagger information.
  2449.  
  2450.  * "git mergetool -- file" did not correctly skip "--" marker that
  2451.    signals the end of options list.
  2452.  
  2453.  * "git show $tag" segfaulted when an annotated $tag pointed at a
  2454.    nonexistent object.
  2455.  
  2456.  * "git show 2>error" when the standard output is automatically redirected
  2457.    to the pager redirected the standard error to the pager as well; there
  2458.    was no need to.
  2459.  
  2460.  * "git send-email" did not correctly handle list of addresses when
  2461.    they had quoted comma (e.g. "Lastname, Givenname" <mail@addre.ss>).
  2462.  
  2463.  * Logic to discover branch ancestry in "git svn" was unreliable when
  2464.    the process to fetch history was interrupted.
  2465.  
  2466.  * Removed support for an obsolete gitweb request URI, whose
  2467.    implementation ran "git diff" Porcelain, instead of using plumbing,
  2468.    which would have run an external diff command specified in the
  2469.    repository configuration as the gitweb user.
  2470.  
  2471. Also contains numerous documentation typofixes.
  2472. GIT v1.6.0.5 Release Notes
  2473. ==========================
  2474.  
  2475. Fixes since v1.6.0.4
  2476. --------------------
  2477.  
  2478. * "git checkout" used to crash when your HEAD was pointing at a deleted
  2479.   branch.
  2480.  
  2481. * "git checkout" from an un-checked-out state did not allow switching out
  2482.   of the current branch.
  2483.  
  2484. * "git diff" always allowed GIT_EXTERNAL_DIFF and --no-ext-diff was no-op for
  2485.   the command.
  2486.  
  2487. * Giving 3 or more tree-ish to "git diff" is supposed to show the combined
  2488.   diff from second and subsequent trees to the first one, but the order was
  2489.   screwed up.
  2490.  
  2491. * "git fast-export" did not export all tags.
  2492.  
  2493. * "git ls-files --with-tree=<tree>" did not work with options other
  2494.   than -c, most notably with -m.
  2495.  
  2496. * "git pack-objects" did not make its best effort to honor --max-pack-size
  2497.   option when a single first object already busted the given limit and
  2498.   placed many objects in a single pack.
  2499.  
  2500. * "git-p4" fast import frontend was too eager to trigger its keyword expansion
  2501.   logic, even on a keyword-looking string that does not have closing '$' on the
  2502.   same line.
  2503.  
  2504. * "git push $there" when the remote $there is defined in $GIT_DIR/branches/$there
  2505.   behaves more like what cg-push from Cogito used to work.
  2506.  
  2507. * when giving up resolving a conflicted merge, "git reset --hard" failed
  2508.   to remove new paths from the working tree.
  2509.  
  2510. * "git tag" did not complain when given mutually incompatible set of options.
  2511.  
  2512. * The message constructed in the internal editor was discarded when "git
  2513.   tag -s" failed to sign the message, which was often caused by the user
  2514.   not configuring GPG correctly.
  2515.  
  2516. * "make check" cannot be run without sparse; people may have meant to say
  2517.   "make test" instead, so suggest that.
  2518.  
  2519. * Internal diff machinery had a corner case performance bug that choked on
  2520.   a large file with many repeated contents.
  2521.  
  2522. * "git repack" used to grab objects out of packs marked with .keep
  2523.   into a new pack.
  2524.  
  2525. * Many unsafe call to sprintf() style varargs functions are corrected.
  2526.  
  2527. * Also contains quite a few documentation updates.
  2528. GIT v1.6.0.4 Release Notes
  2529. ==========================
  2530.  
  2531. Fixes since v1.6.0.3
  2532. --------------------
  2533.  
  2534. * 'git add -p' said "No changes" when only binary files were changed.
  2535.  
  2536. * 'git archive' did not work correctly in bare repositories.
  2537.  
  2538. * 'git checkout -t -b newbranch' when you are on detached HEAD was broken.
  2539.  
  2540. * when we refuse to detect renames because there are too many new or
  2541.   deleted files, 'git diff' did not say how many there are.
  2542.  
  2543. * 'git push --mirror' tried and failed to push the stash; there is no
  2544.   point in sending it to begin with.
  2545.  
  2546. * 'git push' did not update the remote tracking reference if the corresponding
  2547.   ref on the remote end happened to be already up to date.
  2548.  
  2549. * 'git pull $there $branch:$current_branch' did not work when you were on
  2550.   a branch yet to be born.
  2551.  
  2552. * when giving up resolving a conflicted merge, 'git reset --hard' failed
  2553.   to remove new paths from the working tree.
  2554.  
  2555. * 'git send-email' had a small fd leak while scanning directory.
  2556.  
  2557. * 'git status' incorrectly reported a submodule directory as an untracked
  2558.   directory.
  2559.  
  2560. * 'git svn' used deprecated 'git-foo' form of subcommand invocation.
  2561.  
  2562. * 'git update-ref -d' to remove a reference did not honor --no-deref option.
  2563.  
  2564. * Plugged small memleaks here and there.
  2565.  
  2566. * Also contains many documentation updates.
  2567. GIT v1.6.0.3 Release Notes
  2568. ==========================
  2569.  
  2570. Fixes since v1.6.0.2
  2571. --------------------
  2572.  
  2573. * "git archive --format=zip" did not honor core.autocrlf while
  2574.   --format=tar did.
  2575.  
  2576. * Continuing "git rebase -i" was very confused when the user left modified
  2577.   files in the working tree while resolving conflicts.
  2578.  
  2579. * Continuing "git rebase -i" was also very confused when the user left
  2580.   some staged changes in the index after "edit".
  2581.  
  2582. * "git rebase -i" now honors the pre-rebase hook, just like the
  2583.   other rebase implementations "git rebase" and "git rebase -m".
  2584.  
  2585. * "git rebase -i" incorrectly aborted when there is no commit to replay.
  2586.  
  2587. * Behaviour of "git diff --quiet" was inconsistent with "diff --exit-code"
  2588.   with the output redirected to /dev/null.
  2589.  
  2590. * "git diff --no-index" on binary files no longer outputs a bogus
  2591.   "diff --git" header line.
  2592.  
  2593. * "git diff" hunk header patterns with multiple elements separated by LF
  2594.   were not used correctly.
  2595.  
  2596. * Hunk headers in "git diff" default to using extended regular
  2597.   expressions, fixing some of the internal patterns on non-GNU
  2598.   platforms.
  2599.  
  2600. * New config "diff.*.xfuncname" exposes extended regular expressions
  2601.   for user specified hunk header patterns.
  2602.  
  2603. * "git gc" when ejecting otherwise unreachable objects from packfiles into
  2604.   loose form leaked memory.
  2605.  
  2606. * "git index-pack" was recently broken and mishandled objects added by
  2607.   thin-pack completion processing under memory pressure.
  2608.  
  2609. * "git index-pack" was recently broken and misbehaved when run from inside
  2610.   .git/objects/pack/ directory.
  2611.  
  2612. * "git stash apply sash@{1}" was fixed to error out.  Prior versions
  2613.   would have applied stash@{0} incorrectly.
  2614.  
  2615. * "git stash apply" now offers a better suggestion on how to continue
  2616.   if the working tree is currently dirty.
  2617.  
  2618. * "git for-each-ref --format=%(subject)" fixed for commits with no
  2619.   no newline in the message body.
  2620.  
  2621. * "git remote" fixed to protect printf from user input.
  2622.  
  2623. * "git remote show -v" now displays all URLs of a remote.
  2624.  
  2625. * "git checkout -b branch" was confused when branch already existed.
  2626.  
  2627. * "git checkout -q" once again suppresses the locally modified file list.
  2628.  
  2629. * "git clone -q", "git fetch -q" asks remote side to not send
  2630.   progress messages, actually making their output quiet.
  2631.  
  2632. * Cross-directory renames are no longer used when creating packs.  This
  2633.   allows more graceful behavior on filesystems like sshfs.
  2634.  
  2635. * Stale temporary files under $GIT_DIR/objects/pack are now cleaned up
  2636.   automatically by "git prune".
  2637.  
  2638. * "git merge" once again removes directories after the last file has
  2639.   been removed from it during the merge.
  2640.  
  2641. * "git merge" did not allocate enough memory for the structure itself when
  2642.   enumerating the parents of the resulting commit.
  2643.  
  2644. * "git blame -C -C" no longer segfaults while trying to pass blame if
  2645.    it encounters a submodule reference.
  2646.  
  2647. * "git rm" incorrectly claimed that you have local modifications when a
  2648.   path was merely stat-dirty.
  2649.  
  2650. * "git svn" fixed to display an error message when 'set-tree' failed,
  2651.    instead of a Perl compile error.
  2652.  
  2653. * "git submodule" fixed to handle checking out a different commit
  2654.   than HEAD after initializing the submodule.
  2655.  
  2656. * The "git commit" error message when there are still unmerged
  2657.   files present was clarified to match "git write-tree".
  2658.  
  2659. * "git init" was confused when core.bare or core.sharedRepository are set
  2660.   in system or user global configuration file by mistake.  When --bare or
  2661.   --shared is given from the command line, these now override such
  2662.   settings made outside the repositories.
  2663.  
  2664. * Some segfaults due to uncaught NULL pointers were fixed in multiple
  2665.   tools such as apply, reset, update-index.
  2666.  
  2667. * Solaris builds now default to OLD_ICONV=1 to avoid compile warnings;
  2668.   Solaris 8 does not define NEEDS_LIBICONV by default.
  2669.  
  2670. * "Git.pm" tests relied on unnecessarily more recent version of Perl.
  2671.  
  2672. * "gitweb" triggered undef warning on commits without log messages.
  2673.  
  2674. * "gitweb" triggered undef warnings on missing trees.
  2675.  
  2676. * "gitweb" now removes PATH_INFO from its URLs so users don't have
  2677.   to manually set the URL in the gitweb configuration.
  2678.  
  2679. * Bash completion removed support for legacy "git-fetch", "git-push"
  2680.   and "git-pull" as these are no longer installed.  Dashless form
  2681.   ("git fetch") is still however supported.
  2682.  
  2683. Many other documentation updates.
  2684. GIT v1.6.0.2 Release Notes
  2685. ==========================
  2686.  
  2687. Fixes since v1.6.0.1
  2688. --------------------
  2689.  
  2690. * Installation on platforms that needs .exe suffix to git-* programs were
  2691.   broken in 1.6.0.1.
  2692.  
  2693. * Installation on filesystems without symbolic links support did not
  2694.   work well.
  2695.  
  2696. * In-tree documentations and test scripts now use "git foo" form to set a
  2697.   better example, instead of the "git-foo" form (which is an acceptable
  2698.   form if you have "PATH=$(git --exec-path):$PATH" in your script)
  2699.  
  2700. * Many commands did not use the correct working tree location when used
  2701.   with GIT_WORK_TREE environment settings.
  2702.  
  2703. * Some systems needs to use compatibility fnmach and regex libraries
  2704.   independent from each other; the compat/ area has been reorganized to
  2705.   allow this.
  2706.  
  2707.  
  2708. * "git apply --unidiff-zero" incorrectly applied a -U0 patch that inserts
  2709.   a new line before the second line.
  2710.  
  2711. * "git blame -c" did not exactly work like "git annotate" when range
  2712.   boundaries are involved.
  2713.  
  2714. * "git checkout file" when file is still unmerged checked out contents from
  2715.   a random high order stage, which was confusing.
  2716.  
  2717. * "git clone $there $here/" with extra trailing slashes after explicit
  2718.   local directory name $here did not work as expected.
  2719.  
  2720. * "git diff" on tracked contents with CRLF line endings did not drive "less"
  2721.   intelligently when showing added or removed lines.
  2722.  
  2723. * "git diff --dirstat -M" did not add changes in subdirectories up
  2724.   correctly for renamed paths.
  2725.  
  2726. * "git diff --cumulative" did not imply "--dirstat".
  2727.  
  2728. * "git for-each-ref refs/heads/" did not work as expected.
  2729.  
  2730. * "git gui" allowed users to feed patch without any context to be applied.
  2731.  
  2732. * "git gui" botched parsing "diff" output when a line that begins with two
  2733.   dashes and a space gets removed or a line that begins with two pluses
  2734.   and a space gets added.
  2735.  
  2736. * "git gui" translation updates and i18n fixes.
  2737.  
  2738. * "git index-pack" is more careful against disk corruption while completing
  2739.   a thin pack.
  2740.  
  2741. * "git log -i --grep=pattern" did not ignore case; neither "git log -E
  2742.   --grep=pattern" triggered extended regexp.
  2743.  
  2744. * "git log --pretty="%ad" --date=short" did not use short format when
  2745.   showing the timestamp.
  2746.  
  2747. * "git log --author=author" match incorrectly matched with the
  2748.   timestamp part of "author " line in commit objects.
  2749.  
  2750. * "git log -F --author=author" did not work at all.
  2751.  
  2752. * Build procedure for "git shell" that used stub versions of some
  2753.   functions and globals was not understood by linkers on some platforms.
  2754.  
  2755. * "git stash" was fooled by a stat-dirty but otherwise unmodified paths
  2756.   and refused to work until the user refreshed the index.
  2757.  
  2758. * "git svn" was broken on Perl before 5.8 with recent fixes to reduce
  2759.   use of temporary files.
  2760.  
  2761. * "git verify-pack -v" did not work correctly when given more than one
  2762.   packfile.
  2763.  
  2764. Also contains many documentation updates.
  2765.  
  2766. --
  2767. exec >/var/tmp/1
  2768. O=v1.6.0.1-78-g3632cfc
  2769. echo O=$(git describe maint)
  2770. git shortlog --no-merges $O..maint
  2771. GIT v1.6.0.1 Release Notes
  2772. ==========================
  2773.  
  2774. Fixes since v1.6.0
  2775. ------------------
  2776.  
  2777. * "git diff --cc" did not honor content mangling specified by
  2778.   gitattributes and core.autocrlf when reading from the work tree.
  2779.  
  2780. * "git diff --check" incorrectly detected new trailing blank lines when
  2781.   whitespace check was in effect.
  2782.  
  2783. * "git for-each-ref" tried to dereference NULL when asked for '%(body)" on
  2784.   a tag with a single incomplete line as its payload.
  2785.  
  2786. * "git format-patch" peeked before the beginning of a string when
  2787.   "format.headers" variable is empty (a misconfiguration).
  2788.  
  2789. * "git help help" did not work correctly.
  2790.  
  2791. * "git mailinfo" (hence "git am") was unhappy when MIME multipart message
  2792.   contained garbage after the finishing boundary.
  2793.  
  2794. * "git mailinfo" also was unhappy when the "From: " line only had a bare
  2795.   e-mail address.
  2796.  
  2797. * "git merge" did not refresh the index correctly when a merge resulted in
  2798.   a fast-forward.
  2799.  
  2800. * "git merge" did not resolve a truly trivial merges that can be done
  2801.   without content level merges.
  2802.  
  2803. * "git svn dcommit" to a repository with URL that has embedded usernames
  2804.   did not work correctly.
  2805.  
  2806. Contains other various documentation fixes.
  2807. GIT v1.6.0 Release Notes
  2808. ========================
  2809.  
  2810. User visible changes
  2811. --------------------
  2812.  
  2813. With the default Makefile settings, most of the programs are now
  2814. installed outside your $PATH, except for "git", "gitk" and
  2815. some server side programs that need to be accessible for technical
  2816. reasons.  Invoking a git subcommand as "git-xyzzy" from the command
  2817. line has been deprecated since early 2006 (and officially announced in
  2818. 1.5.4 release notes); use of them from your scripts after adding
  2819. output from "git --exec-path" to the $PATH is still supported in this
  2820. release, but users are again strongly encouraged to adjust their
  2821. scripts to use "git xyzzy" form, as we will stop installing
  2822. "git-xyzzy" hardlinks for built-in commands in later releases.
  2823.  
  2824. An earlier change to page "git status" output was overwhelmingly unpopular
  2825. and has been reverted.
  2826.  
  2827. Source changes needed for porting to MinGW environment are now all in the
  2828. main git.git codebase.
  2829.  
  2830. By default, packfiles created with this version uses delta-base-offset
  2831. encoding introduced in v1.4.4.  Pack idx files are using version 2 that
  2832. allows larger packs and added robustness thanks to its CRC checking,
  2833. introduced in v1.5.2 and v1.4.4.5.  If you want to keep your repositories
  2834. backwards compatible past these versions, set repack.useDeltaBaseOffset
  2835. to false or pack.indexVersion to 1, respectively.
  2836.  
  2837. We used to prevent sample hook scripts shipped in templates/ from
  2838. triggering by default by relying on the fact that we install them as
  2839. unexecutable, but on some filesystems, this approach does not work.
  2840. They are now shipped with ".sample" suffix.  If you want to activate
  2841. any of these samples as-is, rename them to drop the ".sample" suffix,
  2842. instead of running "chmod +x" on them.  For example, you can rename
  2843. hooks/post-update.sample to hooks/post-update to enable the sample
  2844. hook that runs update-server-info, in order to make repositories
  2845. friendly to dumb protocols (i.e. HTTP).
  2846.  
  2847. GIT_CONFIG, which was only documented as affecting "git config", but
  2848. actually affected all git commands, now only affects "git config".
  2849. GIT_LOCAL_CONFIG, also only documented as affecting "git config" and
  2850. not different from GIT_CONFIG in a useful way, is removed.
  2851.  
  2852. The ".dotest" temporary area "git am" and "git rebase" use is now moved
  2853. inside the $GIT_DIR, to avoid mistakes of adding it to the project by
  2854. accident.
  2855.  
  2856. An ancient merge strategy "stupid" has been removed.
  2857.  
  2858.  
  2859. Updates since v1.5.6
  2860. --------------------
  2861.  
  2862. (subsystems)
  2863.  
  2864. * git-p4 in contrib learned "allowSubmit" configuration to control on
  2865.   which branch to allow "submit" subcommand.
  2866.  
  2867. * git-gui learned to stage changes per-line.
  2868.  
  2869. (portability)
  2870.  
  2871. * Changes for MinGW port have been merged, thanks to Johannes Sixt and
  2872.   gangs.
  2873.  
  2874. * Sample hook scripts shipped in templates/ are now suffixed with
  2875.   *.sample.
  2876.  
  2877. * perl's in-place edit (-i) does not work well without backup files on Windows;
  2878.   some tests are rewritten to cope with this.
  2879.  
  2880. (documentation)
  2881.  
  2882. * Updated howto/update-hook-example
  2883.  
  2884. * Got rid of usage of "git-foo" from the tutorial and made typography
  2885.   more consistent.
  2886.  
  2887. * Disambiguating "--" between revs and paths is finally documented.
  2888.  
  2889. (performance, robustness, sanity etc.)
  2890.  
  2891. * index-pack used too much memory when dealing with a deep delta chain.
  2892.   This has been optimized.
  2893.  
  2894. * reduced excessive inlining to shrink size of the "git" binary.
  2895.  
  2896. * verify-pack checks the object CRC when using version 2 idx files.
  2897.  
  2898. * When an object is corrupt in a pack, the object became unusable even
  2899.   when the same object is available in a loose form,  We now try harder to
  2900.   fall back to these redundant objects when able.  In particular, "git
  2901.   repack -a -f" can be used to fix such a corruption as long as necessary
  2902.   objects are available.
  2903.  
  2904. * Performance of "git-blame -C -C" operation is vastly improved.
  2905.  
  2906. * git-clone does not create refs in loose form anymore (it behaves as
  2907.   if you immediately ran git-pack-refs after cloning).  This will help
  2908.   repositories with insanely large number of refs.
  2909.  
  2910. * core.fsyncobjectfiles configuration can be used to ensure that the loose
  2911.   objects created will be fsync'ed (this is only useful on filesystems
  2912.   that does not order data writes properly).
  2913.  
  2914. * "git commit-tree" plumbing can make Octopus with more than 16 parents.
  2915.   "git commit" has been capable of this for quite some time.
  2916.  
  2917. (usability, bells and whistles)
  2918.  
  2919. * even more documentation pages are now accessible via "man" and "git help".
  2920.  
  2921. * A new environment variable GIT_CEILING_DIRECTORIES can be used to stop
  2922.   the discovery process of the toplevel of working tree; this may be useful
  2923.   when you are working in a slow network disk and are outside any working tree,
  2924.   as bash-completion and "git help" may still need to run in these places.
  2925.  
  2926. * By default, stash entries never expire.  Set reflogexpire in [gc
  2927.   "refs/stash"] to a reasonable value to get traditional auto-expiration
  2928.   behaviour back
  2929.  
  2930. * Longstanding latency issue with bash completion script has been
  2931.   addressed.  This will need to be backmerged to 'maint' later.
  2932.  
  2933. * pager.<cmd> configuration variable can be used to enable/disable the
  2934.   default paging behaviour per command.
  2935.  
  2936. * "git-add -i" has a new action 'e/dit' to allow you edit the patch hunk
  2937.   manually.
  2938.  
  2939. * git-am records the original tip of the branch in ORIG_HEAD before it
  2940.   starts applying patches.
  2941.  
  2942. * git-apply can handle a patch that touches the same path more than once
  2943.   much better than before.
  2944.  
  2945. * git-apply can be told not to trust the line counts recorded in the input
  2946.   patch but recount, with the new --recount option.
  2947.  
  2948. * git-apply can be told to apply a patch to a path deeper than what the
  2949.   patch records with --directory option.
  2950.  
  2951. * git-archive can be told to omit certain paths from its output using
  2952.   export-ignore attributes.
  2953.  
  2954. * git-archive uses the zlib default compression level when creating
  2955.   zip archive.
  2956.  
  2957. * git-archive's command line options --exec and --remote can take their
  2958.   parameters as separate command line arguments, similar to other commands.
  2959.   IOW, both "--exec=path" and "--exec path" are now supported.
  2960.  
  2961. * With -v option, git-branch describes the remote tracking statistics
  2962.   similar to the way git-checkout reports by how many commits your branch
  2963.   is ahead/behind.
  2964.  
  2965. * git-branch's --contains option used to always require a commit parameter
  2966.   to limit the branches with; it now defaults to list branches that
  2967.   contains HEAD if this parameter is omitted.
  2968.  
  2969. * git-branch's --merged and --no-merged option used to always limit the
  2970.   branches relative to the HEAD, but they can now take an optional commit
  2971.   argument that is used in place of HEAD.
  2972.  
  2973. * git-bundle can read the revision arguments from the standard input.
  2974.  
  2975. * git-cherry-pick can replay a root commit now.
  2976.  
  2977. * git-clone can clone from a remote whose URL would be rewritten by
  2978.   configuration stored in $HOME/.gitconfig now.
  2979.  
  2980. * "git-clone --mirror" is a handy way to set up a bare mirror repository.
  2981.  
  2982. * git-cvsserver learned to respond to "cvs co -c".
  2983.  
  2984. * git-diff --check now checks leftover merge conflict markers.
  2985.  
  2986. * "git-diff -p" learned to grab a better hunk header lines in
  2987.   BibTex, Pascal/Delphi, and Ruby files and also pays attention to
  2988.   chapter and part boundary in TeX documents.
  2989.  
  2990. * When remote side used to have branch 'foo' and git-fetch finds that now
  2991.   it has branch 'foo/bar', it refuses to lose the existing remote tracking
  2992.   branch and its reflog.  The error message has been improved to suggest
  2993.   pruning the remote if the user wants to proceed and get the latest set
  2994.   of branches from the remote, including such 'foo/bar'.
  2995.  
  2996. * fast-export learned to export and import marks file; this can be used to
  2997.   interface with fast-import incrementally.
  2998.  
  2999. * fast-import and fast-export learned to export and import gitlinks.
  3000.  
  3001. * "gitk" left background process behind after being asked to dig very deep
  3002.   history and the user killed the UI; the process is killed when the UI goes
  3003.   away now.
  3004.  
  3005. * git-rebase records the original tip of branch in ORIG_HEAD before it is
  3006.   rewound.
  3007.  
  3008. * "git rerere" can be told to update the index with auto-reused resolution
  3009.   with rerere.autoupdate configuration variable.
  3010.  
  3011. * git-rev-parse learned $commit^! and $commit^@ notations used in "log"
  3012.   family.  These notations are available in gitk as well, because the gitk
  3013.   command internally uses rev-parse to interpret its arguments.
  3014.  
  3015. * git-rev-list learned --children option to show child commits it
  3016.   encountered during the traversal, instead of showing parent commits.
  3017.  
  3018. * git-send-mail can talk not just over SSL but over TLS now.
  3019.  
  3020. * git-shortlog honors custom output format specified with "--pretty=format:".
  3021.  
  3022. * "git-stash save" learned --keep-index option.  This lets you stash away the
  3023.   local changes and bring the changes staged in the index to your working
  3024.   tree for examination and testing.
  3025.  
  3026. * git-stash also learned branch subcommand to create a new branch out of
  3027.   stashed changes.
  3028.  
  3029. * git-status gives the remote tracking statistics similar to the way
  3030.   git-checkout reports by how many commits your branch is ahead/behind.
  3031.  
  3032. * "git-svn dcommit" is now aware of auto-props setting the subversion user
  3033.   has.
  3034.  
  3035. * You can tell "git status -u" to even more aggressively omit checking
  3036.   untracked files with --untracked-files=no.
  3037.  
  3038. * Original SHA-1 value for "update-ref -d" is optional now.
  3039.  
  3040. * Error codes from gitweb are made more descriptive where possible, rather
  3041.   than "403 forbidden" as we used to issue everywhere.
  3042.  
  3043. (internal)
  3044.  
  3045. * git-merge has been reimplemented in C.
  3046.  
  3047.  
  3048. Fixes since v1.5.6
  3049. ------------------
  3050.  
  3051. All of the fixes in v1.5.6 maintenance series are included in
  3052. this release, unless otherwise noted.
  3053.  
  3054.  * git-clone ignored its -u option; the fix needs to be backported to
  3055.    'maint';
  3056.  
  3057.  * git-mv used to lose the distinction between changes that are staged
  3058.    and that are only in the working tree, by staging both in the index
  3059.    after moving such a path.
  3060.  
  3061.  * "git-rebase -i -p" rewrote the parents to wrong ones when amending
  3062.    (either edit or squash) was involved, and did not work correctly
  3063.    when fast forwarding.
  3064.  
  3065. GIT v1.5.6.6 Release Notes
  3066. ==========================
  3067.  
  3068. Fixes since 1.5.6.5
  3069. -------------------
  3070.  
  3071.  * Removed support for an obsolete gitweb request URI, whose
  3072.    implementation ran "git diff" Porcelain, instead of using plumbing,
  3073.    which would have run an external diff command specified in the
  3074.    repository configuration as the gitweb user.
  3075. GIT v1.5.6.5 Release Notes
  3076. ==========================
  3077.  
  3078. Fixes since v1.5.6.4
  3079. --------------------
  3080.  
  3081. * "git cvsimport" used to spit out "UNKNOWN LINE..." diagnostics to stdout.
  3082.  
  3083. * "git commit -F filename" and "git tag -F filename" run from subdirectories
  3084.   did not read the right file.
  3085.  
  3086. * "git init --template=" with blank "template" parameter linked files
  3087.   under root directories to .git, which was a total nonsense.  Instead, it
  3088.   means "I do not want to use anything from the template directory".
  3089.  
  3090. * "git diff-tree" and other diff plumbing ignored diff.renamelimit configuration
  3091.   variable when the user explicitly asked for rename detection.
  3092.  
  3093. * "git name-rev --name-only" did not work when "--stdin" option was in effect.
  3094.  
  3095. * "git show-branch" mishandled its 8th branch.
  3096.  
  3097. * Addition of "git update-index --ignore-submodules" that happened during
  3098.   1.5.6 cycle broke "git update-index --ignore-missing".
  3099.  
  3100. * "git send-email" did not parse charset from an existing Content-type:
  3101.   header properly.
  3102.  
  3103. Contains other various documentation fixes.
  3104. GIT v1.5.6.4 Release Notes
  3105. ==========================
  3106.  
  3107. Fixes since v1.5.6.3
  3108. --------------------
  3109.  
  3110. * Various commands could overflow its internal buffer on a platform
  3111.   with small PATH_MAX value in a repository that has contents with
  3112.   long pathnames.
  3113.  
  3114. * There wasn't a way to make --pretty=format:%<> specifiers to honor
  3115.   .mailmap name rewriting for authors and committers.  Now you can with
  3116.   %aN and %cN.
  3117.  
  3118. * Bash completion wasted too many cycles; this has been optimized to be
  3119.   usable again.
  3120.  
  3121. * Bash completion lost ref part when completing something like "git show
  3122.   pu:Makefile".
  3123.  
  3124. * "git-cvsserver" did not clean up its temporary working area after annotate
  3125.   request.
  3126.  
  3127. * "git-daemon" called syslog() from its signal handler, which was a
  3128.   no-no.
  3129.  
  3130. * "git-fetch" into an empty repository used to remind that the fetch will
  3131.    be huge by saying "no common commits", but this was an unnecessary
  3132.    noise; it is already known by the user anyway.
  3133.  
  3134. * "git-http-fetch" would have segfaulted when pack idx file retrieved
  3135.   from the other side was corrupt.
  3136.  
  3137. * "git-index-pack" used too much memory when dealing with a deep delta chain.
  3138.  
  3139. * "git-mailinfo" (hence "git-am") did not correctly handle in-body [PATCH]
  3140.   line to override the commit title taken from the mail Subject header.
  3141.  
  3142. * "git-rebase -i -p" lost parents that are not involved in the history
  3143.   being rewritten.
  3144.  
  3145. * "git-rm" lost track of where the index file was when GIT_DIR was
  3146.   specified as a relative path.
  3147.  
  3148. * "git-rev-list --quiet" was not quiet as advertised.
  3149.  
  3150. Contains other various documentation fixes.
  3151. GIT v1.5.6.3 Release Notes
  3152. ==========================
  3153.  
  3154. Fixes since v1.5.6.2
  3155. --------------------
  3156.  
  3157. * Setting core.sharerepository to traditional "true" value was supposed to make
  3158.   the repository group writable but should not affect permission for others.
  3159.   However, since 1.5.6, it was broken to drop permission for others when umask is
  3160.   022, making the repository unreadable by others.
  3161.  
  3162. * Setting GIT_TRACE will report spawning of external process via run_command().
  3163.  
  3164. * Using an object with very deep delta chain pinned memory needed for extracting
  3165.   intermediate base objects unnecessarily long, leading to excess memory usage.
  3166.  
  3167. * Bash completion script did not notice '--' marker on the command
  3168.   line and tried the relatively slow "ref completion" even when
  3169.   completing arguments after one.
  3170.  
  3171. * Registering a non-empty blob racily and then truncating the working
  3172.   tree file for it confused "racy-git avoidance" logic into thinking
  3173.   that the path is now unchanged.
  3174.  
  3175. * The section that describes attributes related to git-archive were placed
  3176.   in a wrong place in the gitattributes(5) manual page.
  3177.  
  3178. * "git am" was not helpful to the users when it detected that the committer
  3179.   information is not set up properly yet.
  3180.  
  3181. * "git clone" had a leftover debugging fprintf().
  3182.  
  3183. * "git clone -q" was not quiet enough as it used to and gave object count
  3184.   and progress reports.
  3185.  
  3186. * "git clone" marked downloaded packfile with .keep; this could be a
  3187.   good thing if the remote side is well packed but otherwise not,
  3188.   especially for a project that is not really big.
  3189.  
  3190. * "git daemon" used to call syslog() from a signal handler, which
  3191.   could raise signals of its own but generally is not reentrant.  This
  3192.   was fixed by restructuring the code to report syslog() after the handler
  3193.   returns.
  3194.  
  3195. * When "git push" tries to remove a remote ref, and corresponding
  3196.   tracking ref is missing, we used to report error (i.e. failure to
  3197.   remove something that does not exist).
  3198.  
  3199. * "git mailinfo" (hence "git am") did not handle commit log messages in a
  3200.   MIME multipart mail correctly.
  3201.  
  3202. Contains other various documentation fixes.
  3203. GIT v1.5.6.2 Release Notes
  3204. ==========================
  3205.  
  3206. Futureproof
  3207. -----------
  3208.  
  3209.  * "git-shell" accepts requests without a dash between "git" and
  3210.    subcommand name (e.g. "git upload-pack") which the newer client will
  3211.    start to make sometime in the future.
  3212.  
  3213. Fixes since v1.5.6.1
  3214. --------------------
  3215.  
  3216. * "git clone" from a remote that is named with url.insteadOf setting in
  3217.   $HOME/.gitconfig did not work well.
  3218.  
  3219. * "git describe --long --tags" segfaulted when the described revision was
  3220.   tagged with a lightweight tag.
  3221.  
  3222. * "git diff --check" did not report the result via its exit status
  3223.   reliably.
  3224.  
  3225. * When remote side used to have branch 'foo' and git-fetch finds that now
  3226.   it has branch 'foo/bar', it refuses to lose the existing remote tracking
  3227.   branch and its reflog.  The error message has been improved to suggest
  3228.   pruning the remote if the user wants to proceed and get the latest set
  3229.   of branches from the remote, including such 'foo/bar'.
  3230.  
  3231. * "git reset file" should mean the same thing as "git reset HEAD file",
  3232.   but we required disambiguating -- even when "file" is not ambiguous.
  3233.  
  3234. * "git show" segfaulted when an annotated tag that points at another
  3235.   annotated tag was given to it.
  3236.  
  3237. * Optimization for a large import via "git-svn" introduced in v1.5.6 had a
  3238.   serious memory and temporary file leak, which made it unusable for
  3239.   moderately large import.
  3240.  
  3241. * "git-svn" mangled remote nickname used in the configuration file
  3242.   unnecessarily.
  3243. GIT v1.5.6.1 Release Notes
  3244. ==========================
  3245.  
  3246. Fixes since v1.5.6
  3247. ------------------
  3248.  
  3249. * Last minute change broke loose object creation on AIX.
  3250.  
  3251. * (performance fix) We used to make $GIT_DIR absolute path early in the
  3252.   programs but keeping it relative to the current directory internally
  3253.   gives 1-3 per-cent performance boost.
  3254.  
  3255. * bash completion knows the new --graph option to git-log family.
  3256.  
  3257.  
  3258. * git-diff -c/--cc showed unnecessary "deletion" lines at the context
  3259.   boundary.
  3260.  
  3261. * git-for-each-ref ignored %(object) and %(type) requests for tag
  3262.   objects.
  3263.  
  3264. * git-merge usage had a typo.
  3265.  
  3266. * Rebuilding of git-svn metainfo database did not take rewriteRoot
  3267.   option into account.
  3268.  
  3269. * Running "git-rebase --continue/--skip/--abort" before starting a
  3270.   rebase gave nonsense error messages.
  3271. GIT v1.5.6 Release Notes
  3272. ========================
  3273.  
  3274. Updates since v1.5.5
  3275. --------------------
  3276.  
  3277. (subsystems)
  3278.  
  3279. * Comes with updated gitk and git-gui.
  3280.  
  3281. (portability)
  3282.  
  3283. * git will build on AIX better than before now.
  3284.  
  3285. * core.ignorecase configuration variable can be used to work better on
  3286.   filesystems that are not case sensitive.
  3287.  
  3288. * "git init" now autodetects the case sensitivity of the filesystem and
  3289.   sets core.ignorecase accordingly.
  3290.  
  3291. * cpio is no longer used; neither "curl" binary (libcurl is still used).
  3292.  
  3293. (documentation)
  3294.  
  3295. * Many freestanding documentation pages have been converted and made
  3296.   available to "git help" (aka "man git<something>") as section 7 of
  3297.   the manual pages. This means bookmarks to some HTML documentation
  3298.   files may need to be updated (eg "tutorial.html" became
  3299.   "gittutorial.html").
  3300.  
  3301. (performance)
  3302.  
  3303. * "git clone" was rewritten in C.  This will hopefully help cloning a
  3304.   repository with insane number of refs.
  3305.  
  3306. * "git rebase --onto $there $from $branch" used to switch to the tip of
  3307.   $branch only to immediately reset back to $from, smudging work tree
  3308.   files unnecessarily.  This has been optimized.
  3309.  
  3310. * Object creation codepath in "git-svn" has been optimized by enhancing
  3311.   plumbing commands git-cat-file and git-hash-object.
  3312.  
  3313. (usability, bells and whistles)
  3314.  
  3315. * "git add -p" (and the "patch" subcommand of "git add -i") can choose to
  3316.   apply (or not apply) mode changes independently from contents changes.
  3317.  
  3318. * "git bisect help" gives longer and more helpful usage information.
  3319.  
  3320. * "git bisect" does not use a special branch "bisect" anymore; instead, it
  3321.   does its work on a detached HEAD.
  3322.  
  3323. * "git branch" (and "git checkout -b") can be told to set up
  3324.   branch.<name>.rebase automatically, so that later you can say "git pull"
  3325.   and magically cause "git pull --rebase" to happen.
  3326.  
  3327. * "git branch --merged" and "git branch --no-merged" can be used to list
  3328.   branches that have already been merged (or not yet merged) to the
  3329.   current branch.
  3330.  
  3331. * "git cherry-pick" and "git revert" can add a sign-off.
  3332.  
  3333. * "git commit" mentions the author identity when you are committing
  3334.   somebody else's changes.
  3335.  
  3336. * "git diff/log --dirstat" output is consistent between binary and textual
  3337.   changes.
  3338.  
  3339. * "git filter-branch" rewrites signed tags by demoting them to annotated.
  3340.  
  3341. * "git format-patch --no-binary" can produce a patch that lack binary
  3342.   changes (i.e. cannot be used to propagate the whole changes) meant only
  3343.   for reviewing.
  3344.  
  3345. * "git init --bare" is a synonym for "git --bare init" now.
  3346.  
  3347. * "git gc --auto" honors a new pre-auto-gc hook to temporarily disable it.
  3348.  
  3349. * "git log --pretty=tformat:<custom format>" gives a LF after each entry,
  3350.   instead of giving a LF between each pair of entries which is how
  3351.   "git log --pretty=format:<custom format>" works.
  3352.  
  3353. * "git log" and friends learned the "--graph" option to show the ancestry
  3354.   graph at the left margin of the output.
  3355.  
  3356. * "git log" and friends can be told to use date format that is different
  3357.   from the default via 'log.date' configuration variable.
  3358.  
  3359. * "git send-email" now can send out messages outside a git repository.
  3360.  
  3361. * "git send-email --compose" was made aware of rfc2047 quoting.
  3362.  
  3363. * "git status" can optionally include output from "git submodule
  3364.   summary".
  3365.  
  3366. * "git svn" learned --add-author-from option to propagate the authorship
  3367.   by munging the commit log message.
  3368.  
  3369. * new object creation and looking up in "git svn" has been optimized.
  3370.  
  3371. * "gitweb" can read from a system-wide configuration file.
  3372.  
  3373. (internal)
  3374.  
  3375. * "git unpack-objects" and "git receive-pack" is now more strict about
  3376.   detecting breakage in the objects they receive over the wire.
  3377.  
  3378.  
  3379. Fixes since v1.5.5
  3380. ------------------
  3381.  
  3382. All of the fixes in v1.5.5 maintenance series are included in
  3383. this release, unless otherwise noted.
  3384.  
  3385. And there are too numerous small fixes to otherwise note here ;-)
  3386. GIT v1.5.5.6 Release Notes
  3387. ==========================
  3388.  
  3389. Fixes since 1.5.5.5
  3390. -------------------
  3391.  
  3392.  * Removed support for an obsolete gitweb request URI, whose
  3393.    implementation ran "git diff" Porcelain, instead of using plumbing,
  3394.    which would have run an external diff command specified in the
  3395.    repository configuration as the gitweb user.
  3396. GIT v1.5.5.5 Release Notes
  3397. ==========================
  3398.  
  3399. I personally do not think there is any reason anybody should want to
  3400. run v1.5.5.X series these days, because 'master' version is always
  3401. more stable than any tagged released version of git.
  3402.  
  3403. This is primarily to futureproof "git-shell" to accept requests
  3404. without a dash between "git" and subcommand name (e.g. "git
  3405. upload-pack") which the newer client will start to make sometime in
  3406. the future.
  3407. GIT v1.5.5.4 Release Notes
  3408. ==========================
  3409.  
  3410. Fixes since v1.5.5.4
  3411. --------------------
  3412.  
  3413.  * "git name-rev --all" used to segfault.
  3414. GIT v1.5.5.3 Release Notes
  3415. ==========================
  3416.  
  3417. Fixes since v1.5.5.2
  3418. --------------------
  3419.  
  3420.  * "git send-email --compose" did not notice that non-ascii contents
  3421.    needed some MIME magic.
  3422.  
  3423.  * "git fast-export" did not export octopus merges correctly.
  3424.  
  3425. Also comes with various documentation updates.
  3426. GIT v1.5.5.2 Release Notes
  3427. ==========================
  3428.  
  3429. Fixes since v1.5.5.1
  3430. --------------------
  3431.  
  3432.  * "git repack -n" was mistakenly made no-op earlier.
  3433.  
  3434.  * "git imap-send" wanted to always have imap.host even when use of
  3435.    imap.tunnel made it unnecessary.
  3436.  
  3437.  * reflog syntax that uses time e.g. "HEAD@{10 seconds ago}:path" did not
  3438.    stop parsing at the closing "}".
  3439.  
  3440.  * "git rev-parse --symbolic-full-name ^master^2" printed solitary "^",
  3441.    but it should print nothing.
  3442.  
  3443.  * "git commit" did not detect when it failed to write tree objects.
  3444.  
  3445.  * "git fetch" sometimes transferred too many objects unnecessarily.
  3446.  
  3447.  * a path specification "a/b" in .gitattributes file should not match
  3448.    "sub/a/b".
  3449.  
  3450.  * various gitweb fixes.
  3451.  
  3452. Also comes with various documentation updates.
  3453. GIT v1.5.5.1 Release Notes
  3454. ==========================
  3455.  
  3456. Fixes since v1.5.5
  3457. ------------------
  3458.  
  3459.  * "git archive --prefix=$path/" mishandled gitattributes.
  3460.  
  3461.  * "git fetch -v" that fetches into FETCH_HEAD did not report the summary
  3462.    the same way as done for updating the tracking refs.
  3463.  
  3464.  * "git svn" misbehaved when the configuration file customized the "git
  3465.    log" output format using format.pretty.
  3466.  
  3467.  * "git submodule status" leaked an unnecessary error message.
  3468.  
  3469.  * "git log --date-order --topo-order" did not override the earlier
  3470.    date-order with topo-order as expected.
  3471.  
  3472.  * "git bisect good $this" did not check the validity of the revision
  3473.    given properly.
  3474.  
  3475.  * "url.<there>.insteadOf" did not work correctly.
  3476.  
  3477.  * "git clean" ran inside subdirectory behaved as if the directory was
  3478.    explicitly specified for removal by the end user from the top level.
  3479.  
  3480.  * "git bisect" from a detached head leaked an unnecessary error message.
  3481.  
  3482.  * "git bisect good $a $b" when $a is Ok but $b is bogus should have
  3483.    atomically failed before marking $a as good.
  3484.  
  3485.  * "git fmt-merge-msg" did not clean up leading empty lines from commit
  3486.    log messages like "git log" family does.
  3487.  
  3488.  * "git am" recorded a commit with empty Subject: line without
  3489.    complaining.
  3490.  
  3491.  * when given a commit log message whose first paragraph consists of
  3492.    multiple lines, "git rebase" squashed it into a single line.
  3493.  
  3494.  * "git remote add $bogus_name $url" did not complain properly.
  3495.  
  3496. Also comes with various documentation updates.
  3497. GIT v1.5.5 Release Notes
  3498. ========================
  3499.  
  3500. Updates since v1.5.4
  3501. --------------------
  3502.  
  3503. (subsystems)
  3504.  
  3505.  * Comes with git-gui 0.10.1
  3506.  
  3507. (portability)
  3508.  
  3509.  * We shouldn't ask for BSD group ownership semantics by setting g+s bit
  3510.    on directories on older BSD systems that refuses chmod() by non root
  3511.    users.  BSD semantics is the default there anyway.
  3512.  
  3513.  * Bunch of portability improvement patches coming from an effort to port
  3514.    to Solaris has been applied.
  3515.  
  3516. (performance)
  3517.  
  3518.  * On platforms with suboptimal qsort(3) implementation, there
  3519.    is an option to use more reasonable substitute we ship with
  3520.    our software.
  3521.  
  3522.  * New configuration variable "pack.packsizelimit" can be used
  3523.    in place of command line option --max-pack-size.
  3524.  
  3525.  * "git fetch" over the native git protocol used to make a
  3526.    connection to find out the set of current remote refs and
  3527.    another to actually download the pack data.  We now use only
  3528.    one connection for these tasks.
  3529.  
  3530.  * "git commit" does not run lstat(2) more than necessary
  3531.    anymore.
  3532.  
  3533. (usability, bells and whistles)
  3534.  
  3535.  * Bash completion script (in contrib) are aware of more commands and
  3536.    options.
  3537.  
  3538.  * You can be warned when core.autocrlf conversion is applied in
  3539.    such a way that results in an irreversible conversion.
  3540.  
  3541.  * A catch-all "color.ui" configuration variable can be used to
  3542.    enable coloring of all color-capable commands, instead of
  3543.    individual ones such as "color.status" and "color.branch".
  3544.  
  3545.  * The commands refused to take absolute pathnames where they
  3546.    require pathnames relative to the work tree or the current
  3547.    subdirectory.  They now can take absolute pathnames in such a
  3548.    case as long as the pathnames do not refer outside of the
  3549.    work tree.  E.g. "git add $(pwd)/foo" now works.
  3550.  
  3551.  * Error messages used to be sent to stderr, only to get hidden,
  3552.    when $PAGER was in use.  They now are sent to stdout along
  3553.    with the command output to be shown in the $PAGER.
  3554.  
  3555.  * A pattern "foo/" in .gitignore file now matches a directory
  3556.    "foo".  Pattern "foo" also matches as before.
  3557.  
  3558.  * bash completion's prompt helper function can talk about
  3559.    operation in-progress (e.g. merge, rebase, etc.).
  3560.  
  3561.  * Configuration variables "url.<usethis>.insteadof = <otherurl>" can be
  3562.    used to tell "git-fetch" and "git-push" to use different URL than what
  3563.    is given from the command line.
  3564.  
  3565.  * "git add -i" behaves better even before you make an initial commit.
  3566.  
  3567.  * "git am" refused to run from a subdirectory without a good reason.
  3568.  
  3569.  * After "git apply --whitespace=fix" fixes whitespace errors in a patch,
  3570.    a line before the fix can appear as a context or preimage line in a
  3571.    later patch, causing the patch not to apply.  The command now knows to
  3572.    see through whitespace fixes done to context lines to successfully
  3573.    apply such a patch series.
  3574.  
  3575.  * "git branch" (and "git checkout -b") to branch from a local branch can
  3576.    optionally set "branch.<name>.merge" to mark the new branch to build on
  3577.    the other local branch, when "branch.autosetupmerge" is set to
  3578.    "always", or when passing the command line option "--track" (this option
  3579.    was ignored when branching from local branches).  By default, this does
  3580.    not happen when branching from a local branch.
  3581.  
  3582.  * "git checkout" to switch to a branch that has "branch.<name>.merge" set
  3583.    (i.e. marked to build on another branch) reports how much the branch
  3584.    and the other branch diverged.
  3585.  
  3586.  * When "git checkout" has to update a lot of paths, it used to be silent
  3587.    for 4 seconds before it showed any progress report.  It is now a bit
  3588.    more impatient and starts showing progress report early.
  3589.  
  3590.  * "git commit" learned a new hook "prepare-commit-msg" that can
  3591.    inspect what is going to be committed and prepare the commit
  3592.    log message template to be edited.
  3593.  
  3594.  * "git cvsimport" can now take more than one -M options.
  3595.  
  3596.  * "git describe" learned to limit the tags to be used for
  3597.    naming with --match option.
  3598.  
  3599.  * "git describe --contains" now barfs when the named commit
  3600.    cannot be described.
  3601.  
  3602.  * "git describe --exact-match" describes only commits that are tagged.
  3603.  
  3604.  * "git describe --long" describes a tagged commit as $tag-0-$sha1,
  3605.    instead of just showing the exact tagname.
  3606.  
  3607.  * "git describe" warns when using a tag whose name and path contradict
  3608.    with each other.
  3609.  
  3610.  * "git diff" learned "--relative" option to limit and output paths
  3611.    relative to the current directory when working in a subdirectory.
  3612.  
  3613.  * "git diff" learned "--dirstat" option to show birds-eye-summary of
  3614.    changes more concisely than "--diffstat".
  3615.  
  3616.  * "git format-patch" learned --cover-letter option to generate a cover
  3617.    letter template.
  3618.  
  3619.  * "git gc" learned --quiet option.
  3620.  
  3621.  * "git gc" now automatically prunes unreachable objects that are two
  3622.    weeks old or older.
  3623.  
  3624.  * "git gc --auto" can be disabled more easily by just setting gc.auto
  3625.    to zero.  It also tolerates more packfiles by default.
  3626.  
  3627.  * "git grep" now knows "--name-only" is a synonym for the "-l" option.
  3628.  
  3629.  * "git help <alias>" now reports "'git <alias>' is alias to <what>",
  3630.    instead of saying "No manual entry for git-<alias>".
  3631.  
  3632.  * "git help" can use different backends to show manual pages and this can
  3633.    be configured using "man.viewer" configuration.
  3634.  
  3635.  * "gitk" does not restore window position from $HOME/.gitk anymore (it
  3636.    still restores the size).
  3637.  
  3638.  * "git log --grep=<what>" learned "--fixed-strings" option to look for
  3639.    <what> without treating it as a regular expression.
  3640.  
  3641.  * "git gui" learned an auto-spell checking.
  3642.  
  3643.  * "git push <somewhere> HEAD" and "git push <somewhere> +HEAD" works as
  3644.    expected; they push the current branch (and only the current branch).
  3645.    In addition, HEAD can be written as the value of "remote.<there>.push"
  3646.    configuration variable.
  3647.  
  3648.  * When the configuration variable "pack.threads" is set to 0, "git
  3649.    repack" auto detects the number of CPUs and uses that many threads.
  3650.  
  3651.  * "git send-email" learned to prompt for passwords
  3652.    interactively.
  3653.  
  3654.  * "git send-email" learned an easier way to suppress CC
  3655.    recipients.
  3656.  
  3657.  * "git stash" learned "pop" command, that applies the latest stash and
  3658.    removes it from the stash, and "drop" command to discard the named
  3659.    stash entry.
  3660.  
  3661.  * "git submodule" learned a new subcommand "summary" to show the
  3662.    symmetric difference between the HEAD version and the work tree version
  3663.    of the submodule commits.
  3664.  
  3665.  * Various "git cvsimport", "git cvsexportcommit", "git cvsserver",
  3666.    "git svn" and "git p4" improvements.
  3667.  
  3668. (internal)
  3669.  
  3670.  * Duplicated code between git-help and git-instaweb that
  3671.    launches user's preferred browser has been refactored.
  3672.  
  3673.  * It is now easier to write test scripts that records known
  3674.    breakages.
  3675.  
  3676.  * "git checkout" is rewritten in C.
  3677.  
  3678.  * "git remote" is rewritten in C.
  3679.  
  3680.  * Two conflict hunks that are separated by a very short span of common
  3681.    lines are now coalesced into one larger hunk, to make the result easier
  3682.    to read.
  3683.  
  3684.  * Run-command API's use of file descriptors is documented clearer and
  3685.    is more consistent now.
  3686.  
  3687.  * diff output can be sent to FILE * that is different from stdout.  This
  3688.    will help reimplementing more things in C.
  3689.  
  3690. Fixes since v1.5.4
  3691. ------------------
  3692.  
  3693. All of the fixes in v1.5.4 maintenance series are included in
  3694. this release, unless otherwise noted.
  3695.  
  3696.  * "git-http-push" did not allow deletion of remote ref with the usual
  3697.    "push <remote> :<branch>" syntax.
  3698.  
  3699.  * "git-rebase --abort" did not go back to the right location if
  3700.    "git-reset" was run during the "git-rebase" session.
  3701.  
  3702.  * "git imap-send" without setting imap.host did not error out but
  3703.    segfaulted.
  3704. GIT v1.5.4.7 Release Notes
  3705. ==========================
  3706.  
  3707. Fixes since 1.5.4.7
  3708. -------------------
  3709.  
  3710.  * Removed support for an obsolete gitweb request URI, whose
  3711.    implementation ran "git diff" Porcelain, instead of using plumbing,
  3712.    which would have run an external diff command specified in the
  3713.    repository configuration as the gitweb user.
  3714. GIT v1.5.4.6 Release Notes
  3715. ==========================
  3716.  
  3717. I personally do not think there is any reason anybody should want to
  3718. run v1.5.4.X series these days, because 'master' version is always
  3719. more stable than any tagged released version of git.
  3720.  
  3721. This is primarily to futureproof "git-shell" to accept requests
  3722. without a dash between "git" and subcommand name (e.g. "git
  3723. upload-pack") which the newer client will start to make sometime in
  3724. the future.
  3725.  
  3726. Fixes since v1.5.4.5
  3727. --------------------
  3728.  
  3729.  * Command line option "-n" to "git-repack" was not correctly parsed.
  3730.  
  3731.  * Error messages from "git-apply" when the patchfile cannot be opened
  3732.    have been improved.
  3733.  
  3734.  * Error messages from "git-bisect" when given nonsense revisions have
  3735.    been improved.
  3736.  
  3737.  * reflog syntax that uses time e.g. "HEAD@{10 seconds ago}:path" did not
  3738.    stop parsing at the closing "}".
  3739.  
  3740.  * "git rev-parse --symbolic-full-name ^master^2" printed solitary "^",
  3741.    but it should print nothing.
  3742.  
  3743.  * "git apply" did not enforce "match at the beginning" correctly.
  3744.  
  3745.  * a path specification "a/b" in .gitattributes file should not match
  3746.    "sub/a/b", but it did.
  3747.  
  3748.  * "git log --date-order --topo-order" did not override the earlier
  3749.    date-order with topo-order as expected.
  3750.  
  3751.  * "git fast-export" did not export octopus merges correctly.
  3752.  
  3753.  * "git archive --prefix=$path/" mishandled gitattributes.
  3754.  
  3755. As usual, it also comes with many documentation fixes and clarifications.
  3756.  
  3757. GIT v1.5.4.5 Release Notes
  3758. ==========================
  3759.  
  3760. Fixes since v1.5.4.4
  3761. --------------------
  3762.  
  3763.  * "git fetch there" when the URL information came from the Cogito style
  3764.    branches/there file did not update refs/heads/there (regression in
  3765.    1.5.4).
  3766.  
  3767.  * Bogus refspec configuration such as "remote.there.fetch = =" were not
  3768.    detected as errors (regression in 1.5.4).
  3769.  
  3770.  * You couldn't specify a custom editor whose path contains a whitespace
  3771.    via GIT_EDITOR (and core.editor).
  3772.  
  3773.  * The subdirectory filter to "git filter-branch" mishandled a history
  3774.    where the subdirectory becomes empty and then later becomes non-empty.
  3775.  
  3776.  * "git shortlog" gave an empty line if the original commit message was
  3777.    malformed (e.g. a botched import from foreign SCM).  Now it finds the
  3778.    first non-empty line and uses it for better information.
  3779.  
  3780.  * When the user fails to give a revision parameter to "git svn", an error
  3781.    from the Perl interpreter was issued because the script lacked proper
  3782.    error checking.
  3783.  
  3784.  * After "git rebase" stopped due to conflicts, if the user played with
  3785.    "git reset" and friends, "git rebase --abort" failed to go back to the
  3786.    correct commit.
  3787.  
  3788.  * Additional work trees prepared with git-new-workdir (in contrib/) did
  3789.    not share git-svn metadata directory .git/svn with the original.
  3790.  
  3791.  * "git-merge-recursive" did not mark addition of the same path with
  3792.    different filemodes correctly as a conflict.
  3793.  
  3794.  * "gitweb" gave malformed URL when pathinfo stype paths are in use.
  3795.  
  3796.  * "-n" stands for "--no-tags" again for "git fetch".
  3797.  
  3798.  * "git format-patch" did not detect the need to add 8-bit MIME header
  3799.    when the user used format.header configuration.
  3800.  
  3801.  * "rev~" revision specifier used to mean "rev", which was inconsistent
  3802.    with how "rev^" worked.  Now "rev~" is the same as "rev~1" (hence it
  3803.    also is the same as "rev^1"), and "rev~0" is the same as "rev^0"
  3804.    (i.e. it has to be a commit).
  3805.  
  3806.  * "git quiltimport" did not grok empty lines, lines in "file -pNNN"
  3807.    format to specify the prefix levels and lines with trailing comments.
  3808.  
  3809.  * "git rebase -m" triggered pre-commit verification, which made
  3810.    "rebase --continue" impossible.
  3811.  
  3812. As usual, it also comes with many documentation fixes and clarifications.
  3813. GIT v1.5.4.4 Release Notes
  3814. ==========================
  3815.  
  3816. Fixes since v1.5.4.3
  3817. --------------------
  3818.  
  3819.  * Building and installing with an overtight umask such as 077 made
  3820.    installed templates unreadable by others, while the rest of the install
  3821.    are done in a way that is friendly to umask 022.
  3822.  
  3823.  * "git cvsexportcommit -w $cvsdir" misbehaved when GIT_DIR is set to a
  3824.    relative directory.
  3825.  
  3826.  * "git http-push" had an invalid memory access that could lead it to
  3827.    segfault.
  3828.  
  3829.  * When "git rebase -i" gave control back to the user for a commit that is
  3830.    marked to be edited, it just said "modify it with commit --amend",
  3831.    without saying what to do to continue after modifying it.  Give an
  3832.    explicit instruction to run "rebase --continue" to be more helpful.
  3833.  
  3834.  * "git send-email" in 1.5.4.3 issued a bogus empty In-Reply-To: header.
  3835.  
  3836.  * "git bisect" showed mysterious "won't bisect on seeked tree" error message.
  3837.    This was leftover from Cogito days to prevent "bisect" starting from a
  3838.    cg-seeked state.  We still keep the Cogito safety, but running "git bisect
  3839.    start" when another bisect was in effect will clean up and start over.
  3840.  
  3841.  * "git push" with an explicit PATH to receive-pack did not quite work if
  3842.    receive-pack was not on usual PATH.  We earlier fixed the same issue
  3843.    with "git fetch" and upload-pack, but somehow forgot to do so in the
  3844.    other direction.
  3845.  
  3846.  * git-gui's info dialog was not displayed correctly when the user tries
  3847.    to commit nothing (i.e. without staging anything).
  3848.  
  3849.  * "git revert" did not properly fail when attempting to run with a
  3850.    dirty index.
  3851.  
  3852.  * "git merge --no-commit --no-ff <other>" incorrectly made commits.
  3853.  
  3854.  * "git merge --squash --no-ff <other>", which is a nonsense combination
  3855.    of options, was not rejected.
  3856.  
  3857.  * "git ls-remote" and "git remote show" against an empty repository
  3858.    failed, instead of just giving an empty result (regression).
  3859.  
  3860.  * "git fast-import" did not handle a renamed path whose name needs to be
  3861.    quoted, due to a bug in unquote_c_style() function.
  3862.  
  3863.  * "git cvsexportcommit" was confused when multiple files with the same
  3864.    basename needed to be pushed out in the same commit.
  3865.  
  3866.  * "git daemon" did not send early errors to syslog.
  3867.  
  3868.  * "git log --merge" did not work well with --left-right option.
  3869.  
  3870.  * "git svn" prompted for client cert password every time it accessed the
  3871.    server.
  3872.  
  3873.  * The reset command in "git fast-import" data stream was documented to
  3874.    end with an optional LF, but it actually required one.
  3875.  
  3876.  * "git svn dcommit/rebase" did not honor --rewrite-root option.
  3877.  
  3878. Also included are a handful documentation updates.
  3879. GIT v1.5.4.3 Release Notes
  3880. ==========================
  3881.  
  3882. Fixes since v1.5.4.2
  3883. --------------------
  3884.  
  3885.  * RPM spec used to pull in everything with 'git'.  This has been
  3886.    changed so that 'git' package contains just the core parts,
  3887.    and we now supply 'git-all' metapackage to slurp in everything.
  3888.    This should match end user's expectation better.
  3889.  
  3890.  * When some refs failed to update, git-push reported "failure"
  3891.    which was unclear if some other refs were updated or all of
  3892.    them failed atomically (the answer is the former).  Reworded
  3893.    the message to clarify this.
  3894.  
  3895.  * "git clone" from a repository whose HEAD was misconfigured
  3896.    did not set up the remote properly.  Now it tries to do
  3897.    better.
  3898.  
  3899.  * Updated git-push documentation to clarify what "matching"
  3900.    means, in order to reduce user confusion.
  3901.  
  3902.  * Updated git-add documentation to clarify "add -u" operates in
  3903.    the current subdirectory you are in, just like other commands.
  3904.  
  3905.  * git-gui updates to work on OSX and Windows better.
  3906. GIT v1.5.4.2 Release Notes
  3907. ==========================
  3908.  
  3909. Fixes since v1.5.4
  3910. ------------------
  3911.  
  3912.  * The configuration parser was not prepared to see string
  3913.    valued variables misspelled as boolean and segfaulted.
  3914.  
  3915.  * Temporary files left behind due to interrupted object
  3916.    transfers were not cleaned up with "git prune".
  3917.  
  3918.  * "git config --unset" was confused when the unset variables
  3919.    were spelled with continuation lines in the config file.
  3920.  
  3921.  * The merge message detection in "git cvsimport" did not catch
  3922.    a message that began with "Merge...".
  3923.  
  3924.  * "git status" suggests "git rm --cached" for unstaging the
  3925.    earlier "git add" before the initial commit.
  3926.  
  3927.  * "git status" output was incorrect during a partial commit.
  3928.  
  3929.  * "git bisect" refused to start when the HEAD was detached.
  3930.  
  3931.  * "git bisect" allowed a wildcard character in the commit
  3932.    message expanded while writing its log file.
  3933.  
  3934.  * Manual pages were not formatted correctly with docbook xsl
  3935.    1.72; added a workaround.
  3936.  
  3937.  * "git-commit -C $tag" used to work but rewrite in C done in
  3938.    1.5.4 broke it.  This was fixed in 1.5.4.1.
  3939.  
  3940.  * An entry in the .gitattributes file that names a pattern in a
  3941.    subdirectory of the directory it is in did not match
  3942.    correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should
  3943.    match "a/b/foo.c" but it didn't).  This was fixed in 1.5.4.1.
  3944.  
  3945.  * Customized color specification was parsed incorrectly when
  3946.    numeric color values are used.  This was fixed in 1.5.4.1.
  3947.  
  3948.  * http transport misbehaved when linked with curl-gnutls.
  3949. GIT v1.5.4.1 Release Notes
  3950. ==========================
  3951.  
  3952. Fixes since v1.5.4
  3953. ------------------
  3954.  
  3955.  * "git-commit -C $tag" used to work but rewrite in C done in
  3956.    1.5.4 broke it.
  3957.  
  3958.  * An entry in the .gitattributes file that names a pattern in a
  3959.    subdirectory of the directory it is in did not match
  3960.    correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should
  3961.    match "a/b/foo.c" but it didn't).
  3962.  
  3963.  * Customized color specification was parsed incorrectly when
  3964.    numeric color values are used.  This was fixed in 1.5.4.1.
  3965.  
  3966. GIT v1.5.4 Release Notes
  3967. ========================
  3968.  
  3969. Removal
  3970. -------
  3971.  
  3972.  * "git svnimport" was removed in favor of "git svn".  It is still there
  3973.    in the source tree (contrib/examples) but unsupported.
  3974.  
  3975.  * As git-commit and git-status have been rewritten, "git runstatus"
  3976.    helper script lost all its users and has been removed.
  3977.  
  3978.  
  3979. Temporarily disabled
  3980. --------------------
  3981.  
  3982.  * "git http-push" is known not to work well with cURL library older
  3983.    than 7.16, and we had reports of repository corruption.  It is
  3984.    disabled on such platforms for now.  Unfortunately, 1.5.3.8 shares
  3985.    the same issue.  In other words, this does not mean you will be
  3986.    fine if you stick to an older git release.  For now, please do not
  3987.    use http-push from older git with cURL older than 7.16 if you
  3988.    value your data. A proper fix will hopefully materialize in
  3989.    later versions.
  3990.  
  3991.  
  3992. Deprecation notices
  3993. -------------------
  3994.  
  3995.  * From v1.6.0, git will by default install dashed form of commands
  3996.    (e.g. "git-commit") outside of users' normal $PATH, and will install
  3997.    only selected commands ("git" itself, and "gitk") in $PATH.  This
  3998.    implies:
  3999.  
  4000.    - Using dashed forms of git commands (e.g. "git-commit") from the
  4001.      command line has been informally deprecated since early 2006, but
  4002.      now it officially is, and will be removed in the future.  Use
  4003.      dash-less forms (e.g. "git commit") instead.
  4004.  
  4005.    - Using dashed forms from your scripts, without first prepending the
  4006.      return value from "git --exec-path" to the scripts' PATH, has been
  4007.      informally deprecated since early 2006, but now it officially is.
  4008.  
  4009.    - Use of dashed forms with "PATH=$(git --exec-path):$PATH; export
  4010.      PATH" early in your script is not deprecated with this change.
  4011.  
  4012.    Users are strongly encouraged to adjust their habits and scripts now
  4013.    to prepare for this change.
  4014.  
  4015.  * The post-receive hook was introduced in March 2007 to supersede
  4016.    the post-update hook, primarily to overcome the command line length
  4017.    limitation of the latter.  Use of post-update hook will be deprecated
  4018.    in future versions of git, starting from v1.6.0.
  4019.  
  4020.  * "git lost-found" was deprecated in favor of "git fsck"'s --lost-found
  4021.    option, and will be removed in the future.
  4022.  
  4023.  * "git peek-remote" is deprecated, as "git ls-remote" was written in C
  4024.    and works for all transports; "git peek-remote" will be removed in
  4025.    the future.
  4026.  
  4027.  * "git repo-config" which was an old name for "git config" command
  4028.    has been supported without being advertised for a long time.  The
  4029.    next feature release will remove it.
  4030.  
  4031.  * From v1.6.0, the repack.usedeltabaseoffset config option will default
  4032.    to true, which will give denser packfiles (i.e. more efficient storage).
  4033.    The downside is that git older than version 1.4.4 will not be able
  4034.    to directly use a repository packed using this setting.
  4035.  
  4036.  * From v1.6.0, the pack.indexversion config option will default to 2,
  4037.    which is slightly more efficient, and makes repacking more immune to
  4038.    data corruptions.  Git older than version 1.5.2 may revert to version 1
  4039.    of the pack index with a manual "git index-pack" to be able to directly
  4040.    access corresponding pack files.
  4041.  
  4042.  
  4043. Updates since v1.5.3
  4044. --------------------
  4045.  
  4046.  * Comes with much improved gitk, with i18n.
  4047.  
  4048.  * Comes with git-gui 0.9.2 with i18n.
  4049.  
  4050.  * gitk is now merged as a subdirectory of git.git project, in
  4051.    preparation for its i18n.
  4052.  
  4053.  * progress displays from many commands are a lot nicer to the eye.
  4054.    Transfer commands show throughput data.
  4055.  
  4056.  * many commands that pay attention to per-directory .gitignore now do
  4057.    so lazily, which makes the usual case go much faster.
  4058.  
  4059.  * Output processing for '--pretty=format:<user format>' has been
  4060.    optimized.
  4061.  
  4062.  * Rename detection of diff family while detecting exact matches has
  4063.    been greatly optimized.
  4064.  
  4065.  * Rename detection of diff family tries to make more natural looking
  4066.    pairing.  Earlier, if multiple identical rename sources were
  4067.    found in the preimage, the source used was picked pretty much at random.
  4068.  
  4069.  * Value "true" for color.diff and color.status configuration used to
  4070.    mean "always" (even when the output is not going to a terminal).
  4071.    This has been corrected to mean the same thing as "auto".
  4072.  
  4073.  * "git diff" Porcelain now respects diff.external configuration, which
  4074.    is another way to specify GIT_EXTERNAL_DIFF.
  4075.  
  4076.  * "git diff" can be told to use different prefixes other than
  4077.    "a/" and "b/" e.g. "git diff --src-prefix=l/ --dst-prefix=k/".
  4078.  
  4079.  * "git diff" sometimes did not quote paths with funny
  4080.    characters properly.
  4081.  
  4082.  * "git log" (and any revision traversal commands) misbehaved
  4083.    when --diff-filter is given but was not asked to actually
  4084.    produce diff.
  4085.  
  4086.  * HTTP proxy can be specified per remote repository using
  4087.    remote.*.httpproxy configuration, or global http.proxy configuration
  4088.    variable.
  4089.  
  4090.  * Various Perforce importer updates.
  4091.  
  4092.  * Example update and post-receive hooks have been improved.
  4093.  
  4094.  * Any command that wants to take a commit object name can now use
  4095.    ":/string" syntax to name a commit.
  4096.  
  4097.  * "git reset" is now built-in and its output can be squelched with -q.
  4098.  
  4099.  * "git reset --hard" does not make any sense in a bare
  4100.    repository, but did not error out; fixed.
  4101.  
  4102.  * "git send-email" can optionally talk over ssmtp and use SMTP-AUTH.
  4103.  
  4104.  * "git rebase" learned --whitespace option.
  4105.  
  4106.  * In "git rebase", when you decide not to replay a particular change
  4107.    after the command stopped with a conflict, you can say "git rebase
  4108.    --skip" without first running "git reset --hard", as the command now
  4109.    runs it for you.
  4110.  
  4111.  * "git rebase --interactive" mode can now work on detached HEAD.
  4112.  
  4113.  * Other minor to serious bugs in "git rebase -i" have been fixed.
  4114.  
  4115.  * "git rebase" now detaches head during its operation, so after a
  4116.    successful "git rebase" operation, the reflog entry branch@{1} for
  4117.    the current branch points at the commit before the rebase was
  4118.    started.
  4119.  
  4120.  * "git rebase -i" also triggers rerere to help your repeated merges.
  4121.  
  4122.  * "git merge" can call the "post-merge" hook.
  4123.  
  4124.  * "git pack-objects" can optionally run deltification with multiple
  4125.    threads.
  4126.  
  4127.  * "git archive" can optionally substitute keywords in files marked with
  4128.    export-subst attribute.
  4129.  
  4130.  * "git cherry-pick" made a misguided attempt to repeat the original
  4131.    command line in the generated log message, when told to cherry-pick a
  4132.    commit by naming a tag that points at it.  It does not anymore.
  4133.  
  4134.  * "git for-each-ref" learned %(xxxdate:<date-format>) syntax to show the
  4135.    various date fields in different formats.
  4136.  
  4137.  * "git gc --auto" is a low-impact way to automatically run a variant of
  4138.    "git repack" that does not lose unreferenced objects (read: safer
  4139.    than the usual one) after the user accumulates too many loose
  4140.    objects.
  4141.  
  4142.  * "git clean" has been rewritten in C.
  4143.  
  4144.  * You need to explicitly set clean.requireForce to "false" to allow
  4145.    "git clean" without -f to do any damage (lack of the configuration
  4146.    variable used to mean "do not require -f option to lose untracked
  4147.    files", but we now use the safer default).
  4148.  
  4149.  * The kinds of whitespace errors "git diff" and "git apply" notice (and
  4150.    fix) can be controlled via 'core.whitespace' configuration variable
  4151.    and 'whitespace' attribute in .gitattributes file.
  4152.  
  4153.  * "git push" learned --dry-run option to show what would happen if a
  4154.    push is run.
  4155.  
  4156.  * "git push" does not update a tracking ref on the local side when the
  4157.    remote refused to update the corresponding ref.
  4158.  
  4159.  * "git push" learned --mirror option.  This is to push the local refs
  4160.    one-to-one to the remote, and deletes refs from the remote that do
  4161.    not exist anymore in the repository on the pushing side.
  4162.  
  4163.  * "git push" can remove a corrupt ref at the remote site with the usual
  4164.    ":ref" refspec.
  4165.  
  4166.  * "git remote" knows --mirror mode.  This is to set up configuration to
  4167.    push into a remote repository to store local branch heads to the same
  4168.    branch on the remote side, and remove branch heads locally removed
  4169.    from local repository at the same time.  Suitable for pushing into a
  4170.    back-up repository.
  4171.  
  4172.  * "git remote" learned "rm" subcommand.
  4173.  
  4174.  * "git cvsserver" can be run via "git shell".  Also, "cvs" is
  4175.    recognized as a synonym for "git cvsserver", so that CVS users
  4176.    can be switched to git just by changing their login shell.
  4177.  
  4178.  * "git cvsserver" acts more like receive-pack by running post-receive
  4179.    and post-update hooks.
  4180.  
  4181.  * "git am" and "git rebase" are far less verbose.
  4182.  
  4183.  * "git pull" learned to pass --[no-]ff option to underlying "git
  4184.    merge".
  4185.  
  4186.  * "git pull --rebase" is a different way to integrate what you fetched
  4187.    into your current branch.
  4188.  
  4189.  * "git fast-export" produces data-stream that can be fed to fast-import
  4190.    to reproduce the history recorded in a git repository.
  4191.  
  4192.  * "git add -i" takes pathspecs to limit the set of files to work on.
  4193.  
  4194.  * "git add -p" is a short-hand to go directly to the selective patch
  4195.    subcommand in the interactive command loop and to exit when done.
  4196.  
  4197.  * "git add -i" UI has been colorized.  The interactive prompt
  4198.    and menu can be colored by setting color.interactive
  4199.    configuration.  The diff output (including the hunk picker)
  4200.    are colored with color.diff configuration.
  4201.  
  4202.  * "git commit --allow-empty" allows you to create a single-parent
  4203.    commit that records the same tree as its parent, overriding the usual
  4204.    safety valve.
  4205.  
  4206.  * "git commit --amend" can amend a merge that does not change the tree
  4207.    from its first parent.
  4208.  
  4209.  * "git commit" used to unconditionally strip comment lines that
  4210.    began with '#' and removed excess blank lines.  This behavior has
  4211.    been made configurable.
  4212.  
  4213.  * "git commit" has been rewritten in C.
  4214.  
  4215.  * "git stash random-text" does not create a new stash anymore.  It was
  4216.    a UI mistake.  Use "git stash save random-text", or "git stash"
  4217.    (without extra args) for that.
  4218.  
  4219.  * "git stash clear extra-text" does not clear the whole stash
  4220.    anymore.  It is tempting to expect "git stash clear stash@{2}"
  4221.    to drop only a single named stash entry, and it is rude to
  4222.    discard everything when that is asked (but not provided).
  4223.  
  4224.  * "git prune --expire <time>" can exempt young loose objects from
  4225.    getting pruned.
  4226.  
  4227.  * "git branch --contains <commit>" can list branches that are
  4228.    descendants of a given commit.
  4229.  
  4230.  * "git log" learned --early-output option to help interactive GUI
  4231.    implementations.
  4232.  
  4233.  * "git bisect" learned "skip" action to mark untestable commits.
  4234.  
  4235.  * "git bisect visualize" learned a shorter synonym "git bisect view".
  4236.  
  4237.  * "git bisect visualize" runs "git log" in a non-windowed
  4238.    environments.  It also can be told what command to run (e.g. "git
  4239.    bisect visualize tig").
  4240.  
  4241.  * "git format-patch" learned "format.numbered" configuration variable
  4242.    to automatically turn --numbered option on when more than one commits
  4243.    are formatted.
  4244.  
  4245.  * "git ls-files" learned "--exclude-standard" to use the canned set of
  4246.    exclude files.
  4247.  
  4248.  * "git tag -a -f existing" begins the editor session using the existing
  4249.    annotation message.
  4250.  
  4251.  * "git tag -m one -m bar" (multiple -m options) behaves similarly to
  4252.    "git commit"; the parameters to -m options are formatted as separate
  4253.    paragraphs.
  4254.  
  4255.  * The format "git show" outputs an annotated tag has been updated to
  4256.    include "Tagger: " and "Date: " lines from the tag itself.  Strictly
  4257.    speaking this is a backward incompatible change, but this is a
  4258.    reasonable usability fix and people's scripts shouldn't have been
  4259.    relying on the exact output from "git show" Porcelain anyway.
  4260.  
  4261.  * "git cvsimport" did not notice errors from underlying "cvsps"
  4262.    and produced a corrupt import silently.
  4263.  
  4264.  * "git cvsexportcommit" learned -w option to specify and switch to the
  4265.    CVS working directory.
  4266.  
  4267.  * "git checkout" from a subdirectory learned to use "../path" to allow
  4268.    checking out a path outside the current directory without cd'ing up.
  4269.  
  4270.  * "git checkout" from and to detached HEAD leaves a bit more
  4271.    information in the reflog.
  4272.  
  4273.  * "git send-email --dry-run" shows full headers for easier diagnosis.
  4274.  
  4275.  * "git merge-ours" is now built-in.
  4276.  
  4277.  * "git svn" learned "info" and "show-externals" subcommands.
  4278.  
  4279.  * "git svn" run from a subdirectory failed to read settings from the
  4280.    .git/config.
  4281.  
  4282.  * "git svn" learned --use-log-author option, which picks up more
  4283.    descriptive name from From: and Signed-off-by: lines in the commit
  4284.    message.
  4285.  
  4286.  * "git svn" wasted way too much disk to record revision mappings
  4287.    between svn and git; a new representation that is much more compact
  4288.    for this information has been introduced to correct this.
  4289.  
  4290.  * "git svn" left temporary index files it used without cleaning them
  4291.    up; this was corrected.
  4292.  
  4293.  * "git status" from a subdirectory now shows relative paths, which
  4294.    makes copy-and-pasting for git-checkout/git-add/git-rm easier.  The
  4295.    traditional behavior to show the full path relative to the top of
  4296.    the work tree can be had by setting status.relativepaths
  4297.    configuration variable to false.
  4298.  
  4299.  * "git blame" kept text for each annotated revision in core needlessly;
  4300.    this has been corrected.
  4301.  
  4302.  * "git shortlog" learned to default to HEAD when the standard input is
  4303.    a terminal and the user did not give any revision parameter.
  4304.  
  4305.  * "git shortlog" learned "-e" option to show e-mail addresses as well as
  4306.    authors' names.
  4307.  
  4308.  * "git help" learned "-w" option to show documentation in browsers.
  4309.  
  4310.  * In addition there are quite a few internal clean-ups. Notably:
  4311.  
  4312.    - many fork/exec have been replaced with run-command API,
  4313.      brought from the msysgit effort.
  4314.  
  4315.    - introduction and more use of the option parser API.
  4316.  
  4317.    - enhancement and more use of the strbuf API.
  4318.  
  4319.  * Makefile tweaks to support HP-UX is in.
  4320.  
  4321. Fixes since v1.5.3
  4322. ------------------
  4323.  
  4324. All of the fixes in v1.5.3 maintenance series are included in
  4325. this release, unless otherwise noted.
  4326.  
  4327. These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance
  4328. series.
  4329.  
  4330.  * The way "git diff --check" behaves is much more consistent with the way
  4331.    "git apply --whitespace=warn" works.
  4332.  
  4333.  * "git svn" talking with the SVN over HTTP will correctly quote branch
  4334.    and project names.
  4335.  
  4336.  * "git config" did not work correctly on platforms that define
  4337.    REG_NOMATCH to an even number.
  4338.  
  4339.  * Recent versions of AsciiDoc 8 has a change to break our
  4340.    documentation; a workaround has been implemented.
  4341.  
  4342.  * "git diff --color-words" colored context lines in a wrong color.
  4343. GIT v1.5.3.8 Release Notes
  4344. ==========================
  4345.  
  4346. Fixes since v1.5.3.7
  4347. --------------------
  4348.  
  4349.  * Some documentation used "email.com" as an example domain.
  4350.  
  4351.  * git-svn fix to handle funky branch and project names going over
  4352.    http/https correctly.
  4353.  
  4354.  * git-svn fix to tone down a needlessly alarming warning message.
  4355.  
  4356.  * git-clone did not correctly report errors while fetching over http.
  4357.  
  4358.  * git-send-email added redundant Message-Id: header to the outgoing
  4359.    e-mail when the patch text already had one.
  4360.  
  4361.  * a read-beyond-end-of-buffer bug in configuration file updater was fixed.
  4362.  
  4363.  * git-grep used to show the same hit repeatedly for unmerged paths.
  4364.  
  4365.  * After amending the patch title in "git-am -i", the command did not
  4366.    report the patch it applied with the updated title.
  4367.  
  4368. GIT v1.5.3.7 Release Notes
  4369. ==========================
  4370.  
  4371. Fixes since v1.5.3.6
  4372. --------------------
  4373.  
  4374.  * git-send-email added 8-bit contents to the payload without
  4375.    marking it as 8-bit in a CTE header.
  4376.  
  4377.  * "git-bundle create a.bndl HEAD" dereferenced the symref and
  4378.    did not record the ref as 'HEAD'; this prevented a bundle
  4379.    from being used as a normal source of git-clone.
  4380.  
  4381.  * The code to reject nonsense command line of the form
  4382.    "git-commit -a paths..." and "git-commit --interactive
  4383.    paths..." were broken.
  4384.  
  4385.  * Adding a signature that is not ASCII-only to an original
  4386.    commit that is ASCII-only would make the result non-ASCII.
  4387.    "git-format-patch -s" did not mark such a message correctly
  4388.    with MIME encoding header.
  4389.  
  4390.  * git-add sometimes did not mark the resulting index entry
  4391.    stat-clean.  This affected only cases when adding the
  4392.    contents with the same length as the previously staged
  4393.    contents, and the previous staging made the index entry
  4394.    "racily clean".
  4395.  
  4396.  * git-commit did not honor GIT_INDEX_FILE the user had in the
  4397.    environment.
  4398.  
  4399.  * When checking out a revision, git-checkout did not report where the
  4400.    updated HEAD is if you happened to have a file called HEAD in the
  4401.    work tree.
  4402.  
  4403.  * "git-rev-list --objects" mishandled a tree that points at a
  4404.    submodule.
  4405.  
  4406.  * "git cvsimport" was not ready for packed refs that "git gc" can
  4407.    produce and gave incorrect results.
  4408.  
  4409.  * Many scripted Porcelains were confused when you happened to have a
  4410.    file called "HEAD" in your work tree.
  4411.  
  4412. Also it contains updates to the user manual and documentation.
  4413. GIT v1.5.3.6 Release Notes
  4414. ==========================
  4415.  
  4416. Fixes since v1.5.3.5
  4417. --------------------
  4418.  
  4419.  * git-cvsexportcommit handles root commits better.
  4420.  
  4421.  * git-svn dcommit used to clobber when sending a series of
  4422.    patches.
  4423.  
  4424.  * git-svn dcommit failed after attempting to rebase when
  4425.    started with a dirty index; now it stops upfront.
  4426.  
  4427.  * git-grep sometimes refused to work when your index was
  4428.    unmerged.
  4429.  
  4430.  * "git-grep -A1 -B2" acted as if it was told to run "git -A1 -B21".
  4431.  
  4432.  * git-hash-object did not honor configuration variables, such as
  4433.    core.compression.
  4434.  
  4435.  * git-index-pack choked on a huge pack on 32-bit machines, even when
  4436.    large file offsets are supported.
  4437.  
  4438.  * atom feeds from git-web said "10" for the month of November.
  4439.  
  4440.  * a memory leak in commit walker was plugged.
  4441.  
  4442.  * When git-send-email inserted the original author's From:
  4443.    address in body, it did not mark the message with
  4444.    Content-type: as needed.
  4445.  
  4446.  * git-revert and git-cherry-pick incorrectly refused to start
  4447.    when the work tree was dirty.
  4448.  
  4449.  * git-clean did not honor core.excludesfile configuration.
  4450.  
  4451.  * git-add mishandled ".gitignore" files when applying them to
  4452.    subdirectories.
  4453.  
  4454.  * While importing a too branchy history, git-fastimport did not
  4455.    honor delta depth limit properly.
  4456.  
  4457.  * Support for zlib implementations that lack ZLIB_VERNUM and definition
  4458.    of deflateBound() has been added.
  4459.  
  4460.  * Quite a lot of documentation clarifications.
  4461. GIT v1.5.3.5 Release Notes
  4462. ==========================
  4463.  
  4464. Fixes since v1.5.3.4
  4465. --------------------
  4466.  
  4467.  * Comes with git-gui 0.8.4.
  4468.  
  4469.  * "git-config" silently ignored options after --list; now it will
  4470.    error out with a usage message.
  4471.  
  4472.  * "git-config --file" failed if the argument used a relative path
  4473.    as it changed directories before opening the file.
  4474.  
  4475.  * "git-config --file" now displays a proper error message if it
  4476.    cannot read the file specified on the command line.
  4477.  
  4478.  * "git-config", "git-diff", "git-apply" failed if run from a
  4479.    subdirectory with relative GIT_DIR and GIT_WORK_TREE set.
  4480.  
  4481.  * "git-blame" crashed if run during a merge conflict.
  4482.  
  4483.  * "git-add -i" did not handle single line hunks correctly.
  4484.  
  4485.  * "git-rebase -i" and "git-stash apply" failed if external diff
  4486.    drivers were used for one or more files in a commit.  They now
  4487.    avoid calling the external diff drivers.
  4488.  
  4489.  * "git-log --follow" did not work unless diff generation (e.g. -p)
  4490.    was also requested.
  4491.  
  4492.  * "git-log --follow -B" did not work at all.  Fixed.
  4493.  
  4494.  * "git-log -M -B" did not correctly handle cases of very large files
  4495.    being renamed and replaced by very small files in the same commit.
  4496.  
  4497.  * "git-log" printed extra newlines between commits when a diff
  4498.    was generated internally (e.g. -S or --follow) but not displayed.
  4499.  
  4500.  * "git-push" error message is more helpful when pushing to a
  4501.    repository with no matching refs and none specified.
  4502.  
  4503.  * "git-push" now respects + (force push) on wildcard refspecs,
  4504.    matching the behavior of git-fetch.
  4505.  
  4506.  * "git-filter-branch" now updates the working directory when it
  4507.    has finished filtering the current branch.
  4508.  
  4509.  * "git-instaweb" no longer fails on Mac OS X.
  4510.  
  4511.  * "git-cvsexportcommit" didn't always create new parent directories
  4512.    before trying to create new child directories.  Fixed.
  4513.  
  4514.  * "git-fetch" printed a scary (but bogus) error message while
  4515.    fetching a tag that pointed to a tree or blob.  The error did
  4516.    not impact correctness, only user perception.  The bogus error
  4517.    is no longer printed.
  4518.  
  4519.  * "git-ls-files --ignored" did not properly descend into non-ignored
  4520.    directories that themselves contained ignored files if d_type
  4521.    was not supported by the filesystem.  This bug impacted systems
  4522.    such as AFS.  Fixed.
  4523.  
  4524.  * Git segfaulted when reading an invalid .gitattributes file.  Fixed.
  4525.  
  4526.  * post-receive-email example hook was fixed for non-fast-forward
  4527.    updates.
  4528.  
  4529.  * Documentation updates for supported (but previously undocumented)
  4530.    options of "git-archive" and "git-reflog".
  4531.  
  4532.  * "make clean" no longer deletes the configure script that ships
  4533.    with the git tarball, making multiple architecture builds easier.
  4534.  
  4535.  * "git-remote show origin" spewed a warning message from Perl
  4536.    when no remote is defined for the current branch via
  4537.    branch.<name>.remote configuration settings.
  4538.  
  4539.  * Building with NO_PERL_MAKEMAKER excessively rebuilt contents
  4540.    of perl/ subdirectory by rewriting perl.mak.
  4541.  
  4542.  * http.sslVerify configuration settings were not used in scripted
  4543.    Porcelains.
  4544.  
  4545.  * "git-add" leaked a bit of memory while scanning for files to add.
  4546.  
  4547.  * A few workarounds to squelch false warnings from recent gcc have
  4548.    been added.
  4549.  
  4550.  * "git-send-pack $remote frotz" segfaulted when there is nothing
  4551.    named 'frotz' on the local end.
  4552.  
  4553.  * "git-rebase --interactive" did not handle its "--strategy" option
  4554.    properly.
  4555. GIT v1.5.3.4 Release Notes
  4556. ==========================
  4557.  
  4558. Fixes since v1.5.3.3
  4559. --------------------
  4560.  
  4561.  * Change to "git-ls-files" in v1.5.3.3 that was introduced to support
  4562.    partial commit of removal better had a segfaulting bug, which was
  4563.    diagnosed and fixed by Keith and Carl.
  4564.  
  4565.  * Performance improvements for rename detection has been backported
  4566.    from the 'master' branch.
  4567.  
  4568.  * "git-for-each-ref --format='%(numparent)'" was not working
  4569.    correctly at all, and --format='%(parent)' was not working for
  4570.    merge commits.
  4571.  
  4572.  * Sample "post-receive-hook" incorrectly sent out push
  4573.    notification e-mails marked as "From: " the committer of the
  4574.    commit that happened to be at the tip of the branch that was
  4575.    pushed, not from the person who pushed.
  4576.  
  4577.  * "git-remote" did not exit non-zero status upon error.
  4578.  
  4579.  * "git-add -i" did not respond very well to EOF from tty nor
  4580.    bogus input.
  4581.  
  4582.  * "git-rebase -i" squash subcommand incorrectly made the
  4583.    author of later commit the author of resulting commit,
  4584.    instead of taking from the first one in the squashed series.
  4585.  
  4586.  * "git-stash apply --index" was not documented.
  4587.  
  4588.  * autoconfiguration learned that "ar" command is found as "gas" on
  4589.    some systems.
  4590. GIT v1.5.3.3 Release Notes
  4591. ==========================
  4592.  
  4593. Fixes since v1.5.3.2
  4594. --------------------
  4595.  
  4596.  * git-quiltimport did not like it when a patch described in the
  4597.    series file does not exist.
  4598.  
  4599.  * p4 importer missed executable bit in some cases.
  4600.  
  4601.  * The default shell on some FreeBSD did not execute the
  4602.    argument parsing code correctly and made git unusable.
  4603.  
  4604.  * git-svn incorrectly spawned pager even when the user
  4605.    explicitly asked not to.
  4606.  
  4607.  * sample post-receive hook overquoted the envelope sender
  4608.    value.
  4609.  
  4610.  * git-am got confused when the patch contained a change that is
  4611.    only about type and not contents.
  4612.  
  4613.  * git-mergetool did not show our and their version of the
  4614.    conflicted file when started from a subdirectory of the
  4615.    project.
  4616.  
  4617.  * git-mergetool did not pass correct options when invoking diff3.
  4618.  
  4619.  * git-log sometimes invoked underlying "diff" machinery
  4620.    unnecessarily.
  4621. GIT v1.5.3.2 Release Notes
  4622. ==========================
  4623.  
  4624. Fixes since v1.5.3.1
  4625. --------------------
  4626.  
  4627.  * git-push sent thin packs by default, which was not good for
  4628.    the public distribution server (no point in saving transfer
  4629.    while pushing; no point in making the resulting pack less
  4630.    optimum).
  4631.  
  4632.  * git-svn sometimes terminated with "Malformed network data" when
  4633.    talking over svn:// protocol.
  4634.  
  4635.  * git-send-email re-issued the same message-id about 10% of the
  4636.    time if you fired off 30 messages within a single second.
  4637.  
  4638.  * git-stash was not terminating the log message of commits it
  4639.    internally creates with LF.
  4640.  
  4641.  * git-apply failed to check the size of the patch hunk when its
  4642.    beginning part matched the remainder of the preimage exactly,
  4643.    even though the preimage recorded in the hunk was much larger
  4644.    (therefore the patch should not have applied), leading to a
  4645.    segfault.
  4646.  
  4647.  * "git rm foo && git commit foo" complained that 'foo' needs to
  4648.    be added first, instead of committing the removal, which was a
  4649.    nonsense.
  4650.  
  4651.  * git grep -c said "/dev/null: 0".
  4652.  
  4653.  * git-add -u failed to recognize a blob whose type changed
  4654.    between the index and the work tree.
  4655.  
  4656.  * The limit to rename detection has been tightened a lot to
  4657.    reduce performance problems with a huge change.
  4658.  
  4659.  * cvsimport and svnimport barfed when the input tried to move
  4660.    a tag.
  4661.  
  4662.  * "git apply -pN" did not chop the right number of directories.
  4663.  
  4664.  * "git svnimport" did not like SVN tags with funny characters in them.
  4665.  
  4666.  * git-gui 0.8.3, with assorted fixes, including:
  4667.  
  4668.    - font-chooser on X11 was unusable with large number of fonts;
  4669.    - a diff that contained a deleted symlink made it barf;
  4670.    - an untracked symbolic link to a directory made it fart;
  4671.    - a file with % in its name made it vomit;
  4672.  
  4673.  
  4674. Documentation updates
  4675. ---------------------
  4676.  
  4677. User manual has been somewhat restructured.  I think the new
  4678. organization is much easier to read.
  4679. GIT v1.5.3.1 Release Notes
  4680. ==========================
  4681.  
  4682. Fixes since v1.5.3
  4683. ------------------
  4684.  
  4685. This is solely to fix the generated RPM's dependencies.  We used
  4686. to have git-p4 package but we do not anymore.  As suggested on
  4687. the mailing list, this release makes git-core "Obsolete" git-p4,
  4688. so that yum update would not complain.
  4689. GIT v1.5.3 Release Notes
  4690. ========================
  4691.  
  4692. Updates since v1.5.2
  4693. --------------------
  4694.  
  4695. * The commit walkers other than http are officially deprecated,
  4696.   but still supported for now.
  4697.  
  4698. * The submodule support has Porcelain layer.
  4699.  
  4700.   Note that the current submodule support is minimal and this is
  4701.   deliberately so.  A design decision we made is that operations
  4702.   at the supermodule level do not recurse into submodules by
  4703.   default.  The expectation is that later we would add a
  4704.   mechanism to tell git which submodules the user is interested
  4705.   in, and this information might be used to determine the
  4706.   recursive behaviour of certain commands (e.g. "git checkout"
  4707.   and "git diff"), but currently we haven't agreed on what that
  4708.   mechanism should look like.  Therefore, if you use submodules,
  4709.   you would probably need "git submodule update" on the
  4710.   submodules you care about after running a "git checkout" at
  4711.   the supermodule level.
  4712.  
  4713. * There are a handful pack-objects changes to help you cope better
  4714.   with repositories with pathologically large blobs in them.
  4715.  
  4716. * For people who need to import from Perforce, a front-end for
  4717.   fast-import is in contrib/fast-import/.
  4718.  
  4719. * Comes with git-gui 0.8.2.
  4720.  
  4721. * Comes with updated gitk.
  4722.  
  4723. * New commands and options.
  4724.  
  4725.   - "git log --date=<format>" can use more formats: iso8601, rfc2822.
  4726.  
  4727.   - The hunk header output from "git diff" family can be customized
  4728.     with the attributes mechanism.  See gitattributes(5) for details.
  4729.  
  4730.   - "git stash" allows you to quickly save away your work in
  4731.     progress and replay it later on an updated state.
  4732.  
  4733.   - "git rebase" learned an "interactive" mode that let you
  4734.     pick and reorder which commits to rebuild.
  4735.  
  4736.   - "git fsck" can save its findings in $GIT_DIR/lost-found, without a
  4737.     separate invocation of "git lost-found" command.  The blobs stored by
  4738.     lost-found are stored in plain format to allow you to grep in them.
  4739.  
  4740.   - $GIT_WORK_TREE environment variable can be used together with
  4741.     $GIT_DIR to work in a subdirectory of a working tree that is
  4742.     not located at "$GIT_DIR/..".
  4743.  
  4744.   - Giving "--file=<file>" option to "git config" is the same as
  4745.     running the command with GIT_CONFIG=<file> environment.
  4746.  
  4747.   - "git log" learned a new option "--follow", to follow
  4748.     renaming history of a single file.
  4749.  
  4750.   - "git filter-branch" lets you rewrite the revision history of
  4751.     specified branches. You can specify a number of filters to
  4752.     modify the commits, files and trees.
  4753.  
  4754.   - "git cvsserver" learned new options (--base-path, --export-all,
  4755.     --strict-paths) inspired by "git daemon".
  4756.  
  4757.   - "git daemon --base-path-relaxed" can help migrating a repository URL
  4758.     that did not use to use --base-path to use --base-path.
  4759.  
  4760.   - "git commit" can use "-t templatefile" option and commit.template
  4761.     configuration variable to prime the commit message given to you in the
  4762.     editor.
  4763.  
  4764.   - "git submodule" command helps you manage the projects from
  4765.     the superproject that contain them.
  4766.  
  4767.   - In addition to core.compression configuration option,
  4768.     core.loosecompression and pack.compression options can
  4769.     independently tweak zlib compression levels used for loose
  4770.     and packed objects.
  4771.  
  4772.   - "git ls-tree -l" shows size of blobs pointed at by the
  4773.     tree entries, similar to "/bin/ls -l".
  4774.  
  4775.   - "git rev-list" learned --regexp-ignore-case and
  4776.     --extended-regexp options to tweak its matching logic used
  4777.     for --grep filtering.
  4778.  
  4779.   - "git describe --contains" is a handier way to call more
  4780.     obscure command "git name-rev --tags".
  4781.  
  4782.   - "git gc --aggressive" tells the command to spend more cycles
  4783.     to optimize the repository harder.
  4784.  
  4785.   - "git repack" learned a "window-memory" limit which
  4786.     dynamically reduces the window size to stay within the
  4787.     specified memory usage.
  4788.  
  4789.   - "git repack" can be told to split resulting packs to avoid
  4790.     exceeding limit specified with "--max-pack-size".
  4791.  
  4792.   - "git fsck" gained --verbose option.  This is really really
  4793.     verbose but it might help you identify exact commit that is
  4794.     corrupt in your repository.
  4795.  
  4796.   - "git format-patch" learned --numbered-files option.  This
  4797.     may be useful for MH users.
  4798.  
  4799.   - "git format-patch" learned format.subjectprefix configuration
  4800.     variable, which serves the same purpose as "--subject-prefix"
  4801.     option.
  4802.  
  4803.   - "git tag -n -l" shows tag annotations while listing tags.
  4804.  
  4805.   - "git cvsimport" can optionally use the separate-remote layout.
  4806.  
  4807.   - "git blame" can be told to see through commits that change
  4808.     whitespaces and indentation levels with "-w" option.
  4809.  
  4810.   - "git send-email" can be told not to thread the messages when
  4811.     sending out more than one patches.
  4812.  
  4813.   - "git send-email" can also be told how to find whom to cc the
  4814.     message to for each message via --cc-cmd.
  4815.  
  4816.   - "git config" learned NUL terminated output format via -z to
  4817.     help scripts.
  4818.  
  4819.   - "git add" learned "--refresh <paths>..." option to selectively refresh
  4820.     the cached stat information.
  4821.  
  4822.   - "git init -q" makes the command quieter.
  4823.  
  4824.   - "git -p command" now has a cousin of opposite sex, "git --no-pager
  4825.     command".
  4826.  
  4827. * Updated behavior of existing commands.
  4828.  
  4829.   - "gitweb" can offer multiple snapshot formats.
  4830.  
  4831.     ***NOTE*** Unfortunately, this changes the format of the
  4832.     $feature{snapshot}{default} entry in the per-site
  4833.     configuration file 'gitweb_config.perl'.  It used to be a
  4834.     three-element tuple that describe a single format; with the
  4835.     new configuration item format, you only have to say the name
  4836.     of the format ('tgz', 'tbz2' or 'zip').  Please update the
  4837.     your configuration file accordingly.
  4838.  
  4839.   - "git clone" uses -l (hardlink files under .git) by default when
  4840.     cloning locally.
  4841.  
  4842.   - URL used for "git clone" and friends can specify nonstandard SSH port
  4843.     by using ssh://host:port/path/to/repo syntax.
  4844.  
  4845.   - "git bundle create" can now create a bundle without negative refs,
  4846.     i.e. "everything since the beginning up to certain points".
  4847.  
  4848.   - "git diff" (but not the plumbing level "git diff-tree") now
  4849.     recursively descends into trees by default.
  4850.  
  4851.   - "git diff" does not show differences that come only from
  4852.     stat-dirtiness in the form of "diff --git" header anymore.
  4853.     It runs "update-index --refresh" silently as needed.
  4854.  
  4855.   - "git tag -l" used to match tags by globbing its parameter as if it
  4856.     has wildcard '*' on both ends, which made "git tag -l gui" to match
  4857.     tag 'gitgui-0.7.0'; this was very annoying.  You now have to add
  4858.     asterisk on the sides you want to wildcard yourself.
  4859.  
  4860.   - The editor to use with many interactive commands can be
  4861.     overridden with GIT_EDITOR environment variable, or if it
  4862.     does not exist, with core.editor configuration variable.  As
  4863.     before, if you have neither, environment variables VISUAL
  4864.     and EDITOR are consulted in this order, and then finally we
  4865.     fall back on "vi".
  4866.  
  4867.   - "git rm --cached" does not complain when removing a newly
  4868.     added file from the index anymore.
  4869.  
  4870.   - Options to "git log" to affect how --grep/--author options look for
  4871.     given strings now have shorter abbreviations.  -i is for ignore case,
  4872.     and -E is for extended regexp.
  4873.  
  4874.   - "git log" learned --log-size to show the number of bytes in
  4875.     the log message part of the output to help qgit.
  4876.  
  4877.   - "git log --name-status" does not require you to give "-r" anymore.
  4878.     As a general rule, Porcelain commands should recurse when showing
  4879.     diff.
  4880.  
  4881.   - "git format-patch --root A" can be used to format everything
  4882.     since the beginning up to A.  This was supported with
  4883.     "git format-patch --root A A" for a long time, but was not
  4884.     properly documented.
  4885.  
  4886.   - "git svn dcommit" retains local merge information.
  4887.  
  4888.   - "git svnimport" allows an empty string to be specified as the
  4889.     trunk/ directory.  This is necessary to suck data from a SVN
  4890.     repository that doe not have trunk/ branches/ and tags/ organization
  4891.     at all.
  4892.  
  4893.   - "git config" to set values also honors type flags like --bool
  4894.     and --int.
  4895.  
  4896.   - core.quotepath configuration can be used to make textual git
  4897.     output to emit most of the characters in the path literally.
  4898.  
  4899.   - "git mergetool" chooses its backend more wisely, taking
  4900.     notice of its environment such as use of X, Gnome/KDE, etc.
  4901.  
  4902.   - "gitweb" shows merge commits a lot nicer than before.  The
  4903.     default view uses more compact --cc format, while the UI
  4904.     allows to choose normal diff with any parent.
  4905.  
  4906.   - snapshot files "gitweb" creates from a repository at
  4907.     $path/$project/.git are more useful.  We use $project part
  4908.     in the filename, which we used to discard.
  4909.  
  4910.   - "git cvsimport" creates lightweight tags; there is no
  4911.     interesting information we can record in an annotated tag,
  4912.     and the handcrafted ones the old code created was not
  4913.     properly formed anyway.
  4914.  
  4915.   - "git push" pretends that you immediately fetched back from
  4916.     the remote by updating corresponding remote tracking
  4917.     branches if you have any.
  4918.  
  4919.   - The diffstat given after a merge (or a pull) honors the
  4920.     color.diff configuration.
  4921.  
  4922.   - "git commit --amend" is now compatible with various message source
  4923.     options such as -m/-C/-c/-F.
  4924.  
  4925.   - "git apply --whitespace=strip" removes blank lines added at
  4926.     the end of the file.
  4927.  
  4928.   - "git fetch" over git native protocols with "-v" option shows
  4929.     connection status, and the IP address of the other end, to
  4930.     help diagnosing problems.
  4931.  
  4932.   - We used to have core.legacyheaders configuration, when
  4933.     set to false, allowed git to write loose objects in a format
  4934.     that mimics the format used by objects stored in packs.  It
  4935.     turns out that this was not so useful.  Although we will
  4936.     continue to read objects written in that format, we do not
  4937.     honor that configuration anymore and create loose objects in
  4938.     the legacy/traditional format.
  4939.  
  4940.   - "--find-copies-harder" option to diff family can now be
  4941.     spelled as "-C -C" for brevity.
  4942.  
  4943.   - "git mailsplit" (hence "git am") can read from Maildir
  4944.     formatted mailboxes.
  4945.  
  4946.   - "git cvsserver" does not barf upon seeing "cvs login"
  4947.     request.
  4948.  
  4949.   - "pack-objects" honors "delta" attribute set in
  4950.     .gitattributes.  It does not attempt to deltify blobs that
  4951.     come from paths with delta attribute set to false.
  4952.  
  4953.   - "new-workdir" script (in contrib) can now be used with a
  4954.     bare repository.
  4955.  
  4956.   - "git mergetool" learned to use gvimdiff.
  4957.  
  4958.   - "gitview" (in contrib) has a better blame interface.
  4959.  
  4960.   - "git log" and friends did not handle a commit log message
  4961.     that is larger than 16kB; they do now.
  4962.  
  4963.   - "--pretty=oneline" output format for "git log" and friends
  4964.     deals with "malformed" commit log messages that have more
  4965.     than one lines in the first paragraph better.  We used to
  4966.     show the first line, cutting the title at mid-sentence; we
  4967.     concatenate them into a single line and treat the result as
  4968.     "oneline".
  4969.  
  4970.   - "git p4import" has been demoted to contrib status.  For
  4971.     a superior option, checkout the "git p4" front end to
  4972.     "git fast-import" (also in contrib).  The man page and p4
  4973.     rpm have been removed as well.
  4974.  
  4975.   - "git mailinfo" (hence "am") now tries to see if the message
  4976.     is in utf-8 first, instead of assuming iso-8859-1, if
  4977.     incoming e-mail does not say what encoding it is in.
  4978.  
  4979. * Builds
  4980.  
  4981.   - old-style function definitions (most notably, a function
  4982.     without parameter defined with "func()", not "func(void)")
  4983.     have been eradicated.
  4984.  
  4985.   - "git tag" and "git verify-tag" have been rewritten in C.
  4986.  
  4987. * Performance Tweaks
  4988.  
  4989.   - "git pack-objects" avoids re-deltification cost by caching
  4990.     small enough delta results it creates while looking for the
  4991.     best delta candidates.
  4992.  
  4993.   - "git pack-objects" learned a new heuristic to prefer delta
  4994.     that is shallower in depth over the smallest delta
  4995.     possible.  This improves both overall packfile access
  4996.     performance and packfile density.
  4997.  
  4998.   - diff-delta code that is used for packing has been improved
  4999.     to work better on big files.
  5000.  
  5001.   - when there are more than one pack files in the repository,
  5002.     the runtime used to try finding an object always from the
  5003.     newest packfile; it now tries the same packfile as we found
  5004.     the object requested the last time, which exploits the
  5005.     locality of references.
  5006.  
  5007.   - verifying pack contents done by "git fsck --full" got boost
  5008.     by carefully choosing the order to verify objects in them.
  5009.  
  5010.   - "git read-tree -m" to read into an already populated index
  5011.     has been optimized vastly.  The effect of this can be seen
  5012.     when switching branches that have differences in only a
  5013.     handful paths.
  5014.  
  5015.   - "git add paths..." and "git commit paths..." has also been
  5016.     heavily optimized.
  5017.  
  5018. Fixes since v1.5.2
  5019. ------------------
  5020.  
  5021. All of the fixes in v1.5.2 maintenance series are included in
  5022. this release, unless otherwise noted.
  5023.  
  5024. * Bugfixes
  5025.  
  5026.   - "gitweb" had trouble handling non UTF-8 text with older
  5027.     Encode.pm Perl module.
  5028.  
  5029.   - "git svn" misparsed the data from the commits in the repository when
  5030.     the user had "color.diff = true" in the configuration.  This has been
  5031.     fixed.
  5032.  
  5033.   - There was a case where "git svn dcommit" clobbered changes made on the
  5034.     SVN side while committing multiple changes.
  5035.  
  5036.   - "git-write-tree" had a bad interaction with racy-git avoidance and
  5037.     gitattributes mechanisms.
  5038.  
  5039.   - "git --bare command" overrode existing GIT_DIR setting and always
  5040.     made it treat the current working directory as GIT_DIR.
  5041.  
  5042.   - "git ls-files --error-unmatch" does not complain if you give the
  5043.     same path pattern twice by mistake.
  5044.  
  5045.   - "git init" autodetected core.filemode but not core.symlinks, which
  5046.     made a new directory created automatically by "git clone" cumbersome
  5047.     to use on filesystems that require these configurations to be set.
  5048.  
  5049.   - "git log" family of commands behaved differently when run as "git
  5050.     log" (no pathspec) and as "git log --" (again, no pathspec).  This
  5051.     inconsistency was introduced somewhere in v1.3.0 series but now has
  5052.     been corrected.
  5053.  
  5054.   - "git rebase -m" incorrectly displayed commits that were skipped.
  5055. GIT v1.5.2.5 Release Notes
  5056. ==========================
  5057.  
  5058. Fixes since v1.5.2.4
  5059. --------------------
  5060.  
  5061.  * Bugfixes
  5062.  
  5063.    - "git add -u" had a serious data corruption problem in one
  5064.      special case (when the changes to a subdirectory's files
  5065.      consist only deletion of files).
  5066.  
  5067.    - "git add -u <path>" did not work from a subdirectory.
  5068.  
  5069.    - "git apply" left an empty directory after all its files are
  5070.      renamed away.
  5071.  
  5072.    - "git $anycmd foo/bar", when there is a file 'foo' in the
  5073.      working tree, complained that "git $anycmd foo/bar --" form
  5074.      should be used to disambiguate between revs and files,
  5075.      which was completely bogus.
  5076.  
  5077.    - "git checkout-index" and other commands that checks out
  5078.      files to the work tree tried unlink(2) on directories,
  5079.      which is a sane thing to do on sane systems, but not on
  5080.      Solaris when you are root.
  5081.  
  5082.  * Documentation Fixes and Updates
  5083.  
  5084.    - A handful documentation fixes.
  5085. GIT v1.5.2.4 Release Notes
  5086. ==========================
  5087.  
  5088. Fixes since v1.5.2.3
  5089. --------------------
  5090.  
  5091.  * Bugfixes
  5092.  
  5093.    - "git-gui" bugfixes, including a handful fixes to run it
  5094.      better on Cygwin/MSYS.
  5095.  
  5096.    - "git checkout" failed to switch back and forth between
  5097.      branches, one of which has "frotz -> xyzzy" symlink and
  5098.      file "xyzzy/filfre", while the other one has a file
  5099.      "frotz/filfre".
  5100.  
  5101.    - "git prune" used to segfault upon seeing a commit that is
  5102.      referred to by a tree object (aka "subproject").
  5103.  
  5104.    - "git diff --name-status --no-index" mishandled an added file.
  5105.  
  5106.    - "git apply --reverse --whitespace=warn" still complained
  5107.      about whitespaces that a forward application would have
  5108.      introduced.
  5109.  
  5110.  * Documentation Fixes and Updates
  5111.  
  5112.    - A handful documentation updates.
  5113. GIT v1.5.2.3 Release Notes
  5114. ==========================
  5115.  
  5116. Fixes since v1.5.2.2
  5117. --------------------
  5118.  
  5119.  * Bugfixes
  5120.  
  5121.    - Version 2 pack index format was introduced in version 1.5.2
  5122.      to support pack files that has offset that cannot be
  5123.      represented in 32-bit.  The runtime code to validate such
  5124.      an index mishandled such an index for an empty pack.
  5125.  
  5126.    - Commit walkers (most notably, fetch over http protocol)
  5127.      tried to traverse commit objects contained in trees (aka
  5128.      subproject); they shouldn't.
  5129.  
  5130.    - A build option NO_R_TO_GCC_LINKER was not explained in Makefile
  5131.      comment correctly.
  5132.  
  5133.  * Documentation Fixes and Updates
  5134.  
  5135.    - git-config --regexp was not documented properly.
  5136.  
  5137.    - git-repack -a was not documented properly.
  5138.  
  5139.    - git-remote -n was not documented properly.
  5140. GIT v1.5.2.2 Release Notes
  5141. ==========================
  5142.  
  5143. Fixes since v1.5.2.1
  5144. --------------------
  5145.  
  5146. * Usability fix
  5147.  
  5148.   - git-gui is shipped with its updated blame interface.  It is
  5149.     rumored that the older one was not just unusable but was
  5150.     active health hazard, but this one is actually pretty.
  5151.     Please see for yourself.
  5152.  
  5153. * Bugfixes
  5154.  
  5155.   - "git checkout fubar" was utterly confused when there is a
  5156.     branch fubar and a tag fubar at the same time.  It correctly
  5157.     checks out the branch fubar now.
  5158.  
  5159.   - "git clone /path/foo" to clone a local /path/foo.git
  5160.     repository left an incorrect configuration.
  5161.  
  5162.   - "git send-email" correctly unquotes RFC 2047 quoted names in
  5163.     the patch-email before using their values.
  5164.  
  5165.   - We did not accept number of seconds since epoch older than
  5166.     year 2000 as a valid timestamp.  We now interpret positive
  5167.     integers more than 8 digits as such, which allows us to
  5168.     express timestamps more recent than March 1973.
  5169.  
  5170.   - git-cvsimport did not work when you have GIT_DIR to point
  5171.     your repository at a nonstandard location.
  5172.  
  5173.   - Some systems (notably, Solaris) lack hstrerror() to make
  5174.     h_errno human readable; prepare a replacement
  5175.     implementation.
  5176.  
  5177.   - .gitignore file listed git-core.spec but what we generate is
  5178.     git.spec, and nobody noticed for a long time.
  5179.  
  5180.   - "git-merge-recursive" does not try to run file level merge
  5181.     on binary files.
  5182.  
  5183.   - "git-branch --track" did not create tracking configuration
  5184.     correctly when the branch name had slash in it.
  5185.  
  5186.   - The email address of the user specified with user.email
  5187.     configuration was overridden by EMAIL environment variable.
  5188.  
  5189.   - The tree parser did not warn about tree entries with
  5190.     nonsense file modes, and assumed they must be blobs.
  5191.  
  5192.   - "git log -z" without any other request to generate diff still
  5193.     invoked the diff machinery, wasting cycles.
  5194.  
  5195. * Documentation
  5196.  
  5197.   - Many updates to fix stale or missing documentation.
  5198.  
  5199.   - Although our documentation was primarily meant to be formatted
  5200.     with AsciiDoc7, formatting with AsciiDoc8 is supported better.
  5201. GIT v1.5.2.1 Release Notes
  5202. ==========================
  5203.  
  5204. Fixes since v1.5.2
  5205. ------------------
  5206.  
  5207. * Bugfixes
  5208.  
  5209.   - Temporary files that are used when invoking external diff
  5210.     programs did not tolerate a long TMPDIR.
  5211.  
  5212.   - git-daemon did not notice when it could not write into its
  5213.     pid file.
  5214.  
  5215.   - git-status did not honor core.excludesFile configuration like
  5216.     git-add did.
  5217.  
  5218.   - git-annotate did not work from a subdirectory while
  5219.     git-blame did.
  5220.  
  5221.   - git-cvsserver should have disabled access to a repository
  5222.     with "gitcvs.pserver.enabled = false" set even when
  5223.     "gitcvs.enabled = true" was set at the same time.  It
  5224.     didn't.
  5225.  
  5226.   - git-cvsimport did not work correctly in a repository with
  5227.     its branch heads were packed with pack-refs.
  5228.  
  5229.   - ident unexpansion to squash "$Id: xxx $" that is in the
  5230.     repository copy removed incorrect number of bytes.
  5231.  
  5232.   - git-svn misbehaved when the subversion repository did not
  5233.     provide MD5 checksums for files.
  5234.  
  5235.   - git rebase (and git am) misbehaved on commits that have '\n'
  5236.     (literally backslash and en, not a linefeed) in the title.
  5237.  
  5238.   - code to decode base85 used in binary patches had one error
  5239.     return codepath wrong.
  5240.  
  5241.   - RFC2047 Q encoding output by git-format-patch used '_' for a
  5242.     space, which is not understood by some programs.  It uses =20
  5243.     which is safer.
  5244.  
  5245.   - git-fastimport --import-marks was broken; fixed.
  5246.  
  5247.   - A lot of documentation updates, clarifications and fixes.
  5248.  
  5249. --
  5250. exec >/var/tmp/1
  5251. O=v1.5.2-65-g996e2d6
  5252. echo O=`git describe refs/heads/maint`
  5253. git shortlog --no-merges $O..refs/heads/maint
  5254. GIT v1.5.2 Release Notes
  5255. ========================
  5256.  
  5257. Updates since v1.5.1
  5258. --------------------
  5259.  
  5260. * Plumbing level superproject support.
  5261.  
  5262.   You can include a subdirectory that has an independent git
  5263.   repository in your index and tree objects of your project
  5264.   ("superproject").  This plumbing (i.e. "core") level
  5265.   superproject support explicitly excludes recursive behaviour.
  5266.  
  5267.   The "subproject" entries in the index and trees of a superproject
  5268.   are incompatible with older versions of git.  Experimenting with
  5269.   the plumbing level support is encouraged, but be warned that
  5270.   unless everybody in your project updates to this release or
  5271.   later, using this feature would make your project
  5272.   inaccessible by people with older versions of git.
  5273.  
  5274. * Plumbing level gitattributes support.
  5275.  
  5276.   The gitattributes mechanism allows you to add 'attributes' to
  5277.   paths in your project, and affect the way certain git
  5278.   operations work.  Currently you can influence if a path is
  5279.   considered a binary or text (the former would be treated by
  5280.   'git diff' not to produce textual output; the latter can go
  5281.   through the line endings conversion process in repositories
  5282.   with core.autocrlf set), expand and unexpand '$Id$' keyword
  5283.   with blob object name, specify a custom 3-way merge driver,
  5284.   and specify a custom diff driver.  You can also apply
  5285.   arbitrary filter to contents on check-in/check-out codepath
  5286.   but this feature is an extremely sharp-edged razor and needs
  5287.   to be handled with caution (do not use it unless you
  5288.   understand the earlier mailing list discussion on keyword
  5289.   expansion).  These conversions apply when checking files in
  5290.   or out, and exporting via git-archive.
  5291.  
  5292. * The packfile format now optionally supports 64-bit index.
  5293.  
  5294.   This release supports the "version 2" format of the .idx
  5295.   file.  This is automatically enabled when a huge packfile
  5296.   needs more than 32-bit to express offsets of objects in the
  5297.   pack.
  5298.  
  5299. * Comes with an updated git-gui 0.7.1
  5300.  
  5301. * Updated gitweb:
  5302.  
  5303.   - can show combined diff for merges;
  5304.   - uses font size of user's preference, not hardcoded in pixels;
  5305.   - can now 'grep';
  5306.  
  5307. * New commands and options.
  5308.  
  5309.   - "git bisect start" can optionally take a single bad commit and
  5310.     zero or more good commits on the command line.
  5311.  
  5312.   - "git shortlog" can optionally be told to wrap its output.
  5313.  
  5314.   - "subtree" merge strategy allows another project to be merged in as
  5315.     your subdirectory.
  5316.  
  5317.   - "git format-patch" learned a new --subject-prefix=<string>
  5318.     option, to override the built-in "[PATCH]".
  5319.  
  5320.   - "git add -u" is a quick way to do the first stage of "git
  5321.     commit -a" (i.e. update the index to match the working
  5322.     tree); it obviously does not make a commit.
  5323.  
  5324.   - "git clean" honors a new configuration, "clean.requireforce".  When
  5325.     set to true, this makes "git clean" a no-op, preventing you
  5326.     from losing files by typing "git clean" when you meant to
  5327.     say "make clean".  You can still say "git clean -f" to
  5328.     override this.
  5329.  
  5330.   - "git log" family of commands learned --date={local,relative,default}
  5331.     option.  --date=relative is synonym to the --relative-date.
  5332.     --date=local gives the timestamp in local timezone.
  5333.  
  5334. * Updated behavior of existing commands.
  5335.  
  5336.   - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
  5337.     but $EMAIL is set, the latter is used as a substitute.
  5338.  
  5339.   - "git diff --stat" shows size of preimage and postimage blobs
  5340.     for binary contents.  Earlier it only said "Bin".
  5341.  
  5342.   - "git lost-found" shows stuff that are unreachable except
  5343.     from reflogs.
  5344.  
  5345.   - "git checkout branch^0" now detaches HEAD at the tip commit
  5346.     on the named branch, instead of just switching to the
  5347.     branch (use "git checkout branch" to switch to the branch,
  5348.     as before).
  5349.  
  5350.   - "git bisect next" can be used after giving only a bad commit
  5351.     without giving a good one (this starts bisection half-way to
  5352.     the root commit).  We used to refuse to operate without a
  5353.     good and a bad commit.
  5354.  
  5355.   - "git push", when pushing into more than one repository, does
  5356.     not stop at the first error.
  5357.  
  5358.   - "git archive" does not insist you to give --format parameter
  5359.     anymore; it defaults to "tar".
  5360.  
  5361.   - "git cvsserver" can use backends other than sqlite.
  5362.  
  5363.   - "gitview" (in contrib/ section) learned to better support
  5364.     "git-annotate".
  5365.  
  5366.   - "git diff $commit1:$path2 $commit2:$path2" can now report
  5367.     mode changes between the two blobs.
  5368.  
  5369.   - Local "git fetch" from a repository whose object store is
  5370.     one of the alternates (e.g. fetching from the origin in a
  5371.     repository created with "git clone -l -s") avoids
  5372.     downloading objects unnecessarily.
  5373.  
  5374.   - "git blame" uses .mailmap to canonicalize the author name
  5375.     just like "git shortlog" does.
  5376.  
  5377.   - "git pack-objects" pays attention to pack.depth
  5378.     configuration variable.
  5379.  
  5380.   - "git cherry-pick" and "git revert" does not use .msg file in
  5381.     the working tree to prepare commit message; instead it uses
  5382.     $GIT_DIR/MERGE_MSG as other commands do.
  5383.  
  5384. * Builds
  5385.  
  5386.   - git-p4import has never been installed; now there is an
  5387.     installation option to do so.
  5388.  
  5389.   - gitk and git-gui can be configured out.
  5390.  
  5391.   - Generated documentation pages automatically get version
  5392.     information from GIT_VERSION.
  5393.  
  5394.   - Parallel build with "make -j" descending into subdirectory
  5395.     was fixed.
  5396.  
  5397. * Performance Tweaks
  5398.  
  5399.   - Optimized "git-rev-list --bisect" (hence "git-bisect").
  5400.  
  5401.   - Optimized "git-add $path" in a large directory, most of
  5402.     whose contents are ignored.
  5403.  
  5404.   - Optimized "git-diff-tree" for reduced memory footprint.
  5405.  
  5406.   - The recursive merge strategy updated a worktree file that
  5407.     was changed identically in two branches, when one of them
  5408.     renamed it.  We do not do that when there is no rename, so
  5409.     match that behaviour.  This avoids excessive rebuilds.
  5410.  
  5411.   - The default pack depth has been increased to 50, as the
  5412.     recent addition of delta_base_cache makes deeper delta chains
  5413.     much less expensive to access.  Depending on the project, it was
  5414.     reported that this reduces the resulting pack file by 10%
  5415.     or so.
  5416.  
  5417.  
  5418. Fixes since v1.5.1
  5419. ------------------
  5420.  
  5421. All of the fixes in v1.5.1 maintenance series are included in
  5422. this release, unless otherwise noted.
  5423.  
  5424. * Bugfixes
  5425.  
  5426.   - Switching branches with "git checkout" refused to work when
  5427.     a path changes from a file to a directory between the
  5428.     current branch and the new branch, in order not to lose
  5429.     possible local changes in the directory that is being turned
  5430.     into a file with the switch.  We now allow such a branch
  5431.     switch after making sure that there is no locally modified
  5432.     file nor un-ignored file in the directory.  This has not
  5433.     been backported to 1.5.1.x series, as it is rather an
  5434.     intrusive change.
  5435.  
  5436.   - Merging branches that have a file in one and a directory in
  5437.     another at the same path used to get quite confused.  We
  5438.     handle such a case a bit more carefully, even though that is
  5439.     still left as a conflict for the user to sort out.  This
  5440.     will not be backported to 1.5.1.x series, as it is rather an
  5441.     intrusive change.
  5442.  
  5443.   - git-fetch had trouble with a remote with insanely large number
  5444.     of refs.
  5445.  
  5446.   - "git clean -d -X" now does not remove non-excluded directories.
  5447.  
  5448.   - rebasing (without -m) a series that changes a symlink to a directory
  5449.     in the middle of a path confused git-apply greatly and refused to
  5450.     operate.
  5451. GIT v1.5.1.6 Release Notes
  5452. ==========================
  5453.  
  5454. Fixes since v1.5.1.4
  5455. --------------------
  5456.  
  5457. * Bugfixes
  5458.  
  5459.   - git-send-email did not understand aliases file for mutt, which
  5460.     allows leading whitespaces.
  5461.  
  5462.   - git-format-patch emitted Content-Type and Content-Transfer-Encoding
  5463.     headers for non ASCII contents, but failed to add MIME-Version.
  5464.  
  5465.   - git-name-rev had a buffer overrun with a deep history.
  5466.  
  5467.   - contributed script import-tars did not get the directory in
  5468.     tar archives interpreted correctly.
  5469.  
  5470.   - git-svn was reported to segfault for many people on list and
  5471.     #git; hopefully this has been fixed.
  5472.  
  5473.   - git-svn also had a bug to crash svnserve by sending a bad
  5474.     sequence of requests.
  5475.  
  5476.   - "git-svn clone" does not try to minimize the URL
  5477.     (i.e. connect to higher level hierarchy) by default, as this
  5478.     can prevent clone to fail if only part of the repository
  5479.     (e.g. 'trunk') is open to public.
  5480.  
  5481.   - "git checkout branch^0" did not detach the head when you are
  5482.     already on 'branch'; backported the fix from the 'master'.
  5483.  
  5484.   - "git-config section.var" did not correctly work when
  5485.     existing configuration file had both [section] and [section "name"]
  5486.     next to each other.
  5487.  
  5488.   - "git clone ../other-directory" was fooled if the current
  5489.     directory $PWD points at is a symbolic link.
  5490.  
  5491.   - (build) tree_entry_extract() function was both static inline
  5492.     and extern, which caused trouble compiling with Forte12
  5493.     compilers on Sun.
  5494.  
  5495.   - Many many documentation fixes and updates.
  5496. GIT v1.5.1.5 Release Notes
  5497. ==========================
  5498.  
  5499. Fixes since v1.5.1.4
  5500. --------------------
  5501.  
  5502. * Bugfixes
  5503.  
  5504.   - git-send-email did not understand aliases file for mutt, which
  5505.     allows leading whitespaces.
  5506.  
  5507.   - git-format-patch emitted Content-Type and Content-Transfer-Encoding
  5508.     headers for non ASCII contents, but failed to add MIME-Version.
  5509.  
  5510.   - git-name-rev had a buffer overrun with a deep history.
  5511.  
  5512.   - contributed script import-tars did not get the directory in
  5513.     tar archives interpreted correctly.
  5514.  
  5515.   - git-svn was reported to segfault for many people on list and
  5516.     #git; hopefully this has been fixed.
  5517.  
  5518.   - "git-svn clone" does not try to minimize the URL
  5519.     (i.e. connect to higher level hierarchy) by default, as this
  5520.     can prevent clone to fail if only part of the repository
  5521.     (e.g. 'trunk') is open to public.
  5522.  
  5523.   - "git checkout branch^0" did not detach the head when you are
  5524.     already on 'branch'; backported the fix from the 'master'.
  5525.  
  5526.   - "git-config section.var" did not correctly work when
  5527.     existing configuration file had both [section] and [section "name"]
  5528.     next to each other.
  5529.  
  5530.   - "git clone ../other-directory" was fooled if the current
  5531.     directory $PWD points at is a symbolic link.
  5532.  
  5533.   - (build) tree_entry_extract() function was both static inline
  5534.     and extern, which caused trouble compiling with Forte12
  5535.     compilers on Sun.
  5536.  
  5537.   - Many many documentation fixes and updates.
  5538. GIT v1.5.1.4 Release Notes
  5539. ==========================
  5540.  
  5541. Fixes since v1.5.1.3
  5542. --------------------
  5543.  
  5544. * Bugfixes
  5545.  
  5546.   - "git-http-fetch" did not work around a bug in libcurl
  5547.     earlier than 7.16 (curl_multi_remove_handle() was broken).
  5548.  
  5549.   - "git cvsserver" handles a file that was once removed and
  5550.     then added again correctly.
  5551.  
  5552.   - import-tars script (in contrib/) handles GNU tar archives
  5553.     that contain pathnames longer than 100 bytes (long-link
  5554.     extension) correctly.
  5555.  
  5556.   - xdelta test program did not build correctly.
  5557.  
  5558.   - gitweb sometimes tried incorrectly to apply function to
  5559.     decode utf8 twice, resulting in corrupt output.
  5560.  
  5561.   - "git blame -C" mishandled text at the end of a group of
  5562.     lines.
  5563.  
  5564.   - "git log/rev-list --boundary" did not produce output
  5565.     correctly without --left-right option.
  5566.  
  5567.   - Many documentation updates.
  5568. GIT v1.5.1.3 Release Notes
  5569. ==========================
  5570.  
  5571. Fixes since v1.5.1.2
  5572. --------------------
  5573.  
  5574. * Bugfixes
  5575.  
  5576.   - git-add tried to optimize by finding common leading
  5577.     directories across its arguments but botched, causing very
  5578.     confused behaviour.
  5579.  
  5580.   - unofficial rpm.spec file shipped with git was letting
  5581.     ETC_GITCONFIG set to /usr/etc/gitconfig.  Tweak the official
  5582.     Makefile to make it harder for distro people to make the
  5583.     same mistake, by setting the variable to /etc/gitconfig if
  5584.     prefix is set to /usr.
  5585.  
  5586.   - git-svn inconsistently stripped away username from the URL
  5587.     only when svnsync_props was in use.
  5588.  
  5589.   - git-svn got confused when handling symlinks on Mac OS.
  5590.  
  5591.   - git-send-email was not quoting recipient names that have
  5592.     period '.' in them.  Also it did not allow overriding
  5593.     envelope sender, which made it impossible to send patches to
  5594.     certain subscriber-only lists.
  5595.  
  5596.   - built-in write_tree() routine had a sequence that renamed a
  5597.     file that is still open, which some systems did not like.
  5598.  
  5599.   - when memory is very tight, sliding mmap code to read
  5600.     packfiles incorrectly closed the fd that was still being
  5601.     used to read the pack.
  5602.  
  5603.   - import-tars contributed front-end for fastimport was passing
  5604.     wrong directory modes without checking.
  5605.  
  5606.   - git-fastimport trusted its input too much and allowed to
  5607.     create corrupt tree objects with entries without a name.
  5608.  
  5609.   - git-fetch needlessly barfed when too long reflog action
  5610.     description was given by the caller.
  5611.  
  5612. Also contains various documentation updates.
  5613. GIT v1.5.1.2 Release Notes
  5614. ==========================
  5615.  
  5616. Fixes since v1.5.1.1
  5617. --------------------
  5618.  
  5619. * Bugfixes
  5620.  
  5621.   - "git clone" over http from a repository that has lost the
  5622.     loose refs by running "git pack-refs" were broken (a code to
  5623.     deal with this was added to "git fetch" in v1.5.0, but it
  5624.     was missing from "git clone").
  5625.  
  5626.   - "git diff a/ b/" incorrectly fell in "diff between two
  5627.     filesystem objects" codepath, when the user most likely
  5628.     wanted to limit the extent of output to two tracked
  5629.     directories.
  5630.  
  5631.   - git-quiltimport had the same bug as we fixed for
  5632.     git-applymbox in v1.5.1.1 -- it gave an alarming "did not
  5633.     have any patch" message (but did not actually fail and was
  5634.     harmless).
  5635.  
  5636.   - various git-svn fixes.
  5637.  
  5638.   - Sample update hook incorrectly always refused requests to
  5639.     delete branches through push.
  5640.  
  5641.   - git-blame on a very long working tree path had buffer
  5642.     overrun problem.
  5643.  
  5644.   - git-apply did not like to be fed two patches in a row that created
  5645.     and then modified the same file.
  5646.  
  5647.   - git-svn was confused when a non-project was stored directly under
  5648.     trunk/, branches/ and tags/.
  5649.  
  5650.   - git-svn wants the Error.pm module that was at least as new
  5651.     as what we ship as part of git; install ours in our private
  5652.     installation location if the one on the system is older.
  5653.  
  5654.   - An earlier update to command line integer parameter parser was
  5655.     botched and made 'update-index --cacheinfo' completely useless.
  5656.  
  5657.  
  5658. * Documentation updates
  5659.  
  5660.   - Various documentation updates from J. Bruce Fields, Frank
  5661.     Lichtenheld, Alex Riesen and others.  Andrew Ruder started a
  5662.     war on undocumented options.
  5663. GIT v1.5.1.1 Release Notes
  5664. ==========================
  5665.  
  5666. Fixes since v1.5.1
  5667. ------------------
  5668.  
  5669. * Documentation updates
  5670.  
  5671.   - The --left-right option of rev-list and friends is documented.
  5672.  
  5673.   - The documentation for cvsimport has been majorly improved.
  5674.  
  5675.   - "git-show-ref --exclude-existing" was documented.
  5676.  
  5677. * Bugfixes
  5678.  
  5679.   - The implementation of -p option in "git cvsexportcommit" had
  5680.     the meaning of -C (context reduction) option wrong, and
  5681.     loosened the context requirements when it was told to be
  5682.     strict.
  5683.  
  5684.   - "git cvsserver" did not behave like the real cvsserver when
  5685.     client side removed a file from the working tree without
  5686.     doing anything else on the path.  In such a case, it should
  5687.     restore it from the checked out revision.
  5688.  
  5689.   - "git fsck" issued an alarming error message on detached
  5690.     HEAD.  It is not an error since at least 1.5.0.
  5691.  
  5692.   - "git send-email" produced of References header of unbounded length;
  5693.     fixed this with line-folding.
  5694.  
  5695.   - "git archive" to download from remote site should not
  5696.     require you to be in a git repository, but it incorrectly
  5697.     did.
  5698.  
  5699.   - "git apply" ignored -p<n> for "diff --git" formatted
  5700.     patches.
  5701.  
  5702.   - "git rerere" recorded a conflict that had one side empty
  5703.     (the other side adds) incorrectly; this made merging in the
  5704.     other direction fail to use previously recorded resolution.
  5705.  
  5706.   - t4200 test was broken where "wc -l" pads its output with
  5707.     spaces.
  5708.  
  5709.   - "git branch -m old new" to rename branch did not work
  5710.     without a configuration file in ".git/config".
  5711.  
  5712.   - The sample hook for notification e-mail was misnamed.
  5713.  
  5714.   - gitweb did not show type-changing patch correctly in the
  5715.     blobdiff view.
  5716.  
  5717.   - git-svn did not error out with incorrect command line options.
  5718.  
  5719.   - git-svn fell into an infinite loop when insanely long commit
  5720.     message was found.
  5721.  
  5722.   - git-svn dcommit and rebase was confused by patches that were
  5723.     merged from another branch that is managed by git-svn.
  5724.  
  5725.   - git-svn used to get confused when globbing remote branch/tag
  5726.     spec (e.g. "branches = proj/branches/*:refs/remotes/origin/*")
  5727.     is used and there was a plain file that matched the glob.
  5728. GIT v1.5.1 Release Notes
  5729. ========================
  5730.  
  5731. Updates since v1.5.0
  5732. --------------------
  5733.  
  5734. * Deprecated commands and options.
  5735.  
  5736.   - git-diff-stages and git-resolve have been removed.
  5737.  
  5738. * New commands and options.
  5739.  
  5740.   - "git log" and friends take --reverse, which instructs them
  5741.     to give their output in the order opposite from their usual.
  5742.     They typically output from new to old, but with this option
  5743.     their output would read from old to new.  "git shortlog"
  5744.     usually lists older commits first, but with this option,
  5745.     they are shown from new to old.
  5746.  
  5747.   - "git log --pretty=format:<string>" to allow more flexible
  5748.     custom log output.
  5749.  
  5750.   - "git diff" learned --ignore-space-at-eol.  This is a weaker
  5751.     form of --ignore-space-change.
  5752.  
  5753.   - "git diff --no-index pathA pathB" can be used as diff
  5754.     replacement with git specific enhancements.
  5755.  
  5756.   - "git diff --no-index" can read from '-' (standard input).
  5757.  
  5758.   - "git diff" also learned --exit-code to exit with non-zero
  5759.     status when it found differences.  In the future we might
  5760.     want to make this the default but that would be a rather big
  5761.     backward incompatible change; it will stay as an option for
  5762.     now.
  5763.  
  5764.   - "git diff --quiet" is --exit-code with output turned off,
  5765.     meant for scripted use to quickly determine if there is any
  5766.     tree-level difference.
  5767.  
  5768.   - Textual patch generation with "git diff" without -w/-b
  5769.     option has been significantly optimized.  "git blame" got
  5770.     faster because of the same change.
  5771.  
  5772.   - "git log" and "git rev-list" has been optimized
  5773.     significantly when they are used with pathspecs.
  5774.  
  5775.   - "git branch --track" can be used to set up configuration
  5776.     variables to help it easier to base your work on branches
  5777.     you track from a remote site.
  5778.  
  5779.   - "git format-patch --attach" now emits attachments.  Use
  5780.     --inline to get an inlined multipart/mixed.
  5781.  
  5782.   - "git name-rev" learned --refs=<pattern>, to limit the tags
  5783.     used for naming the given revisions only to the ones
  5784.     matching the given pattern.
  5785.  
  5786.   - "git remote update" is to run "git fetch" for defined remotes
  5787.     to update tracking branches.
  5788.  
  5789.   - "git cvsimport" can now take '-d' to talk with a CVS
  5790.     repository different from what are recorded in CVS/Root
  5791.     (overriding it with environment CVSROOT does not work).
  5792.  
  5793.   - "git bundle" can help sneaker-netting your changes between
  5794.     repositories.
  5795.  
  5796.   - "git mergetool" can help 3-way file-level conflict
  5797.     resolution with your favorite graphical merge tools.
  5798.  
  5799.   - A new configuration "core.symlinks" can be used to disable
  5800.     symlinks on filesystems that do not support them; they are
  5801.     checked out as regular files instead.
  5802.  
  5803.   - You can name a commit object with its first line of the
  5804.     message.  The syntax to use is ':/message text'.  E.g.
  5805.  
  5806.     $ git show ":/object name: introduce ':/<oneline prefix>' notation"
  5807.  
  5808.     means the same thing as:
  5809.  
  5810.     $ git show 28a4d940443806412effa246ecc7768a21553ec7
  5811.  
  5812.   - "git bisect" learned a new command "run" that takes a script
  5813.     to run after each revision is checked out to determine if it
  5814.     is good or bad, to automate the bisection process.
  5815.  
  5816.   - "git log" family learned a new traversal option --first-parent,
  5817.     which does what the name suggests.
  5818.  
  5819.  
  5820. * Updated behavior of existing commands.
  5821.  
  5822.   - "git-merge-recursive" used to barf when there are more than
  5823.     one common ancestors for the merge, and merging them had a
  5824.     rename/rename conflict.  This has been fixed.
  5825.  
  5826.   - "git fsck" does not barf on corrupt loose objects.
  5827.  
  5828.   - "git rm" does not remove newly added files without -f.
  5829.  
  5830.   - "git archimport" allows remapping when coming up with git
  5831.     branch names from arch names.
  5832.  
  5833.   - git-svn got almost a rewrite.
  5834.  
  5835.   - core.autocrlf configuration, when set to 'true', makes git
  5836.     to convert CRLF at the end of lines in text files to LF when
  5837.     reading from the filesystem, and convert in reverse when
  5838.     writing to the filesystem.  The variable can be set to
  5839.     'input', in which case the conversion happens only while
  5840.     reading from the filesystem but files are written out with
  5841.     LF at the end of lines.  Currently, which paths to consider
  5842.     'text' (i.e. be subjected to the autocrlf mechanism) is
  5843.     decided purely based on the contents, but the plan is to
  5844.     allow users to explicitly override this heuristic based on
  5845.     paths.
  5846.  
  5847.   - The behavior of 'git-apply', when run in a subdirectory,
  5848.     without --index nor --cached were inconsistent with that of
  5849.     the command with these options.  This was fixed to match the
  5850.     behavior with --index.  A patch that is meant to be applied
  5851.     with -p1 from the toplevel of the project tree can be
  5852.     applied with any custom -p<n> option.  A patch that is not
  5853.     relative to the toplevel needs to be applied with -p<n>
  5854.     option with or without --index (or --cached).
  5855.  
  5856.   - "git diff" outputs a trailing HT when pathnames have embedded
  5857.     SP on +++/--- header lines, in order to help "GNU patch" to
  5858.     parse its output.  "git apply" was already updated to accept
  5859.     this modified output format since ce74618d (Sep 22, 2006).
  5860.  
  5861.   - "git cvsserver" runs hooks/update and honors its exit status.
  5862.  
  5863.   - "git cvsserver" can be told to send everything with -kb.
  5864.  
  5865.   - "git diff --check" also honors the --color output option.
  5866.  
  5867.   - "git name-rev" used to stress the fact that a ref is a tag too
  5868.     much, by saying something like "v1.2.3^0~22".  It now says
  5869.     "v1.2.3~22" in such a case (it still says "v1.2.3^0" if it does
  5870.     not talk about an ancestor of the commit that is tagged, which
  5871.     makes sense).
  5872.  
  5873.   - "git rev-list --boundary" now shows boundary markers for the
  5874.     commits omitted by --max-age and --max-count condition.
  5875.  
  5876.   - The configuration mechanism now reads $(prefix)/etc/gitconfig.
  5877.  
  5878.   - "git apply --verbose" shows what preimage lines were wanted
  5879.     when it couldn't find them.
  5880.  
  5881.   - "git status" in a read-only repository got a bit saner.
  5882.  
  5883.   - "git fetch" (hence "git clone" and "git pull") are less
  5884.     noisy when the output does not go to tty.
  5885.  
  5886.   - "git fetch" between repositories with many refs were slow
  5887.     even when there are not many changes that needed
  5888.     transferring.  This has been sped up by partially rewriting
  5889.     the heaviest parts in C.
  5890.  
  5891.   - "git mailinfo" which splits an e-mail into a patch and the
  5892.     meta-information was rewritten, thanks to Don Zickus.  It
  5893.     handles nested multipart better.  The command was broken for
  5894.     a brief period on 'master' branch since 1.5.0 but the
  5895.     breakage is fixed now.
  5896.  
  5897.   - send-email learned configurable bcc and chain-reply-to.
  5898.  
  5899.   - "git remote show $remote" also talks about branches that
  5900.     would be pushed if you run "git push remote".
  5901.  
  5902.   - Using objects from packs is now seriously optimized by clever
  5903.     use of a cache.  This should be most noticeable in git-log
  5904.     family of commands that involve reading many tree objects.
  5905.     In addition, traversing revisions while filtering changes
  5906.     with pathspecs is made faster by terminating the comparison
  5907.     between the trees as early as possible.
  5908.  
  5909.  
  5910. * Hooks
  5911.  
  5912.   - The part to send out notification e-mails was removed from
  5913.     the sample update hook, as it was not an appropriate place
  5914.     to do so.  The proper place to do this is the new post-receive
  5915.     hook.  An example hook has been added to contrib/hooks/.
  5916.  
  5917.  
  5918. * Others
  5919.  
  5920.   - git-revert, git-gc and git-cherry-pick are now built-ins.
  5921.  
  5922. Fixes since v1.5.0
  5923. ------------------
  5924.  
  5925. These are all in v1.5.0.x series.
  5926.  
  5927. * Documentation updates
  5928.  
  5929.   - Clarifications and corrections to 1.5.0 release notes.
  5930.  
  5931.   - The main documentation did not link to git-remote documentation.
  5932.  
  5933.   - Clarified introductory text of git-rebase documentation.
  5934.  
  5935.   - Converted remaining mentions of update-index on Porcelain
  5936.     documents to git-add/git-rm.
  5937.  
  5938.   - Some i18n.* configuration variables were incorrectly
  5939.     described as core.*; fixed.
  5940.  
  5941.   - added and clarified core.bare, core.legacyheaders configurations.
  5942.  
  5943.   - updated "git-clone --depth" documentation.
  5944.  
  5945.   - user-manual updates.
  5946.  
  5947.   - Options to 'git remote add' were described insufficiently.
  5948.  
  5949.   - Configuration format.suffix was not documented.
  5950.  
  5951.   - Other formatting and spelling fixes.
  5952.  
  5953.   - user-manual has better cross references.
  5954.  
  5955.   - gitweb installation/deployment procedure is now documented.
  5956.  
  5957.  
  5958. * Bugfixes
  5959.  
  5960.   - git-upload-pack closes unused pipe ends; earlier this caused
  5961.     many zombies to hang around.
  5962.  
  5963.   - git-rerere was recording the contents of earlier hunks
  5964.     duplicated in later hunks.  This prevented resolving the same
  5965.     conflict when performing the same merge the other way around.
  5966.  
  5967.   - git-add and git-update-index on a filesystem on which
  5968.     executable bits are unreliable incorrectly reused st_mode
  5969.     bits even when the path changed between symlink and regular
  5970.     file.
  5971.  
  5972.   - git-daemon marks the listening sockets with FD_CLOEXEC so
  5973.     that it won't be leaked into the children.
  5974.  
  5975.   - segfault from git-blame when the mandatory pathname
  5976.     parameter was missing was fixed; usage() message is given
  5977.     instead.
  5978.  
  5979.   - git-rev-list did not read $GIT_DIR/config file, which means
  5980.     that did not honor i18n.logoutputencoding correctly.
  5981.  
  5982.   - Automated merge conflict handling when changes to symbolic
  5983.     links conflicted were completely broken.  The merge-resolve
  5984.     strategy created a regular file with conflict markers in it
  5985.     in place of the symbolic link.  The default strategy,
  5986.     merge-recursive was even more broken.  It removed the path
  5987.     that was pointed at by the symbolic link.  Both of these
  5988.     problems have been fixed.
  5989.  
  5990.   - 'git diff maint master next' did not correctly give combined
  5991.     diff across three trees.
  5992.  
  5993.   - 'git fast-import' portability fix for Solaris.
  5994.  
  5995.   - 'git show-ref --verify' without arguments did not error out
  5996.     but segfaulted.
  5997.  
  5998.   - 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra
  5999.     slashes after a/ and b/.
  6000.  
  6001.   - 'git format-patch' produced too long filenames if the commit
  6002.     message had too long line at the beginning.
  6003.  
  6004.   - Running 'make all' and then without changing anything
  6005.     running 'make install' still rebuilt some files.  This
  6006.     was inconvenient when building as yourself and then
  6007.     installing as root (especially problematic when the source
  6008.     directory is on NFS and root is mapped to nobody).
  6009.  
  6010.   - 'git-rerere' failed to deal with two unconflicted paths that
  6011.     sorted next to each other.
  6012.  
  6013.   - 'git-rerere' attempted to open(2) a symlink and failed if
  6014.     there was a conflict.  Since a conflicting change to a
  6015.     symlink would not benefit from rerere anyway, the command
  6016.     now ignores conflicting changes to symlinks.
  6017.  
  6018.   - 'git-repack' did not like to pass more than 64 arguments
  6019.     internally to underlying 'rev-list' logic, which made it
  6020.     impossible to repack after accumulating many (small) packs
  6021.     in the repository.
  6022.  
  6023.   - 'git-diff' to review the combined diff during a conflicted
  6024.     merge were not reading the working tree version correctly
  6025.     when changes to a symbolic link conflicted.  It should have
  6026.     read the data using readlink(2) but read from the regular
  6027.     file the symbolic link pointed at.
  6028.  
  6029.   - 'git-remote' did not like period in a remote's name.
  6030.  
  6031.   - 'git.el' honors the commit coding system from the configuration.
  6032.  
  6033.   - 'blameview' in contrib/ correctly digs deeper when a line is
  6034.     clicked.
  6035.  
  6036.   - 'http-push' correctly makes sure the remote side has leading
  6037.     path.  Earlier it started in the middle of the path, and
  6038.     incorrectly.
  6039.  
  6040.   - 'git-merge' did not exit with non-zero status when the
  6041.     working tree was dirty and cannot fast forward.  It does
  6042.     now.
  6043.  
  6044.   - 'cvsexportcommit' does not lose yet-to-be-used message file.
  6045.  
  6046.   - int-vs-size_t typefix when running combined diff on files
  6047.     over 2GB long.
  6048.  
  6049.   - 'git apply --whitespace=strip' should not touch unmodified
  6050.     lines.
  6051.  
  6052.   - 'git-mailinfo' choke when a logical header line was too long.
  6053.  
  6054.   - 'git show A..B' did not error out.  Negative ref ("not A" in
  6055.     this example) does not make sense for the purpose of the
  6056.     command, so now it errors out.
  6057.  
  6058.   - 'git fmt-merge-msg --file' without file parameter did not
  6059.     correctly error out.
  6060.  
  6061.   - 'git archimport' barfed upon encountering a commit without
  6062.     summary.
  6063.  
  6064.   - 'git index-pack' did not protect itself from getting a short
  6065.     read out of pread(2).
  6066.  
  6067.   - 'git http-push' had a few buffer overruns.
  6068.  
  6069.   - Build dependency fixes to rebuild fetch.o when other headers
  6070.     change.
  6071.  
  6072.   - git.el does not add duplicate sign-off lines.
  6073.  
  6074.   - git-commit shows the full stat of the resulting commit, not
  6075.     just about the files in the current directory, when run from
  6076.     a subdirectory.
  6077.  
  6078.   - "git-checkout -m '@{8 hours ago}'" had a funny failure from
  6079.     eval; fixed.
  6080.  
  6081.   - git-merge (hence git-pull) did not refuse fast-forwarding
  6082.     when the working tree had local changes that would have
  6083.     conflicted with it.
  6084.  
  6085.   - a handful small fixes to gitweb.
  6086.  
  6087.   - build procedure for user-manual is fixed not to require locally
  6088.     installed stylesheets.
  6089.  
  6090.   - "git commit $paths" on paths whose earlier contents were
  6091.     already updated in the index were failing out.
  6092.  
  6093.  
  6094. * Tweaks
  6095.  
  6096.   - sliding mmap() inefficiently mmaped the same region of a
  6097.     packfile with an access pattern that used objects in the
  6098.     reverse order.  This has been made more efficient.
  6099. GIT v1.5.0.7 Release Notes
  6100. ==========================
  6101.  
  6102. Fixes since v1.5.0.6
  6103. --------------------
  6104.  
  6105. * Bugfixes
  6106.  
  6107.   - git-upload-pack failed to close unused pipe ends, resulting
  6108.     in many zombies to hang around.
  6109.  
  6110.   - git-rerere was recording the contents of earlier hunks
  6111.     duplicated in later hunks.  This prevented resolving the same
  6112.     conflict when performing the same merge the other way around.
  6113.  
  6114. * Documentation
  6115.  
  6116.   - a few documentation fixes from Debian package maintainer.
  6117. GIT v1.5.0.6 Release Notes
  6118. ==========================
  6119.  
  6120. Fixes since v1.5.0.5
  6121. --------------------
  6122.  
  6123. * Bugfixes
  6124.  
  6125.   - a handful small fixes to gitweb.
  6126.  
  6127.   - build procedure for user-manual is fixed not to require locally
  6128.     installed stylesheets.
  6129.  
  6130.   - "git commit $paths" on paths whose earlier contents were
  6131.     already updated in the index were failing out.
  6132.  
  6133. * Documentation
  6134.  
  6135.   - user-manual has better cross references.
  6136.  
  6137.   - gitweb installation/deployment procedure is now documented.
  6138. GIT v1.5.0.5 Release Notes
  6139. ==========================
  6140.  
  6141. Fixes since v1.5.0.3
  6142. --------------------
  6143.  
  6144. * Bugfixes
  6145.  
  6146.   - git-merge (hence git-pull) did not refuse fast-forwarding
  6147.     when the working tree had local changes that would have
  6148.     conflicted with it.
  6149.  
  6150.   - git.el does not add duplicate sign-off lines.
  6151.  
  6152.   - git-commit shows the full stat of the resulting commit, not
  6153.     just about the files in the current directory, when run from
  6154.     a subdirectory.
  6155.  
  6156.   - "git-checkout -m '@{8 hours ago}'" had a funny failure from
  6157.     eval; fixed.
  6158.  
  6159.   - git-gui updates.
  6160.  
  6161. * Documentation updates
  6162.  
  6163. * User manual updates
  6164. GIT v1.5.0.3 Release Notes
  6165. ==========================
  6166.  
  6167. Fixes since v1.5.0.2
  6168. --------------------
  6169.  
  6170. * Bugfixes
  6171.  
  6172.   - 'git.el' honors the commit coding system from the configuration.
  6173.  
  6174.   - 'blameview' in contrib/ correctly digs deeper when a line is
  6175.     clicked.
  6176.  
  6177.   - 'http-push' correctly makes sure the remote side has leading
  6178.     path.  Earlier it started in the middle of the path, and
  6179.     incorrectly.
  6180.  
  6181.   - 'git-merge' did not exit with non-zero status when the
  6182.     working tree was dirty and cannot fast forward.  It does
  6183.     now.
  6184.  
  6185.   - 'cvsexportcommit' does not lose yet-to-be-used message file.
  6186.  
  6187.   - int-vs-size_t typefix when running combined diff on files
  6188.     over 2GB long.
  6189.  
  6190.   - 'git apply --whitespace=strip' should not touch unmodified
  6191.     lines.
  6192.  
  6193.   - 'git-mailinfo' choke when a logical header line was too long.
  6194.  
  6195.   - 'git show A..B' did not error out.  Negative ref ("not A" in
  6196.     this example) does not make sense for the purpose of the
  6197.     command, so now it errors out.
  6198.  
  6199.   - 'git fmt-merge-msg --file' without file parameter did not
  6200.     correctly error out.
  6201.  
  6202.   - 'git archimport' barfed upon encountering a commit without
  6203.     summary.
  6204.  
  6205.   - 'git index-pack' did not protect itself from getting a short
  6206.     read out of pread(2).
  6207.  
  6208.   - 'git http-push' had a few buffer overruns.
  6209.  
  6210.   - Build dependency fixes to rebuild fetch.o when other headers
  6211.     change.
  6212.  
  6213. * Documentation updates
  6214.  
  6215.   - user-manual updates.
  6216.  
  6217.   - Options to 'git remote add' were described insufficiently.
  6218.  
  6219.   - Configuration format.suffix was not documented.
  6220.  
  6221.   - Other formatting and spelling fixes.
  6222. GIT v1.5.0.2 Release Notes
  6223. ==========================
  6224.  
  6225. Fixes since v1.5.0.1
  6226. --------------------
  6227.  
  6228. * Bugfixes
  6229.  
  6230.   - Automated merge conflict handling when changes to symbolic
  6231.     links conflicted were completely broken.  The merge-resolve
  6232.     strategy created a regular file with conflict markers in it
  6233.     in place of the symbolic link.  The default strategy,
  6234.     merge-recursive was even more broken.  It removed the path
  6235.     that was pointed at by the symbolic link.  Both of these
  6236.     problems have been fixed.
  6237.  
  6238.   - 'git diff maint master next' did not correctly give combined
  6239.     diff across three trees.
  6240.  
  6241.   - 'git fast-import' portability fix for Solaris.
  6242.  
  6243.   - 'git show-ref --verify' without arguments did not error out
  6244.     but segfaulted.
  6245.  
  6246.   - 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra
  6247.     slashes after a/ and b/.
  6248.  
  6249.   - 'git format-patch' produced too long filenames if the commit
  6250.     message had too long line at the beginning.
  6251.  
  6252.   - Running 'make all' and then without changing anything
  6253.     running 'make install' still rebuilt some files.  This
  6254.     was inconvenient when building as yourself and then
  6255.     installing as root (especially problematic when the source
  6256.     directory is on NFS and root is mapped to nobody).
  6257.  
  6258.   - 'git-rerere' failed to deal with two unconflicted paths that
  6259.     sorted next to each other.
  6260.  
  6261.   - 'git-rerere' attempted to open(2) a symlink and failed if
  6262.     there was a conflict.  Since a conflicting change to a
  6263.     symlink would not benefit from rerere anyway, the command
  6264.     now ignores conflicting changes to symlinks.
  6265.  
  6266.   - 'git-repack' did not like to pass more than 64 arguments
  6267.     internally to underlying 'rev-list' logic, which made it
  6268.     impossible to repack after accumulating many (small) packs
  6269.     in the repository.
  6270.  
  6271.   - 'git-diff' to review the combined diff during a conflicted
  6272.     merge were not reading the working tree version correctly
  6273.     when changes to a symbolic link conflicted.  It should have
  6274.     read the data using readlink(2) but read from the regular
  6275.     file the symbolic link pointed at.
  6276.  
  6277.   - 'git-remote' did not like period in a remote's name.
  6278.  
  6279. * Documentation updates
  6280.  
  6281.   - added and clarified core.bare, core.legacyheaders configurations.
  6282.  
  6283.   - updated "git-clone --depth" documentation.
  6284.  
  6285.  
  6286. * Assorted git-gui fixes.
  6287. GIT v1.5.0.1 Release Notes
  6288. ==========================
  6289.  
  6290. Fixes since v1.5.0
  6291. ------------------
  6292.  
  6293. * Documentation updates
  6294.  
  6295.   - Clarifications and corrections to 1.5.0 release notes.
  6296.  
  6297.   - The main documentation did not link to git-remote documentation.
  6298.  
  6299.   - Clarified introductory text of git-rebase documentation.
  6300.  
  6301.   - Converted remaining mentions of update-index on Porcelain
  6302.     documents to git-add/git-rm.
  6303.  
  6304.   - Some i18n.* configuration variables were incorrectly
  6305.     described as core.*; fixed.
  6306.  
  6307. * Bugfixes
  6308.  
  6309.   - git-add and git-update-index on a filesystem on which
  6310.     executable bits are unreliable incorrectly reused st_mode
  6311.     bits even when the path changed between symlink and regular
  6312.     file.
  6313.  
  6314.   - git-daemon marks the listening sockets with FD_CLOEXEC so
  6315.     that it won't be leaked into the children.
  6316.  
  6317.   - segfault from git-blame when the mandatory pathname
  6318.     parameter was missing was fixed; usage() message is given
  6319.     instead.
  6320.  
  6321.   - git-rev-list did not read $GIT_DIR/config file, which means
  6322.     that did not honor i18n.logoutputencoding correctly.
  6323.  
  6324. * Tweaks
  6325.  
  6326.   - sliding mmap() inefficiently mmaped the same region of a
  6327.     packfile with an access pattern that used objects in the
  6328.     reverse order.  This has been made more efficient.
  6329. GIT v1.5.0 Release Notes
  6330. ========================
  6331.  
  6332. Old news
  6333. --------
  6334.  
  6335. This section is for people who are upgrading from ancient
  6336. versions of git.  Although all of the changes in this section
  6337. happened before the current v1.4.4 release, they are summarized
  6338. here in the v1.5.0 release notes for people who skipped earlier
  6339. versions.
  6340.  
  6341. As of git v1.5.0 there are some optional features that changes
  6342. the repository to allow data to be stored and transferred more
  6343. efficiently.  These features are not enabled by default, as they
  6344. will make the repository unusable with older versions of git.
  6345. Specifically, the available options are:
  6346.  
  6347.  - There is a configuration variable core.legacyheaders that
  6348.    changes the format of loose objects so that they are more
  6349.    efficient to pack and to send out of the repository over git
  6350.    native protocol, since v1.4.2.  However, loose objects
  6351.    written in the new format cannot be read by git older than
  6352.    that version; people fetching from your repository using
  6353.    older clients over dumb transports (e.g. http) using older
  6354.    versions of git will also be affected.
  6355.  
  6356.    To let git use the new loose object format, you have to
  6357.    set core.legacyheaders to false.
  6358.  
  6359.  - Since v1.4.3, configuration repack.usedeltabaseoffset allows
  6360.    packfile to be created in more space efficient format, which
  6361.    cannot be read by git older than that version.
  6362.  
  6363.    To let git use the new format for packfiles, you have to
  6364.    set repack.usedeltabaseoffset to true.
  6365.  
  6366. The above two new features are not enabled by default and you
  6367. have to explicitly ask for them, because they make repositories
  6368. unreadable by older versions of git, and in v1.5.0 we still do
  6369. not enable them by default for the same reason.  We will change
  6370. this default probably 1 year after 1.4.2's release, when it is
  6371. reasonable to expect everybody to have new enough version of
  6372. git.
  6373.  
  6374.  - 'git pack-refs' appeared in v1.4.4; this command allows tags
  6375.    to be accessed much more efficiently than the traditional
  6376.    'one-file-per-tag' format.  Older git-native clients can
  6377.    still fetch from a repository that packed and pruned refs
  6378.    (the server side needs to run the up-to-date version of git),
  6379.    but older dumb transports cannot.  Packing of refs is done by
  6380.    an explicit user action, either by use of "git pack-refs
  6381.    --prune" command or by use of "git gc" command.
  6382.  
  6383.  - 'git -p' to paginate anything -- many commands do pagination
  6384.    by default on a tty.  Introduced between v1.4.1 and v1.4.2;
  6385.    this may surprise old timers.
  6386.  
  6387.  - 'git archive' superseded 'git tar-tree' in v1.4.3;
  6388.  
  6389.  - 'git cvsserver' was new invention in v1.3.0;
  6390.  
  6391.  - 'git repo-config', 'git grep', 'git rebase' and 'gitk' were
  6392.    seriously enhanced during v1.4.0 timeperiod.
  6393.  
  6394.  - 'gitweb' became part of git.git during v1.4.0 timeperiod and
  6395.    seriously modified since then.
  6396.  
  6397.  - reflog is an v1.4.0 invention.  This allows you to name a
  6398.    revision that a branch used to be at (e.g. "git diff
  6399.    master@{yesterday} master" allows you to see changes since
  6400.    yesterday's tip of the branch).
  6401.  
  6402.  
  6403. Updates in v1.5.0 since v1.4.4 series
  6404. -------------------------------------
  6405.  
  6406. * Index manipulation
  6407.  
  6408.  - git-add is to add contents to the index (aka "staging area"
  6409.    for the next commit), whether the file the contents happen to
  6410.    be is an existing one or a newly created one.
  6411.  
  6412.  - git-add without any argument does not add everything
  6413.    anymore.  Use 'git-add .' instead.  Also you can add
  6414.    otherwise ignored files with an -f option.
  6415.  
  6416.  - git-add tries to be more friendly to users by offering an
  6417.    interactive mode ("git-add -i").
  6418.  
  6419.  - git-commit <path> used to refuse to commit if <path> was
  6420.    different between HEAD and the index (i.e. update-index was
  6421.    used on it earlier).  This check was removed.
  6422.  
  6423.  - git-rm is much saner and safer.  It is used to remove paths
  6424.    from both the index file and the working tree, and makes sure
  6425.    you are not losing any local modification before doing so.
  6426.  
  6427.  - git-reset <tree> <paths>... can be used to revert index
  6428.    entries for selected paths.
  6429.  
  6430.  - git-update-index is much less visible.  Many suggestions to
  6431.    use the command in git output and documentation have now been
  6432.    replaced by simpler commands such as "git add" or "git rm".
  6433.  
  6434.  
  6435. * Repository layout and objects transfer
  6436.  
  6437.  - The data for origin repository is stored in the configuration
  6438.    file $GIT_DIR/config, not in $GIT_DIR/remotes/, for newly
  6439.    created clones.  The latter is still supported and there is
  6440.    no need to convert your existing repository if you are
  6441.    already comfortable with your workflow with the layout.
  6442.  
  6443.  - git-clone always uses what is known as "separate remote"
  6444.    layout for a newly created repository with a working tree.
  6445.  
  6446.    A repository with the separate remote layout starts with only
  6447.    one default branch, 'master', to be used for your own
  6448.    development.  Unlike the traditional layout that copied all
  6449.    the upstream branches into your branch namespace (while
  6450.    renaming their 'master' to your 'origin'), the new layout
  6451.    puts upstream branches into local "remote-tracking branches"
  6452.    with their own namespace. These can be referenced with names
  6453.    such as "origin/$upstream_branch_name" and are stored in
  6454.    .git/refs/remotes rather than .git/refs/heads where normal
  6455.    branches are stored.
  6456.  
  6457.    This layout keeps your own branch namespace less cluttered,
  6458.    avoids name collision with your upstream, makes it possible
  6459.    to automatically track new branches created at the remote
  6460.    after you clone from it, and makes it easier to interact with
  6461.    more than one remote repository (you can use "git remote" to
  6462.    add other repositories to track).  There might be some
  6463.    surprises:
  6464.  
  6465.    * 'git branch' does not show the remote tracking branches.
  6466.      It only lists your own branches.  Use '-r' option to view
  6467.      the tracking branches.
  6468.  
  6469.    * If you are forking off of a branch obtained from the
  6470.      upstream, you would have done something like 'git branch
  6471.      my-next next', because traditional layout dropped the
  6472.      tracking branch 'next' into your own branch namespace.
  6473.      With the separate remote layout, you say 'git branch next
  6474.      origin/next', which allows you to use the matching name
  6475.      'next' for your own branch.  It also allows you to track a
  6476.      remote other than 'origin' (i.e. where you initially cloned
  6477.      from) and fork off of a branch from there the same way
  6478.      (e.g. "git branch mingw j6t/master").
  6479.  
  6480.    Repositories initialized with the traditional layout continue
  6481.    to work.
  6482.  
  6483.  - New branches that appear on the origin side after a clone is
  6484.    made are also tracked automatically.  This is done with an
  6485.    wildcard refspec "refs/heads/*:refs/remotes/origin/*", which
  6486.    older git does not understand, so if you clone with 1.5.0,
  6487.    you would need to downgrade remote.*.fetch in the
  6488.    configuration file to specify each branch you are interested
  6489.    in individually if you plan to fetch into the repository with
  6490.    older versions of git (but why would you?).
  6491.  
  6492.  - Similarly, wildcard refspec "refs/heads/*:refs/remotes/me/*"
  6493.    can be given to "git-push" command to update the tracking
  6494.    branches that is used to track the repository you are pushing
  6495.    from on the remote side.
  6496.  
  6497.  - git-branch and git-show-branch know remote tracking branches
  6498.    (use the command line switch "-r" to list only tracked branches).
  6499.  
  6500.  - git-push can now be used to delete a remote branch or a tag.
  6501.    This requires the updated git on the remote side (use "git
  6502.    push <remote> :refs/heads/<branch>" to delete "branch").
  6503.  
  6504.  - git-push more aggressively keeps the transferred objects
  6505.    packed.  Earlier we recommended to monitor amount of loose
  6506.    objects and repack regularly, but you should repack when you
  6507.    accumulated too many small packs this way as well.  Updated
  6508.    git-count-objects helps you with this.
  6509.  
  6510.  - git-fetch also more aggressively keeps the transferred objects
  6511.    packed.  This behavior of git-push and git-fetch can be
  6512.    tweaked with a single configuration transfer.unpacklimit (but
  6513.    usually there should not be any need for a user to tweak it).
  6514.  
  6515.  - A new command, git-remote, can help you manage your remote
  6516.    tracking branch definitions.
  6517.  
  6518.  - You may need to specify explicit paths for upload-pack and/or
  6519.    receive-pack due to your ssh daemon configuration on the
  6520.    other end.  This can now be done via remote.*.uploadpack and
  6521.    remote.*.receivepack configuration.
  6522.  
  6523.  
  6524. * Bare repositories
  6525.  
  6526.  - Certain commands change their behavior in a bare repository
  6527.    (i.e. a repository without associated working tree).  We use
  6528.    a fairly conservative heuristic (if $GIT_DIR is ".git", or
  6529.    ends with "/.git", the repository is not bare) to decide if a
  6530.    repository is bare, but "core.bare" configuration variable
  6531.    can be used to override the heuristic when it misidentifies
  6532.    your repository.
  6533.  
  6534.  - git-fetch used to complain updating the current branch but
  6535.    this is now allowed for a bare repository.  So is the use of
  6536.    'git-branch -f' to update the current branch.
  6537.  
  6538.  - Porcelain-ish commands that require a working tree refuses to
  6539.    work in a bare repository.
  6540.  
  6541.  
  6542. * Reflog
  6543.  
  6544.  - Reflog records the history from the view point of the local
  6545.    repository. In other words, regardless of the real history,
  6546.    the reflog shows the history as seen by one particular
  6547.    repository (this enables you to ask "what was the current
  6548.    revision in _this_ repository, yesterday at 1pm?").  This
  6549.    facility is enabled by default for repositories with working
  6550.    trees, and can be accessed with the "branch@{time}" and
  6551.    "branch@{Nth}" notation.
  6552.  
  6553.  - "git show-branch" learned showing the reflog data with the
  6554.    new -g option.  "git log" has -g option to view reflog
  6555.    entries in a more verbose manner.
  6556.  
  6557.  - git-branch knows how to rename branches and moves existing
  6558.    reflog data from the old branch to the new one.
  6559.  
  6560.  - In addition to the reflog support in v1.4.4 series, HEAD
  6561.    reference maintains its own log.  "HEAD@{5.minutes.ago}"
  6562.    means the commit you were at 5 minutes ago, which takes
  6563.    branch switching into account.  If you want to know where the
  6564.    tip of your current branch was at 5 minutes ago, you need to
  6565.    explicitly say its name (e.g. "master@{5.minutes.ago}") or
  6566.    omit the refname altogether i.e. "@{5.minutes.ago}".
  6567.  
  6568.  - The commits referred to by reflog entries are now protected
  6569.    against pruning.  The new command "git reflog expire" can be
  6570.    used to truncate older reflog entries and entries that refer
  6571.    to commits that have been pruned away previously with older
  6572.    versions of git.
  6573.  
  6574.    Existing repositories that have been using reflog may get
  6575.    complaints from fsck-objects and may not be able to run
  6576.    git-repack, if you had run git-prune from older git; please
  6577.    run "git reflog expire --stale-fix --all" first to remove
  6578.    reflog entries that refer to commits that are no longer in
  6579.    the repository when that happens.
  6580.  
  6581.  
  6582. * Crufts removal
  6583.  
  6584.  - We used to say "old commits are retrievable using reflog and
  6585.    'master@{yesterday}' syntax as long as you haven't run
  6586.    git-prune".  We no longer have to say the latter half of the
  6587.    above sentence, as git-prune does not remove things reachable
  6588.    from reflog entries.
  6589.  
  6590.  - There is a toplevel garbage collector script, 'git-gc', that
  6591.    runs periodic cleanup functions, including 'git-repack -a -d',
  6592.    'git-reflog expire', 'git-pack-refs --prune', and 'git-rerere
  6593.    gc'.
  6594.  
  6595.  - The output from fsck ("fsck-objects" is called just "fsck"
  6596.    now, but the old name continues to work) was needlessly
  6597.    alarming in that it warned missing objects that are reachable
  6598.    only from dangling objects.  This has been corrected and the
  6599.    output is much more useful.
  6600.  
  6601.  
  6602. * Detached HEAD
  6603.  
  6604.  - You can use 'git-checkout' to check out an arbitrary revision
  6605.    or a tag as well, instead of named branches.  This will
  6606.    dissociate your HEAD from the branch you are currently on.
  6607.  
  6608.    A typical use of this feature is to "look around".  E.g.
  6609.  
  6610.         $ git checkout v2.6.16
  6611.         ... compile, test, etc.
  6612.         $ git checkout v2.6.17
  6613.         ... compile, test, etc.
  6614.  
  6615.  - After detaching your HEAD, you can go back to an existing
  6616.    branch with usual "git checkout $branch".  Also you can
  6617.    start a new branch using "git checkout -b $newbranch" to
  6618.    start a new branch at that commit.
  6619.  
  6620.  - You can even pull from other repositories, make merges and
  6621.    commits while your HEAD is detached.  Also you can use "git
  6622.    reset" to jump to arbitrary commit, while still keeping your
  6623.    HEAD detached.
  6624.  
  6625.    Remember that a detached state is volatile, i.e. it will be forgotten
  6626.    as soon as you move away from it with the checkout or reset command,
  6627.    unless a branch is created from it as mentioned above.  It is also
  6628.    possible to rescue a lost detached state from the HEAD reflog.
  6629.  
  6630.  
  6631. * Packed refs
  6632.  
  6633.  - Repositories with hundreds of tags have been paying large
  6634.    overhead, both in storage and in runtime, due to the
  6635.    traditional one-ref-per-file format.  A new command,
  6636.    git-pack-refs, can be used to "pack" them in more efficient
  6637.    representation (you can let git-gc do this for you).
  6638.  
  6639.  - Clones and fetches over dumb transports are now aware of
  6640.    packed refs and can download from repositories that use
  6641.    them.
  6642.  
  6643.  
  6644. * Configuration
  6645.  
  6646.  - configuration related to color setting are consolidated under
  6647.    color.* namespace (older diff.color.*, status.color.* are
  6648.    still supported).
  6649.  
  6650.  - 'git-repo-config' command is accessible as 'git-config' now.
  6651.  
  6652.  
  6653. * Updated features
  6654.  
  6655.  - git-describe uses better criteria to pick a base ref.  It
  6656.    used to pick the one with the newest timestamp, but now it
  6657.    picks the one that is topologically the closest (that is,
  6658.    among ancestors of commit C, the ref T that has the shortest
  6659.    output from "git-rev-list T..C" is chosen).
  6660.  
  6661.  - git-describe gives the number of commits since the base ref
  6662.    between the refname and the hash suffix.  E.g. the commit one
  6663.    before v2.6.20-rc6 in the kernel repository is:
  6664.  
  6665.         v2.6.20-rc5-306-ga21b069
  6666.  
  6667.    which tells you that its object name begins with a21b069,
  6668.    v2.6.20-rc5 is an ancestor of it (meaning, the commit
  6669.    contains everything -rc5 has), and there are 306 commits
  6670.    since v2.6.20-rc5.
  6671.  
  6672.  - git-describe with --abbrev=0 can be used to show only the
  6673.    name of the base ref.
  6674.  
  6675.  - git-blame learned a new option, --incremental, that tells it
  6676.    to output the blames as they are assigned.  A sample script
  6677.    to use it is also included as contrib/blameview.
  6678.  
  6679.  - git-blame starts annotating from the working tree by default.
  6680.  
  6681.  
  6682. * Less external dependency
  6683.  
  6684.  - We no longer require the "merge" program from the RCS suite.
  6685.    All 3-way file-level merges are now done internally.
  6686.  
  6687.  - The original implementation of git-merge-recursive which was
  6688.    in Python has been removed; we have a C implementation of it
  6689.    now.
  6690.  
  6691.  - git-shortlog is no longer a Perl script.  It no longer
  6692.    requires output piped from git-log; it can accept revision
  6693.    parameters directly on the command line.
  6694.  
  6695.  
  6696. * I18n
  6697.  
  6698.  - We have always encouraged the commit message to be encoded in
  6699.    UTF-8, but the users are allowed to use legacy encoding as
  6700.    appropriate for their projects.  This will continue to be the
  6701.    case.  However, a non UTF-8 commit encoding _must_ be
  6702.    explicitly set with i18n.commitencoding in the repository
  6703.    where a commit is made; otherwise git-commit-tree will
  6704.    complain if the log message does not look like a valid UTF-8
  6705.    string.
  6706.  
  6707.  - The value of i18n.commitencoding in the originating
  6708.    repository is recorded in the commit object on the "encoding"
  6709.    header, if it is not UTF-8.  git-log and friends notice this,
  6710.    and reencodes the message to the log output encoding when
  6711.    displaying, if they are different.  The log output encoding
  6712.    is determined by "git log --encoding=<encoding>",
  6713.    i18n.logoutputencoding configuration, or i18n.commitencoding
  6714.    configuration, in the decreasing order of preference, and
  6715.    defaults to UTF-8.
  6716.  
  6717.  - Tools for e-mailed patch application now default to -u
  6718.    behavior; i.e. it always re-codes from the e-mailed encoding
  6719.    to the encoding specified with i18n.commitencoding.  This
  6720.    unfortunately forces projects that have happily been using a
  6721.    legacy encoding without setting i18n.commitencoding to set
  6722.    the configuration, but taken with other improvement, please
  6723.    excuse us for this very minor one-time inconvenience.
  6724.  
  6725.  
  6726. * e-mailed patches
  6727.  
  6728.  - See the above I18n section.
  6729.  
  6730.  - git-format-patch now enables --binary without being asked.
  6731.    git-am does _not_ default to it, as sending binary patch via
  6732.    e-mail is unusual and is harder to review than textual
  6733.    patches and it is prudent to require the person who is
  6734.    applying the patch to explicitly ask for it.
  6735.  
  6736.  - The default suffix for git-format-patch output is now ".patch",
  6737.    not ".txt".  This can be changed with --suffix=.txt option,
  6738.    or setting the config variable "format.suffix" to ".txt".
  6739.  
  6740.  
  6741. * Foreign SCM interfaces
  6742.  
  6743.  - git-svn now requires the Perl SVN:: libraries, the
  6744.    command-line backend was too slow and limited.
  6745.  
  6746.  - the 'commit' subcommand of git-svn has been renamed to
  6747.    'set-tree', and 'dcommit' is the recommended replacement for
  6748.    day-to-day work.
  6749.  
  6750.  - git fast-import backend.
  6751.  
  6752.  
  6753. * User support
  6754.  
  6755.  - Quite a lot of documentation updates.
  6756.  
  6757.  - Bash completion scripts have been updated heavily.
  6758.  
  6759.  - Better error messages for often used Porcelainish commands.
  6760.  
  6761.  - Git GUI.  This is a simple Tk based graphical interface for
  6762.    common Git operations.
  6763.  
  6764.  
  6765. * Sliding mmap
  6766.  
  6767.  - We used to assume that we can mmap the whole packfile while
  6768.    in use, but with a large project this consumes huge virtual
  6769.    memory space and truly huge ones would not fit in the
  6770.    userland address space on 32-bit platforms.  We now mmap huge
  6771.    packfile in pieces to avoid this problem.
  6772.  
  6773.  
  6774. * Shallow clones
  6775.  
  6776.  - There is a partial support for 'shallow' repositories that
  6777.    keeps only recent history.  A 'shallow clone' is created by
  6778.    specifying how deep that truncated history should be
  6779.    (e.g. "git clone --depth 5 git://some.where/repo.git").
  6780.  
  6781.    Currently a shallow repository has number of limitations:
  6782.  
  6783.    - Cloning and fetching _from_ a shallow clone are not
  6784.      supported (nor tested -- so they might work by accident but
  6785.      they are not expected to).
  6786.  
  6787.    - Pushing from nor into a shallow clone are not expected to
  6788.      work.
  6789.  
  6790.    - Merging inside a shallow repository would work as long as a
  6791.      merge base is found in the recent history, but otherwise it
  6792.      will be like merging unrelated histories and may result in
  6793.      huge conflicts.
  6794.  
  6795.    but this would be more than adequate for people who want to
  6796.    look at near the tip of a big project with a deep history and
  6797.    send patches in e-mail format.
clone this paste RAW Paste Data