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