Git 2.5.0/2.4.7 发布,分布式版本控制系统
Git 2.5.0 正式发布,主要更新内容:
UI,工作流 & 新特性
  
   * The bash completion script (in contrib/) learned a few options that
     "git revert" takes.
  
   * Whitespace breakages in deleted and context lines can also be
     painted in the output of "git diff" and friends with the new
     --ws-error-highlight option.
  
   * List of commands shown by "git help" are grouped along the workflow
     elements to help early learners.
  
   * "git p4" now detects the filetype (e.g. binary) correctly even when
     the files are opened exclusively.
  
   * git p4 attempts to better handle branches in Perforce.
  
   * "git p4" learned "--changes-block-size <n>" to read the changes in
     chunks from Perforce, instead of making one call to "p4 changes"
     that may trigger "too many rows scanned" error from Perforce.
  
   * More workaround for Perforce's row number limit in "git p4".
  
   * Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
     command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
     did not let the shell interpolate the contents of the environment
     variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
  
   * A new short-hand <branch>@{push} denotes the remote-tracking branch
     that tracks the branch at the remote the <branch> would be pushed
     to.
  
   * "git show-branch --topics HEAD" (with no other arguments) did not
     do anything interesting.  Instead, contrast the given revision
     against all the local branches by default.
  
   * A replacement for contrib/workdir/git-new-workdir that does not
     rely on symbolic links and make sharing of objects and refs safer
     by making the borrowee and borrowers aware of each other.
  
     Consider this as still an experimental feature; its UI is still
     likely to change.
  
   * Tweak the sample "store" backend of the credential helper to honor
     XDG configuration file locations when specified.
  
   * A heuristic we use to catch mistyped paths on the command line
     "git <cmd> <revs> <pathspec>" is to make sure that all the non-rev
     parameters in the later part of the command line are names of the
     files in the working tree, but that means "git grep $str -- \*.c"
     must always be disambiguated with "--", because nobody sane will
     create a file whose name literally is asterisk-dot-see.  
  
   * "git merge FETCH_HEAD" learned that the previous "git fetch" could
     be to create an Octopus merge, i.e. recording multiple branches
     that are not marked as "not-for-merge"
  
   * Filter scripts were run with SIGPIPE disabled on the Git side,
     expecting that they may not read what Git feeds them to filter.
  
   * Instead of dying immediately upon failing to obtain a lock, the
     locking (of refs etc) retries after a short while with backoff.
  
   * Introduce http.<url>.SSLCipherList configuration variable to tweak
     the list of cipher suite to be used with libcURL when talking with
     https:// sites.
  
   * "git subtree" script (in contrib/) used "echo -n" to produce
     progress messages in a non-portable way.
  
   * "git subtree" script (in contrib/) does not have --squash option
     when pushing, but the documentation and help text pretended as if
     it did.
  
   * The Git subcommand completion (in contrib/) no longer lists credential
     helpers among candidates; they are not something the end user would
     invoke interactively.
  
   * The index file can be taught with "update-index --untracked-cache"
     to optionally remember already seen untracked files, in order to
     speed up "git status" in a working tree with tons of cruft.
  
   * "git mergetool" learned to drive WinMerge as a backend.
  
   * "git upload-pack" that serves "git fetch" can be told to serve
     commits that are not at the tip of any ref, as long as they are
     reachable from a ref, with uploadpack.allowReachableSHA1InWant
     configuration variable.
  
   * "git cat-file --batch(-check)" learned the "--follow-symlinks"
     option that follows an in-tree symbolic link when asked about an
     object via extended SHA-1 syntax
  
     Consider this as still an experimental and incomplete feature:
  
      - We may want to do the same for in-index objects, e.g.
        asking for :RelNotes with this option should give
        :Documentation/RelNotes/2.5.0.txt, too
  
      - "git cat-file --follow-symlinks blob HEAD:RelNotes"
        may also be something we want to allow in the future.
  
   * "git send-email" learned the alias file format used by the sendmail
     program (in a simplified form; we obviously do not feed pipes).
  
   * Traditionally, external low-level 3-way merge drivers are expected
     to produce their results based solely on the contents of the three
     variants given in temporary files named by %O, %A and %B on their
     command line.  Additionally allow them to look at the final path
     (given by %P).
  
   * "git blame" learned blame.showEmail configuration variable.
  
   * "git apply" cannot diagnose a patch corruption when the breakage is
     to mark the length of the hunk shorter than it really is on the
     hunk header line "@@ -l,k +m,n @@"; one special case it could is
     when the hunk becomes no-op (e.g. k == n == 2 for two-line context
     patch output), and it learned to do so in this special case.
  
   * Add the "--allow-unknown-type" option to "cat-file" to allow
     inspecting loose objects of an experimental or a broken type.
  
   * Many long-running operations show progress eye-candy, even when
     they are later backgrounded.  Hide the eye-candy when the process
     is sent to the background instead.
     (merge a4fb76c lm/squelch-bg-progress later to maint).
  
  
  性能,内部实现,开发支持等等:
  
   * "unsigned char [20]" used throughout the code to represent object
     names are being converted into a semi-opaque "struct object_id".
  
   * for_each_ref() callback functions were taught to name the objects
     not with "unsigned char sha1[20]" but with "struct object_id".
  
   * Catch a programmer mistake to feed a pointer not an array to
     ARRAY_SIZE() macro, by using a couple of GCC extensions.
  
   * Some error messages in "git config" were emitted without calling
     the usual error() facility.
  
   * When "add--interactive" splits a hunk into two overlapping hunks
     and then let the user choose only one, it sometimes feeds an
     incorrect patch text to "git apply".  Add tests to demonstrate
     this.
  
     I have a slight suspicion that this may be $gmane/87202 coming back
     and biting us (I seem to have said "let's run with this and see
     what happens" back then).
  
   * More line-ending tests.
  
   * An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
     to read packed-refs file revealed that the former is unacceptably
     inefficient.  It has been optimized by using getdelim(3) when
     available.
  
   * The refs API uses ref_lock struct which had its own "int fd", even
     though the same file descriptor was in the lock struct it contains.
     Clean-up the code to lose this redundant field.
  
   * There was a dead code that used to handle "git pull --tags" and
     show special-cased error message, which was made irrelevant when
     the semantics of the option changed back in Git 1.9 days.
     (merge 19d122b pt/pull-tags-error-diag later to maint).
  
   * Help us to find broken test script that splits the body part of the
     test by mistaken use of wrong kind of quotes.
     (merge d93d5d5 jc/test-prereq-validate later to maint).
  
   * Developer support to automatically detect broken &&-chain in the
     test scripts is now turned on by default.
     (merge 92b269f jk/test-chain-lint later to maint).
  
   * Error reporting mechanism used in "refs" API has been made more
     consistent.
  
   * "git pull" has more test coverage now.
  
   * "git pull" has become more aware of the options meant for
     underlying "git fetch" and then learned to use parse-options
     parser.
  
   * Clarify in the Makefile a guideline to decide use of USE_NSEC.
  
  同时发布了 Git 2.4.7 版本,主要是 bug 修复,更新内容如下: 
* A minor regression to "git fsck" in v2.2 era was fixed
  
   * We used to ask libCURL to use the most secure authentication method
     available when talking to an HTTP proxy only when we were told to
     talk to one via configuration variables.  
   * When you say "!<ENTER>" while running say "git log", you'd confuse
     yourself in the resulting shell, that may look as if you took
     control back to the original shell you spawned "git log" from but
     that isn't what is happening.  
  
     Stop leaking that environment variable to the pager's half of the
     fork; we only need it on "Git" side when we spawn the pager.
  
   * Avoid possible ssize_t to int truncation.
  
   * "git config" failed to update the configuration file when the
     underlying filesystem is incapable of renaming a file that is still
     open.
  
   * A minor bugfix when pack bitmap is used with "rev-list --count".
  
   * An ancient test framework enhancement to allow color was not
     entirely correct; this makes it work even when tput needs to read
     from the ~/.terminfo under the user's real HOME directory.
  
   * Fix a small bug in our use of umask() return value.
  
   * "git rebase" did not exit with failure when format-patch it invoked
     failed for whatever reason.
  
   * Disable "have we lost a race with competing repack?" check while
     receiving a huge object transfer that runs index-pack. 
下载:
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。