<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>#gitfr</title>
    <link>http://www.gitfr.net/blog</link>
    <description>Projet pour la promotion du bien et la destruction du mal</description>
    <pubDate>Sun, 15 Apr 2012 21:04:43 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Git 1.7.10 publiée</title>
      <link>http://www.gitfr.net/blog/2012/04/15/git-1.7.10-publiee</link>
      <pubDate>Sun, 15 Apr 2012 22:52:00 CEST</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2012/04/15/git-1.7.10-publiee</guid>
      <description>Git 1.7.10 publiée</description>
      <content:encoded><![CDATA[<p>Pas mal de petites changements dans cette version 1.7.10 sortie le 10 avril. Je
voulais initialement tester cette version avant de publier l'annonce mais je
n'ai pas eu le cou^H^H^Htemps :(. Mais rapidement de ce qu'ai pu voir :</p>
<ul>
<li>
<p>gitk a pas mal de petites évolutions.</p>
</li>
<li>
<p>Un éditeur s'ouvre lors d'un <code>git-commit</code> pour pousser les gens à expliquer
  les changements.</p>
</li>
<li>
<p>On peut cloner qu'un répertoire.</p>
</li>
</ul>
<p>N'hésitez pas comme d'habitude à commenter ce billet si vous voyez des 
changements intéressants dans votre façon de travailler avec Git.</p>
<h2>Le changelog</h2>
<ul>
<li>
<p>various "gitk" updates.</p>
</li>
<li>
<p>Teams for localizing the messages from the Porcelain layer of
  commands are starting to form, thanks to Jiang Xin who volunteered
  to be the localization coordinator.  Translated messages for
  simplified Chinese, Swedish and Portuguese are available.</p>
</li>
<li>
<p>The configuration mechanism learned an "include" facility; an
  assignment to the include.path pseudo-variable causes the named
  file to be included in-place when Git looks up configuration
  variables.</p>
</li>
<li>
<p>A content filter (clean/smudge) used to be just a way to make the
  recorded contents "more useful", and allowed to fail; a filter can
  now optionally be marked as "required".</p>
</li>
<li>
<p>Options whose names begin with "--no-" (e.g. the "--no-verify"
  option of the "git commit" command) can be negated by omitting
  "no-" from its name, e.g. "git commit --verify".</p>
</li>
<li>
<p>"git am" learned to pass "-b" option to underlying "git mailinfo", so
  that a bracketed string other than "PATCH" at the beginning can be kept.</p>
</li>
<li>
<p>"git clone" learned "--single-branch" option to limit cloning to a
  single branch (surprise!); tags that do not point into the history
  of the branch are not fetched.</p>
</li>
<li>
<p>"git clone" learned to detach the HEAD in the resulting repository
  when the user specifies a tag with "--branch" (e.g., "--branch=v1.0").
  Clone also learned to print the usual "detached HEAD" advice in such
  a case, similar to "git checkout v1.0".</p>
</li>
<li>
<p>When showing a patch while ignoring whitespace changes, the context
  lines are taken from the postimage, in order to make it easier to
  view the output.</p>
</li>
<li>
<p>"git diff --stat" learned to adjust the width of the output on
  wider terminals, and give more columns to pathnames as needed.</p>
</li>
<li>
<p>"diff-highlight" filter (in contrib/) was updated to produce more
  aesthetically pleasing output.</p>
</li>
<li>
<p>"fsck" learned "--no-dangling" option to omit dangling object
  information.</p>
</li>
<li>
<p>"git log -G" and "git log -S" learned to pay attention to the "-i"
  option.  With "-i", "log -G" ignores the case when finding patch
  hunks that introduce or remove a string that matches the given
  pattern.  Similarly with "-i", "log -S" ignores the case when
  finding the commit the given block of text appears or disappears
  from the file.</p>
</li>
<li>
<p>"git merge" in an interactive session learned to spawn the editor
  by default to let the user edit the auto-generated merge message,
  to encourage people to explain their merges better. Legacy scripts
  can export GIT_MERGE_AUTOEDIT=no to retain the historical behavior.
  Both "git merge" and "git pull" can be given --no-edit from the
  command line to accept the auto-generated merge message.</p>
</li>
<li>
<p>The advice message given when the user didn't give enough clue on
  what to merge to "git pull" and "git merge" has been updated to
  be more concise and easier to understand.</p>
</li>
<li>
<p>"git push" learned the "--prune" option, similar to "git fetch".</p>
</li>
<li>
<p>The whole directory that houses a top-level superproject managed by
  "git submodule" can be moved to another place.</p>
</li>
<li>
<p>"git symbolic-ref" learned the "--short" option to abbreviate the
  refname it shows unambiguously.</p>
</li>
<li>
<p>"git tag --list" can be given "--points-at <object>" to limit its
  output to those that point at the given object.</p>
</li>
<li>
<p>"gitweb" allows intermediate entries in the directory hierarchy
  that leads to a project to be clicked, which in turn shows the
  list of projects inside that directory.</p>
</li>
<li>
<p>"gitweb" learned to read various pieces of information for the
  repositories lazily, instead of reading everything that could be
  needed (including the ones that are not necessary for a specific
  task).</p>
</li>
<li>
<p>Project search in "gitweb" shows the substring that matched in the
  project name and description highlighted.</p>
</li>
<li>
<p>HTTP transport learned to authenticate with a proxy if needed.</p>
</li>
<li>
<p>A new script "diffall" is added to contrib/; it drives an
  external tool to perform a directory diff of two Git revisions
  in one go, unlike "difftool" that compares one file at a time.</p>
</li>
<li>
<p>Improved handling of views, labels and branches in "git-p4" (in contrib).</p>
</li>
<li>
<p>"git-p4" (in contrib) suffered from unnecessary merge conflicts when
  p4 expanded the embedded $RCS$-like keywords; it can be now told to
  unexpand them.</p>
</li>
<li>
<p>Some "git-svn" updates.</p>
</li>
<li>
<p>"vcs-svn"/"svn-fe" learned to read dumps with svn-deltas and
  support incremental imports.</p>
</li>
<li>
<p>"git difftool/mergetool" learned to drive DeltaWalker.</p>
</li>
<li>
<p>Unnecessary calls to parse_object() "git upload-pack" makes in
  response to "git fetch", have been eliminated, to help performance
  in repositories with excessive number of refs.</p>
</li>
<li>
<p>Recursive call chains in "git index-pack" to deal with long delta
  chains have been flattened, to reduce the stack footprint.</p>
</li>
<li>
<p>Use of add_extra_ref() API is now gone, to make it possible to
  cleanly restructure the overall refs API.</p>
</li>
<li>
<p>The command line parser of "git pack-objects" now uses parse-options
  API.</p>
</li>
<li>
<p>The test suite supports the new "test_pause" helper function.</p>
</li>
<li>
<p>Parallel to the test suite, there is a beginning of performance
  benchmarking framework.</p>
</li>
<li>
<p>t/Makefile is adjusted to prevent newer versions of GNU make from
  running tests in seemingly random order.</p>
</li>
<li>
<p>The code to check if a path points at a file beyond a symbolic link
  has been restructured to be thread-safe.</p>
</li>
<li>
<p>When pruning directories that has become empty during "git prune"
  and "git prune-packed", call closedir() that iterates over a
  directory before rmdir() it.</p>
</li>
<li>
<p>Build with NO_PERL_MAKEMAKER was broken and Git::I18N did not work
  with versions of Perl older than 5.8.3.
  (merge 5eb660e ab/perl-i18n later to maint).</p>
</li>
<li>
<p>"git tag -s" honored "gpg.program" configuration variable since
  1.7.9, but "git tag -v" and "git verify-tag" didn't.
  (merge a2c2506 az/verify-tag-use-gpg-config later to maint).</p>
</li>
<li>
<p>"configure" script learned to take "--with-sane-tool-path" from the
  command line to record SANE_TOOL_PATH (used to avoid broken platform
  tools in /usr/bin) in config.mak.autogen.  This may be useful for
  people on Solaris who have saner tools outside /usr/xpg[46]/bin.</p>
</li>
<li>
<p>zsh port of bash completion script needed another workaround.</p>
</li>
<li>
<p>git-gui updated to 0.16.0.</p>
</li>
<li>
<p>git-p4 (in contrib/) updates.</p>
</li>
<li>
<p>Git uses gettext to translate its most common interface messages
  into the user's language if translations are available and the
  locale is appropriately set. Distributors can drop new PO files
  in po/ to add new translations.</p>
</li>
<li>
<p>The code to handle username/password for HTTP transactions used in
  "git push" &amp; "git fetch" learned to talk "credential API" to
  external programs to cache or store them, to allow integration with
  platform native keychain mechanisms.</p>
</li>
<li>
<p>The input prompts in the terminal use our own getpass() replacement
  when possible. HTTP transactions used to ask for the username without
  echoing back what was typed, but with this change you will see it as
  you type.</p>
</li>
<li>
<p>The internals of "revert/cherry-pick" have been tweaked to prepare
  building more generic "sequencer" on top of the implementation that
  drives them.</p>
</li>
<li>
<p>"git rev-parse FETCH_HEAD" after "git fetch" without specifying
  what to fetch from the command line will now show the commit that
  would be merged if the command were "git pull".</p>
</li>
<li>
<p>"git add" learned to stream large files directly into a packfile
  instead of writing them into individual loose object files.</p>
</li>
<li>
<p>"git checkout -B <current branch> <elsewhere>" is a more intuitive
  way to spell "git reset --keep <elsewhere>".</p>
</li>
<li>
<p>"git checkout" and "git merge" learned "--no-overwrite-ignore" option
  to tell Git that untracked and ignored files are not expendable.</p>
</li>
<li>
<p>"git commit --amend" learned "--no-edit" option to say that the
  user is amending the tree being recorded, without updating the
  commit log message.</p>
</li>
<li>
<p>"git commit" and "git reset" re-learned the optimization to prime
  the cache-tree information in the index, which makes it faster to
  write a tree object out after the index entries are updated.</p>
</li>
<li>
<p>"git commit" detects and rejects an attempt to stuff NUL byte in
  the commit log message.</p>
</li>
<li>
<p>"git commit" learned "-S" to GPG-sign the commit; this can be shown
  with the "--show-signature" option to "git log".</p>
</li>
<li>
<p>fsck and prune are relatively lengthy operations that still go
  silent while making the end-user wait. They learned to give progress
  output like other slow operations.</p>
</li>
<li>
<p>The set of built-in function-header patterns for various languages
  knows MATLAB.</p>
</li>
<li>
<p>"git log --format='<format>'" learned new %g[nNeE] specifiers to
  show information from the reflog entries when walking the reflog
  (i.e. with "-g").</p>
</li>
<li>
<p>"git pull" can be used to fetch and merge an annotated/signed tag,
  instead of the tip of a topic branch. The GPG signature from the
  signed tag is recorded in the resulting merge commit for later
  auditing.</p>
</li>
<li>
<p>"git log" learned "--show-signature" option to show the signed tag
  that was merged that is embedded in the merge commit. It also can
  show the signature made on the commit with "git commit -S".</p>
</li>
<li>
<p>"git branch --edit-description" can be used to add descriptive text
  to explain what a topic branch is about.</p>
</li>
<li>
<p>"git fmt-merge-msg" learned to take the branch description into
  account when preparing a merge summary that "git merge" records
  when merging a local branch.</p>
</li>
<li>
<p>"git request-pull" has been updated to convey more information
  useful for integrators to decide if a topic is worth merging and
  what is pulled is indeed what the requestor asked to pull,
  including:</p>
</li>
<li>
<p>the tip of the branch being requested to be merged;</p>
</li>
<li>the branch description describing what the topic is about;</li>
<li>
<p>the contents of the annotated tag, when requesting to pull a tag.</p>
</li>
<li>
<p>"git pull" learned to notice 'pull.rebase' configuration variable,
  which serves as a global fallback for setting 'branch.<name>.rebase'
  configuration variable per branch.</p>
</li>
<li>
<p>"git tag" learned "--cleanup" option to control how the whitespaces
  and empty lines in tag message are cleaned up.</p>
</li>
<li>
<p>"gitweb" learned to show side-by-side diff.</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Git 1.7.9 publiée</title>
      <link>http://www.gitfr.net/blog/2012/01/28/git-1.7.9-publiee</link>
      <pubDate>Sat, 28 Jan 2012 21:13:00 CET</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2012/01/28/git-1.7.9-publiee</guid>
      <description>Git 1.7.9 publiée</description>
      <content:encoded><![CDATA[<p>La version 1.7.9 est sortie le 27 janvier avec plusieurs évolutions
intéressantes : </p>
<ul>
<li>
<p>Un meilleur support des gros fichiers (Git n'étant pas réputé pour ça).</p>
</li>
<li>
<p>La signature des commits, qui fait suite au piratage de la machine qui 
  héberge le dépôt Git du projet Linux de Linus Torvalds.</p>
</li>
<li>
<p>L'internationalisation est maintenant activée (honte à moi, toujours pas
  démarré le projet de traduction en Français).</p>
</li>
<li>
<p>La possibilité d'ajouter une description à une branche.</p>
</li>
<li>
<p>L'option <code>--no-edit</code> quand on amende un commit. </p>
</li>
</ul>
<p>Je vous laisse comme d'habitude lire le changelog mais je trouve cette version
bien excitente ! J'attends la mise à jour sur ma machine pour faire quelques
tests.</p>
<h2>Le changelog</h2>
<ul>
<li>
<p>gitk updates accumulated since early 2011.</p>
</li>
<li>
<p>git-gui updated to 0.16.0.</p>
</li>
<li>
<p>git-p4 (in contrib/) updates.</p>
</li>
<li>
<p>Git uses gettext to translate its most common interface messages
  into the user's language if translations are available and the
  locale is appropriately set. Distributors can drop new PO files
  in po/ to add new translations.</p>
</li>
<li>
<p>The code to handle username/password for HTTP transactions used in
  "git push" &amp; "git fetch" learned to talk "credential API" to
  external programs to cache or store them, to allow integration with
  platform native keychain mechanisms.</p>
</li>
<li>
<p>The input prompts in the terminal use our own getpass() replacement
  when possible. HTTP transactions used to ask for the username without
  echoing back what was typed, but with this change you will see it as
  you type.</p>
</li>
<li>
<p>The internals of "revert/cherry-pick" have been tweaked to prepare
  building more generic "sequencer" on top of the implementation that
  drives them.</p>
</li>
<li>
<p>"git rev-parse FETCH_HEAD" after "git fetch" without specifying
  what to fetch from the command line will now show the commit that
  would be merged if the command were "git pull".</p>
</li>
<li>
<p>"git add" learned to stream large files directly into a packfile
  instead of writing them into individual loose object files.</p>
</li>
<li>
<p>"git checkout -B <current branch> <elsewhere>" is a more intuitive
  way to spell "git reset --keep <elsewhere>".</p>
</li>
<li>
<p>"git checkout" and "git merge" learned "--no-overwrite-ignore" option
  to tell Git that untracked and ignored files are not expendable.</p>
</li>
<li>
<p>"git commit --amend" learned "--no-edit" option to say that the
  user is amending the tree being recorded, without updating the
  commit log message.</p>
</li>
<li>
<p>"git commit" and "git reset" re-learned the optimization to prime
  the cache-tree information in the index, which makes it faster to
  write a tree object out after the index entries are updated.</p>
</li>
<li>
<p>"git commit" detects and rejects an attempt to stuff NUL byte in
  the commit log message.</p>
</li>
<li>
<p>"git commit" learned "-S" to GPG-sign the commit; this can be shown
  with the "--show-signature" option to "git log".</p>
</li>
<li>
<p>fsck and prune are relatively lengthy operations that still go
  silent while making the end-user wait. They learned to give progress
  output like other slow operations.</p>
</li>
<li>
<p>The set of built-in function-header patterns for various languages
  knows MATLAB.</p>
</li>
<li>
<p>"git log --format='<format>'" learned new %g[nNeE] specifiers to
  show information from the reflog entries when walking the reflog
  (i.e. with "-g").</p>
</li>
<li>
<p>"git pull" can be used to fetch and merge an annotated/signed tag,
  instead of the tip of a topic branch. The GPG signature from the
  signed tag is recorded in the resulting merge commit for later
  auditing.</p>
</li>
<li>
<p>"git log" learned "--show-signature" option to show the signed tag
  that was merged that is embedded in the merge commit. It also can
  show the signature made on the commit with "git commit -S".</p>
</li>
<li>
<p>"git branch --edit-description" can be used to add descriptive text
  to explain what a topic branch is about.</p>
</li>
<li>
<p>"git fmt-merge-msg" learned to take the branch description into
  account when preparing a merge summary that "git merge" records
  when merging a local branch.</p>
</li>
<li>
<p>"git request-pull" has been updated to convey more information
  useful for integrators to decide if a topic is worth merging and
  what is pulled is indeed what the requestor asked to pull,
  including:</p>
</li>
<li>
<p>the tip of the branch being requested to be merged;</p>
</li>
<li>the branch description describing what the topic is about;</li>
<li>
<p>the contents of the annotated tag, when requesting to pull a tag.</p>
</li>
<li>
<p>"git pull" learned to notice 'pull.rebase' configuration variable,
   which serves as a global fallback for setting 'branch.<name>.rebase'
   configuration variable per branch.</p>
</li>
<li>
<p>"git tag" learned "--cleanup" option to control how the whitespaces
   and empty lines in tag message are cleaned up.</p>
</li>
<li>
<p>"gitweb" learned to show side-by-side diff.</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Git 1.7.8 publiée</title>
      <link>http://www.gitfr.net/blog/2011/12/11/git-1.7.8-publiee</link>
      <pubDate>Sun, 11 Dec 2011 23:13:00 CET</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2011/12/11/git-1.7.8-publiee</guid>
      <description>Git 1.7.8 publiée</description>
      <content:encoded><![CDATA[<p>La version 1.7.8 est sortie le 2 décembre. Comme vous pouvez constater, le
changelog est assez gros avec surtout de nouvelles options pour plusieurs
commandes et l'habituel lot de corrections.</p>
<h2>Le changelog</h2>
<ul>
<li>
<p>Some git-svn, git-gui, git-p4 (in contrib) and msysgit updates.</p>
</li>
<li>
<p>Updates to bash completion scripts.</p>
</li>
<li>
<p>The build procedure has been taught to take advantage of computed
  dependency automatically when the complier supports it.</p>
</li>
<li>
<p>The date parser now accepts timezone designators that lack minutes
  part and also has a colon between "hh:mm".</p>
</li>
<li>
<p>The contents of the /etc/mailname file, if exists, is used as the
  default value of the hostname part of the committer/author e-mail.</p>
</li>
<li>
<p>"git am" learned how to read from patches generated by Hg.</p>
</li>
<li>
<p>"git archive" talking with a remote repository can report errors
  from the remote side in a more informative way.</p>
</li>
<li>
<p>"git branch" learned an explicit --list option to ask for branches
  listed, optionally with a glob matching pattern to limit its output.</p>
</li>
<li>
<p>"git check-attr" learned "--cached" option to look at .gitattributes
  files from the index, not from the working tree.</p>
</li>
<li>
<p>Variants of "git cherry-pick" and "git revert" that take multiple
  commits learned to "--continue" and "--abort".</p>
</li>
<li>
<p>"git daemon" gives more human readble error messages to clients
  using ERR packets when appropriate.</p>
</li>
<li>
<p>Errors at the network layer is logged by "git daemon".</p>
</li>
<li>
<p>"git diff" learned "--minimal" option to spend extra cycles to come
  up with a minimal patch output.</p>
</li>
<li>
<p>"git diff" learned "--function-context" option to show the whole
  function as context that was affected by a change.</p>
</li>
<li>
<p>"git difftool" can be told to skip launching the tool for a path by
  answering 'n' to its prompt.</p>
</li>
<li>
<p>"git fetch" learned to honor transfer.fsckobjects configuration to
  validate the objects that were received from the other end, just like
  "git receive-pack" (the receiving end of "git push") does.</p>
</li>
<li>
<p>"git fetch" makes sure that the set of objects it received from the
  other end actually completes the history before updating the refs.
  "git receive-pack" (the receiving end of "git push") learned to do the
  same.</p>
</li>
<li>
<p>"git fetch" learned that fetching/cloning from a regular file on the
  filesystem is not necessarily a request to unpack a bundle file; the
  file could be ".git" with "gitdir: <path>" in it.</p>
</li>
<li>
<p>"git for-each-ref" learned "%(contents:subject)", "%(contents:body)"
  and "%(contents:signature)". The last one is useful for signed tags.</p>
</li>
<li>
<p>"git grep" used to incorrectly pay attention to .gitignore files
  scattered in the directory it was working in even when "--no-index"
  option was used. It no longer does this. The "--exclude-standard"
  option needs to be given to explicitly activate the ignore
  mechanism.</p>
</li>
<li>
<p>"git grep" learned "--untracked" option, where given patterns are
   searched in untracked (but not ignored) files as well as tracked
   files in the working tree, so that matches in new but not yet
   added files do not get missed.</p>
</li>
<li>
<p>The recursive merge backend no longer looks for meaningless
  existing merges in submodules unless in the outermost merge.</p>
</li>
<li>
<p>"git log" and friends learned "--children" option.</p>
</li>
<li>
<p>"git ls-remote" learned to respond to "-h"(elp) requests.</p>
</li>
<li>
<p>"mediawiki" remote helper can interact with (surprise!) MediaWiki
  with "git fetch" &amp; "git push".</p>
</li>
<li>
<p>"git merge" learned the "--edit" option to allow users to edit the
  merge commit log message.</p>
</li>
<li>
<p>"git rebase -i" can be told to use special purpose editor suitable
  only for its insn sheet via sequence.editor configuration variable.</p>
</li>
<li>
<p>"git send-email" learned to respond to "-h"(elp) requests.</p>
</li>
<li>
<p>"git send-email" allows the value given to sendemail.aliasfile to begin
  with "~/" to refer to the $HOME directory.</p>
</li>
<li>
<p>"git send-email" forces use of Authen::SASL::Perl to work around
  issues between Authen::SASL::Cyrus and AUTH PLAIN/LOGIN.</p>
</li>
<li>
<p>"git stash" learned "--include-untracked" option to stash away
  untracked/ignored cruft from the working tree.</p>
</li>
<li>
<p>"git submodule clone" does not leak an error message to the UI
  level unnecessarily anymore.</p>
</li>
<li>
<p>"git submodule update" learned to honor "none" as the value for
  submodule.<name>.update to specify that the named submodule should
  not be checked out by default.</p>
</li>
<li>
<p>When populating a new submodule directory with "git submodule init",
  the $GIT_DIR metainformation directory for submodules is created inside
  $GIT_DIR/modules/<name>/ directory of the superproject and referenced
  via the gitfile mechanism. This is to make it possible to switch
  between commits in the superproject that has and does not have the
  submodule in the tree without re-cloning.</p>
</li>
<li>
<p>"gitweb" leaked unescaped control characters from syntax hiliter
  outputs.</p>
</li>
<li>
<p>"gitweb" can be told to give custom string at the end of the HTML
  HEAD element.</p>
</li>
<li>
<p>"gitweb" now has its own manual pages.</p>
</li>
<li>
<p>HTTP transport did not use pushurl correctly, and also did not tell
  what host it is trying to authenticate with when asking for
  credentials.
  (merge deba493 jk/http-auth later to maint).</p>
</li>
<li>
<p>"git blame" was aborted if started from an uncommitted content and
  the path had the textconv filter in effect.
  (merge 8518088 ss/blame-textconv-fake-working-tree later to maint).</p>
</li>
<li>
<p>Adding many refs to the local repository in one go (e.g. "git fetch"
  that fetches many tags) and looking up a ref by name in a repository
  with too many refs were unnecessarily slow.
  (merge 17d68a54d jp/get-ref-dir-unsorted later to maint).</p>
</li>
<li>
<p>Report from "git commit" on untracked files was confused under
  core.ignorecase option.
  (merge 395c7356 jk/name-hash-dirent later to maint).</p>
</li>
<li>
<p>"git merge" did not understand ":/<pattern>" as a way to name a commit.</p>
</li>
<li>
<p>"git push" on the receiving end used to call post-receive and post-update
  hooks for attempted removal of non-existing refs.
  (merge 160b81ed ph/push-to-delete-nothing later to maint).</p>
</li>
<li>
<p>Help text for "git remote set-url" and "git remote set-branches"
  were misspelled.
  (merge c49904e fc/remote-seturl-usage-fix later to maint).
  (merge 656cdf0 jc/remote-setbranches-usage-fix later to maint).</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Git 1.7.7 publiée</title>
      <link>http://www.gitfr.net/blog/2011/10/01/git-1.7.7-publiee</link>
      <pubDate>Sat, 01 Oct 2011 10:34:00 CEST</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2011/10/01/git-1.7.7-publiee</guid>
      <description>Git 1.7.7 publiée</description>
      <content:encoded><![CDATA[<p>Reprenons la bonne habitude d'annoncer les nouvelles versions. Rien de bien
méchant dans cette 1.7.7, il faut attendre la 1.8 je pense pour des plus gros
changements.</p>
<h2>Le changelog</h2>
<ul>
<li>
<p>The scripting part of the codebase is getting prepared for i18n/l10n.</p>
</li>
<li>
<p>Interix, Cygwin and Minix ports got updated.</p>
</li>
<li>
<p>Various updates to git-p4 (in contrib/), fast-import, and git-svn.</p>
</li>
<li>
<p>Gitweb learned to read from /etc/gitweb-common.conf when it exists,
  before reading from gitweb_config.perl or from /etc/gitweb.conf
  (this last one is read only when per-repository gitweb_config.perl
  does not exist).</p>
</li>
<li>
<p>Various codepaths that invoked zlib deflate/inflate assumed that these
  functions can compress or uncompress more than 4GB data in one call on
  platforms with 64-bit long, which has been corrected.</p>
</li>
<li>
<p>Git now recognizes loose objects written by other implementations that
  use a non-standard window size for zlib deflation (e.g. Agit running on
  Android with 4kb window). We used to reject anything that was not
  deflated with 32kb window.</p>
</li>
<li>
<p>Interaction between the use of pager and coloring of the output has
  been improved, especially when a command that is not built-in was
  involved.</p>
</li>
<li>
<p>"git am" learned to pass the "--exclude=<path>" option through to underlying
  "git apply".</p>
</li>
<li>
<p>You can now feed many empty lines before feeding an mbox file to
  "git am".</p>
</li>
<li>
<p>"git archive" can be told to pass the output to gzip compression and
  produce "archive.tar.gz".</p>
</li>
<li>
<p>"git bisect" can be used in a bare repository (provided that the test
  you perform per each iteration does not need a working tree, of
  course).</p>
</li>
<li>
<p>The length of abbreviated object names in "git branch -v" output
  now honors the core.abbrev configuration variable.</p>
</li>
<li>
<p>"git check-attr" can take relative paths from the command line.</p>
</li>
<li>
<p>"git check-attr" learned an "--all" option to list the attributes for a
  given path.</p>
</li>
<li>
<p>"git checkout" (both the code to update the files upon checking out a
  different branch and the code to checkout a specific set of files) learned
  to stream the data from object store when possible, without having to
  read the entire contents of a file into memory first. An earlier round
  of this code that is not in any released version had a large leak but
  now it has been plugged.</p>
</li>
<li>
<p>"git clone" can now take a "--config key=value" option to set the
  repository configuration options that affect the initial checkout.</p>
</li>
<li>
<p>"git commit <paths>..." now lets you feed relative pathspecs that
  refer to outside your current subdirectory.</p>
</li>
<li>
<p>"git diff --stat" learned a --stat-count option to limit the output of
  a diffstat report.</p>
</li>
<li>
<p>"git diff" learned a "--histogram" option to use a different diff
  generation machinery stolen from jgit, which might give better
  performance.</p>
</li>
<li>
<p>"git diff" had a weird worst case behaviour that can be triggered
  when comparing files with potentially many places that could match.</p>
</li>
<li>
<p>"git fetch", "git push" and friends no longer show connection
  errors for addresses that couldn't be connected to when at least one
  address succeeds (this is arguably a regression but a deliberate
  one).</p>
</li>
<li>
<p>"git grep" learned "--break" and "--heading" options, to let users mimic
  the output format of "ack".</p>
</li>
<li>
<p>"git grep" learned a "-W" option that shows wider context using the same
  logic used by "git diff" to determine the hunk header.</p>
</li>
<li>
<p>Invoking the low-level "git http-fetch" without "-a" option (which
  git itself never did---normal users should not have to worry about
  this) is now deprecated.</p>
</li>
<li>
<p>The "--decorate" option to "git log" and its family learned to
  highlight grafted and replaced commits.</p>
</li>
<li>
<p>"git rebase master topci" no longer spews usage hints after giving
  the "fatal: no such branch: topci" error message.</p>
</li>
<li>
<p>The recursive merge strategy implementation got a fairly large
  fix for many corner cases that may rarely happen in real world
  projects (it has been verified that none of the 16000+ merges in
  the Linux kernel history back to v2.6.12 is affected with the
  corner case bugs this update fixes).</p>
</li>
<li>
<p>"git stash" learned an "--include-untracked option".</p>
</li>
<li>
<p>"git submodule update" used to stop at the first error updating a
  submodule; it now goes on to update other submodules that can be
  updated, and reports the ones with errors at the end.</p>
</li>
<li>
<p>"git push" can be told with the "--recurse-submodules=check" option to
  refuse pushing of the supermodule, if any of its submodules'
  commits hasn't been pushed out to their remotes.</p>
</li>
<li>
<p>"git upload-pack" and "git receive-pack" learned to pretend that only a
  subset of the refs exist in a repository. This may help a site to
  put many tiny repositories into one repository (this would not be
  useful for larger repositories as repacking would be problematic).</p>
</li>
<li>
<p>"git verify-pack" has been rewritten to use the "index-pack" machinery
  that is more efficient in reading objects in packfiles.</p>
</li>
<li>
<p>test scripts for gitweb tried to run even when CGI-related perl modules
  are not installed; they now exit early when the latter are unavailable.</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Git 1.7.6.1 publiée</title>
      <link>http://www.gitfr.net/blog/2011/08/29/git-1.7.6.1-publiee</link>
      <pubDate>Mon, 29 Aug 2011 00:34:00 CEST</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2011/08/29/git-1.7.6.1-publiee</guid>
      <description>Git 1.7.6.1 publiée</description>
      <content:encoded><![CDATA[<p>La première version de maintenance de la branche 1.7.6.x est sortie le 24 août,
avec 88 corrections.</p>
<h2>Le changelog</h2>
<ul>
<li>
<p>Various codepaths that invoked zlib deflate/inflate assumed that these
   functions can compress or uncompress more than 4GB data in one call on
   platforms with 64-bit long, which has been corrected.</p>
</li>
<li>
<p>"git unexecutable" reported that "unexecutable" was not found, even
   though the actual error was that "unexecutable" was found but did
   not have a proper she-bang line to be executed.</p>
</li>
<li>
<p>Error exits from $PAGER were silently ignored.</p>
</li>
<li>
<p>"git checkout -b <branch>" was confused when attempting to create a
   branch whose name ends with "-g" followed by hexadecimal digits,
   and refused to work.</p>
</li>
<li>
<p>"git checkout -b <branch>" sometimes wrote a bogus reflog entry,
   causing later "git checkout -" to fail.</p>
</li>
<li>
<p>"git diff --cc" learned to correctly ignore binary files.</p>
</li>
<li>
<p>"git diff -c/--cc" mishandled a deletion that resolves a conflict, and
   looked in the working tree instead.</p>
</li>
<li>
<p>"git fast-export" forgot to quote pathnames with unsafe characters
   in its output.</p>
</li>
<li>
<p>"git fetch" over smart-http transport used to abort when the
   repository was updated between the initial connection and the
   subsequent object transfer.</p>
</li>
<li>
<p>"git fetch" did not recurse into submodules in subdirectories.</p>
</li>
<li>
<p>"git ls-tree" did not error out when asked to show a corrupt tree.</p>
</li>
<li>
<p>"git pull" without any argument left an extra whitespace after the
   command name in its reflog.</p>
</li>
<li>
<p>"git push --quiet" was not really quiet.</p>
</li>
<li>
<p>"git rebase -i -p" incorrectly dropped commits from side branches.</p>
</li>
<li>
<p>"git reset [<commit>] paths..." did not reset the index entry correctly
   for unmerged paths.</p>
</li>
<li>
<p>"git submodule add" did not allow a relative repository path when
   the superproject did not have any default remote url.</p>
</li>
<li>
<p>"git submodule foreach" failed to correctly give the standard input to
   the user-supplied command it invoked.</p>
</li>
<li>
<p>submodules that the user has never showed interest in by running
   "git submodule init" was incorrectly marked as interesting by "git
   submodule sync".</p>
</li>
<li>
<p>"git submodule update --quiet" was not really quiet.</p>
</li>
<li>
<p>"git tag -l <glob>..." did not take multiple glob patterns from the
   command line.</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Git 1.7.6 publiée</title>
      <link>http://www.gitfr.net/blog/2011/07/09/git-1.7.6-publiee</link>
      <pubDate>Sat, 09 Jul 2011 20:34:00 CEST</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2011/07/09/git-1.7.6-publiee</guid>
      <description>Git 1.7.6 publiée</description>
      <content:encoded><![CDATA[<p>Nouvelle fournée pour Git avec cette branche 1.7.6.x. A noter que c'est la
première version qui respecte le nouveau cycle de release plus court voulu
par Junio.</p>
<p>A la lecture du changelog, voici quelques points que je remarque :</p>
<ul>
<li>
<p>Le magic pathspec ":/".</p>
</li>
<li>
<p>L'option patch pour la commande git-commit.</p>
</li>
<li>
<p>La possibilité d'utiliser les expressions rationnelles pour git-grep.</p>
</li>
<li>
<p>La variable de configuration <code>merge.ff</code> pour spécifier s'il faut toujours
   ou jamais faire un commit de merge.</p>
</li>
<li>
<p>Ne pas spécifier de branche à git-rebase signifie rebaser sur upstream.</p>
</li>
</ul>
<h2>Changelog</h2>
<ul>
<li>
<p>Various git-svn updates.</p>
</li>
<li>
<p>Updates the way content tags are handled in gitweb.  Also adds
  a UI to choose common timezone for displaying the dates.</p>
</li>
<li>
<p>Similar to branch names, tagnames that begin with "-" are now
  disallowed.</p>
</li>
<li>
<p>Clean-up of the C part of i18n (but not l10n---please wait)
  continues.</p>
</li>
<li>
<p>The scripting part of the codebase is getting prepared for i18n/l10n.</p>
</li>
<li>
<p>Pushing and pulling from a repository with large number of refs that
  point to identical commits are optimized by not listing the same commit
  during the common ancestor negotiation exchange with the other side.</p>
</li>
<li>
<p>Adding a file larger than core.bigfilethreshold (defaults to 1/2 Gig)
  using "git add" will send the contents straight to a packfile without
  having to hold it and its compressed representation both at the same
  time in memory.</p>
</li>
<li>
<p>Processes spawned by "[alias] <name> = !process" in the configuration
  can inspect <code>GIT_PREFIX</code> environment variable to learn where in the
  working tree the original command was invoked.</p>
</li>
<li>
<p>A magic pathspec ":/" tells a command that limits its operation to
  the current directory when ran from a subdirectory to work on the
  entire working tree. In general, ":/path/to/file" would be relative
  to the root of the working tree hierarchy.</p>
</li>
</ul>
<p>After "git reset --hard; edit Makefile; cd t/", "git add -u" would
  be a no-op, but "git add -u :/" would add the updated contents of
  the Makefile at the top level. If you want to name a path in the
  current subdirectory whose unusual name begins with ":/", you can
  name it by "./:/that/path" or by "\:/that/path".</p>
<ul>
<li>
<p>"git blame" learned "--abbrev[=<n>]" option to control the minimum
  number of hexdigits shown for commit object names.</p>
</li>
<li>
<p>"git blame" learned "--line-porcelain" that is less efficient but is
  easier to parse.</p>
</li>
<li>
<p>Aborting "git commit --interactive" discards updates to the index
  made during the interactive session.</p>
</li>
<li>
<p>"git commit" learned a "--patch" option to directly jump to the
  per-hunk selection UI of the interactive mode.</p>
</li>
<li>
<p>"git diff" and its family of commands learned --dirstat=0 to show
  directories that contribute less than 0.1% of changes.</p>
</li>
<li>
<p>"git diff" and its family of commands learned --dirstat=lines mode to
  assess damage to the directory based on number of lines in the patch
  output, not based on the similarity numbers.</p>
</li>
<li>
<p>"git format-patch" learned "--quiet" option to suppress the output of
  the names of generated files.</p>
</li>
<li>
<p>"git format-patch" quotes people's names when it has RFC822 special
  characters in it, e.g. "Junio C. Hamano" <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#99;&#104;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">&#106;&#99;&#104;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;</a>.  Earlier
  it was up to the user to do this when using its output.</p>
</li>
<li>
<p>"git format-patch" can take an empty --subject-prefix now.</p>
</li>
<li>
<p>"git grep" learned the "-P" option to take pcre regular expressions.</p>
</li>
<li>
<p>"git log" and friends learned a new "--notes" option to replace the
  "--show-notes" option.  Unlike "--show-notes", "--notes=<ref>" does
  not imply showing the default notes.</p>
</li>
<li>
<p>They also learned a log.abbrevCommit configuration variable to augment
  the --abbrev-commit command line option.</p>
</li>
<li>
<p>"git ls-remote" learned "--exit-code" option to consider it a
  different kind of error when no remote ref to be shown.</p>
</li>
<li>
<p>"git merge" learned "-" as a short-hand for "the previous branch", just
  like the way "git checkout -" works.</p>
</li>
<li>
<p>"git merge" uses "merge.ff" configuration variable to decide to always
  create a merge commit (i.e. --no-ff, aka merge.ff=no), refuse to create
  a merge commit (i.e. --ff-only, aka merge.ff=only). Setting merge.ff=yes
  (or not setting it at all) restores the default behaviour of allowing
  fast-forward to happen when possible.</p>
</li>
<li>
<p>p4-import (from contrib) learned a new option --preserve-user.</p>
</li>
<li>
<p>"git read-tree -m" learned "--dry-run" option that reports if a merge
  would fail without touching the index nor the working tree.</p>
</li>
<li>
<p>"git rebase" that does not specify on top of which branch to rebase
  the current branch now uses @{upstream} of the current branch.</p>
</li>
<li>
<p>"git rebase" finished either normally or with --abort did not
  update the reflog for HEAD to record the event to come back to
  where it started from.</p>
</li>
<li>
<p>"git remote add -t only-this-branch --mirror=fetch" is now allowed. Earlier
  a fetch-mode mirror meant mirror everything, but now it only means refs are
  not renamed.</p>
</li>
<li>
<p>"git rev-list --count" used with "--cherry-mark" counts the cherry-picked
  commits separately, producing more a useful output.</p>
</li>
<li>
<p>"git submodule update" learned "--force" option to get rid of local
  changes in submodules and replace them with the up-to-date version.</p>
</li>
<li>
<p>"git status" and friends ignore .gitmodules file while the file is
  still in a conflicted state during a merge, to avoid using information
  that is not final and possibly corrupt with conflict markers.</p>
</li>
<li>
<p>"git config" used to choke with an insanely long line.
  (merge ef/maint-strbuf-init later)</p>
</li>
<li>
<p>"git diff --quiet" did not work well with --diff-filter.
  (merge jk/diff-not-so-quick later)</p>
</li>
<li>
<p>"git status -z" did not default to --porcelain output format.
  (merge bc/maint-status-z-to-use-porcelain later)</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Git 1.7.5.4 publiée</title>
      <link>http://www.gitfr.net/blog/2011/06/13/git-1.7.5.4-publiee</link>
      <pubDate>Mon, 13 Jun 2011 02:10:00 CEST</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2011/06/13/git-1.7.5.4-publiee</guid>
      <description>Git 1.7.5.4 publiée</description>
      <content:encoded><![CDATA[<p>La quatrième version de la branche 1.7.5.x est sortie le 2 juin, soit seulement 5 jours aprés la précédente. C'est la dernière ligne du changelog qui nous donne la réponse.</p>
<h2>Changelog</h2>
<ul>
<li>
<p>The single-key mode of "git add -p" was easily fooled into thinking
  that it was told to add everthing ('a') when up-arrow was pressed by
  mistake.</p>
</li>
<li>
<p>Setting a git command that uses custom configuration via "-c var=val"
  as an alias caused a crash due to a realloc(3) failure.</p>
</li>
<li>
<p>"git diff -C -C" used to disable the rename detection entirely when
  there are too many copy candidate paths in the tree; now it falls
  back to "-C" when doing so would keep the copy candidate paths
  under the rename detection limit.</p>
</li>
<li>
<p>"git rerere" did not diagnose a corrupt MERGE_RR file in some cases.</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Git 1.7.5.3 publiée</title>
      <link>http://www.gitfr.net/blog/2011/06/13/git-1.7.5.3-publiee</link>
      <pubDate>Mon, 13 Jun 2011 02:07:00 CEST</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2011/06/13/git-1.7.5.3-publiee</guid>
      <description>Git 1.7.5.3 publiée</description>
      <content:encoded><![CDATA[<p>La troisième version de maintenance de la branche 1.7.5.x est sortie le 27 mai.</p>
<h2>Changelog</h2>
<ul>
<li>
<p>The bash completion scripts should correctly work using zsh's bash
  completion emulation layer now.</p>
</li>
<li>
<p>Setting $(prefix) in config.mak did not affect where etc/gitconfig
  file is read from, even though passing it from the command line of
  $(MAKE) did.</p>
</li>
<li>
<p>The logic to handle "&amp;" (expand to UNIX username) in GECOS field
  miscounted the length of the name it formatted.</p>
</li>
<li>
<p>"git cherry-pick -s resolve" failed to cherry-pick a root commit.</p>
</li>
<li>
<p>"git diff --word-diff" misbehaved when diff.suppress-blank-empty was
  in effect.</p>
</li>
<li>
<p>"git log --stdin path" with an input that has additional pathspec
  used to corrupt memory.</p>
</li>
<li>
<p>"git send-pack" (hence "git push") over smalt-HTTP protocol could
  deadlock when the client side pack-object died early.</p>
</li>
<li>
<p>Compressed tarball gitweb generates used to be made with the timestamp
  of the tarball generation; this was bad because snapshot from the same
  tree should result in a same tarball.</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Git 1.7.5.2 publiée</title>
      <link>http://www.gitfr.net/blog/2011/06/13/git-1.7.5.2-publiee</link>
      <pubDate>Mon, 13 Jun 2011 02:05:00 CEST</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2011/06/13/git-1.7.5.2-publiee</guid>
      <description>Git 1.7.5.2 publiée</description>
      <content:encoded><![CDATA[<p>La deuxième version de maintenance de la branche 1.7.5.x est sortie la 20 mai.</p>
<h2>Changelog</h2>
<ul>
<li>
<p>"git add -p" did not work correctly when a hunk is split and then
  one of them was given to the editor.</p>
</li>
<li>
<p>"git add -u" did not resolve a conflict where our history deleted and
  their history modified the same file, and the working tree resolved to
  keep a file.</p>
</li>
<li>
<p>"git cvsimport" did not know that CVSNT stores its password file in a
  location different from the traditional CVS.</p>
</li>
<li>
<p>"git diff-files" did not show the mode information from the working
  tree side of an unmerged path correctly.</p>
</li>
<li>
<p>"git diff -M --cached" used to use unmerged path as a possible rename
  source candidate, which made no sense.</p>
</li>
<li>
<p>The option name parser in "git fast-import" used prefix matches for
  some options where it shouldn't, and accepted non-existent options,
  e.g. "--relative-marksmith" or "--forceps".</p>
</li>
<li>
<p>"git format-patch" did not quote RFC822 special characters in the
  email address (e.g From: Junio C. Hamano <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#99;&#104;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">&#106;&#99;&#104;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;</a>, not
  From: "Junio C. Hamano" <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#99;&#104;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">&#106;&#99;&#104;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;</a>).</p>
</li>
<li>
<p>"git format-patch" when run with "--quiet" option used to produce a
  nonsense result that consists of alternating empty output.</p>
</li>
<li>
<p>In "git merge", per-branch branch.<name>.mergeoptions configuration
  variables did not override the fallback default merge.<option>
  configuration variables such as merge.ff, merge.log, etc.</p>
</li>
<li>
<p>"git merge-one-file" did not honor GIT_WORK_TREE settings when
  handling a "both sides added, differently" conflict.</p>
</li>
<li>
<p>"git mergetool" did not handle conflicted submodules gracefully.</p>
</li>
<li>
<p>"git-p4" (in contrib) used a wrong base image while merge a file that
  was added on both branches differently.</p>
</li>
<li>
<p>"git rebase -i -p" failed to preserve the history when there is a
  redundant merge created with the --no-ff option.</p>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Git 1.7.5.1 publiée</title>
      <link>http://www.gitfr.net/blog/2011/06/13/git-1.7.5.1-publiee</link>
      <pubDate>Mon, 13 Jun 2011 01:57:00 CEST</pubDate>
      <category><![CDATA[release]]></category>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://www.gitfr.net/blog/2011/06/13/git-1.7.5.1-publiee</guid>
      <description>Git 1.7.5.1 publiée</description>
      <content:encoded><![CDATA[<p>La première version de maintenance de la branche 1.7.5.x est sortie la 5 mai.</p>
<h2>Le changelog</h2>
<ul>
<li>
<p>When an object "$tree:$path" does not exist, if $path does exist in the
  subtree of $tree that corresponds to the subdirectory the user is in,
  git now suggests using "$tree:./$path" in addition to the advice to use
  the full path from the root of the working tree.</p>
</li>
<li>
<p>The "--date=relative" output format used to say "X years, 12 months"
  when it should have said "X+1 years".</p>
</li>
<li>
<p>The smart-HTTP transfer was broken in 1.7.5 when the client needs
  to issue a small POST (which uses content-length) and then a large
  POST (which uses chunked) back to back.</p>
</li>
<li>
<p>"git clean" used to fail on an empty directory that is not readable,
  even though rmdir(2) could remove such a directory.  Now we attempt it
  as the last resort.</p>
</li>
<li>
<p>The "--dirstat" option of "diff" family of commands used to totally
  ignore a change that only rearranged lines within a file.  Such a
  change now counts as at least a minimum but non zero change.</p>
</li>
<li>
<p>The "--dirstat" option of "diff" family of commands used to use the
  pathname in the original, instead of the pathname in the result,
  when renames are involved.</p>
</li>
<li>
<p>"git pack-object" did not take core.bigfilethreashold into account
  (unlike fast-import); now it does.</p>
</li>
<li>
<p>"git reflog" ignored options like "--format=.." on the command line.</p>
</li>
<li>
<p>"git stash apply" used to refuse to work if there was any change in
  the working tree, even when the change did not overlap with the change
  the stash recorded.</p>
</li>
<li>
<p>"git stash apply @{99999}" was not diagnosed as an error, even when you
  did not have that many stash entries.</p>
</li>
<li>
<p>An error message from "git send-email" to diagnose a broken SMTP
  connection configuration lacked a space between "hello=<smtp-domain>"
  and "port=<smtp-server-port>".</p>
</li>
<li>
<p>"git stash -p --no-keep-index" and "git stash --no-keep-index -p" now
  mean the same thing.</p>
</li>
<li>
<p>"git upload-pack" (hence "git push" over git native protocol) had a
  subtle race condition that could lead to a deadlock.</p>
</li>
</ul>]]></content:encoded>
    </item>
  </channel>
</rss>

