-Git v1.7.6 Release Notes (draft)
+Git v1.7.6 Release Notes
========================
Updates since v1.7.5
* Various git-svn updates.
+ * Updates the way content tags are handled in gitweb. Also adds
+ a UI to choose common timezone for displaying the dates.
+
+ * Similar to branch names, tagnames that begin with "-" are now
+ disallowed.
+
* Clean-up of the C part of i18n (but not l10n---please wait)
continues.
+ * The scripting part of the codebase is getting prepared for i18n/l10n.
+
+ * 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.
+
+ * 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.
+
* Processes spawned by "[alias] <name> = !process" in the configuration
can inspect GIT_PREFIX environment variable to learn where in the
working tree the original command was invoked.
+ * 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.
+
+ 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".
+
* "git blame" learned "--abbrev[=<n>]" option to control the minimum
number of hexdigits shown for commit object names.
- * "git cvsimport" learned that CVSNT stores its password file in a
- location different from the traditional CVS.
+ * "git blame" learned "--line-porcelain" that is less efficient but is
+ easier to parse.
- * "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.
+ * Aborting "git commit --interactive" discards updates to the index
+ made during the interactive session.
+
+ * "git commit" learned a "--patch" option to directly jump to the
+ per-hunk selection UI of the interactive mode.
+
+ * "git diff" and its family of commands learned --dirstat=0 to show
+ directories that contribute less than 0.1% of changes.
+
+ * "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.
* "git format-patch" learned "--quiet" option to suppress the output of
the names of generated files.
characters in it, e.g. "Junio C. Hamano" <jch@example.com>. Earlier
it was up to the user to do this when using its output.
+ * "git format-patch" can take an empty --subject-prefix now.
+
+ * "git grep" learned the "-P" option to take pcre regular expressions.
+
* "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.
+ * They also learned a log.abbrevCommit configuration variable to augment
+ the --abbrev-commit command line option.
+
+ * "git ls-remote" learned "--exit-code" option to consider it a
+ different kind of error when no remote ref to be shown.
+
* "git merge" learned "-" as a short-hand for "the previous branch", just
like the way "git checkout -" works.
- * "git merge-one-file" learned to honor GIT_WORK_TREE settings when
- handling "both sides added, differently" conflict.
+ * "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.
+
+ * p4-import (from contrib) learned a new option --preserve-user.
+
+ * "git read-tree -m" learned "--dry-run" option that reports if a merge
+ would fail without touching the index nor the working tree.
+
+ * "git rebase" that does not specify on top of which branch to rebase
+ the current branch now uses @{upstream} of the current branch.
+
+ * "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.
+
+ * "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.
* "git rev-list --count" used with "--cherry-mark" counts the cherry-picked
commits separately, producing more a useful output.
* "git submodule update" learned "--force" option to get rid of local
changes in submodules and replace them with the up-to-date version.
- * Compressed tarball gitweb generates is made without the timestamp of
- the tarball generation; snapshot from the same tree should result in
- a same tarball.
-
- * "git-p4" (in contrib) learned to merge a file that was added on both
- branches differently by using 2-way merge.
+ * "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.
Also contains various documentation updates and minor miscellaneous
changes.
* "git config" used to choke with an insanely long line.
(merge ef/maint-strbuf-init later)
- * "git diff-files" did not show the mode information from the working
- tree side of an unmerged path correctly.
- (merge jc/fix-diff-files-unmerged later)
-
- * "git diff -M --cached" used to use unmerged path as a possible rename
- source candidate, which made no sense.
- (merge mz/maint-rename-unmerged later)
-
- * "git format-patch" when run with "--quiet" option used to produce a
- nonsense result that consists of alternating empty output.
- (merge early part of cn/format-patch-quiet later)
-
- * "git format-patch" did not quote RFC822 special characters in the
- email address (e.g From: Junio C. Hamano <jch@example.com>, not
- From: "Junio C. Hamano" <jch@example.com>).
- (merge jk/format-patch-quote-special-in-from later)
-
- * "git mergetool" did not handle conflicted submoudules gracefully.
- (merge jm/mergetool-submodules later)
-
- * "git rebase -i -p" failed to preserve the history when there is a
- redundant merge created with the --no-ff option.
- (merge aw/maint-rebase-i-p-no-ff later)
-
- * "git stash -p --no-keep-index" and "git stash --no-keep-index -p" now
- mean the same thing.
- (merge dm/stash-k-i-p later)
-
- * "git upload-pack" (hence "git push" over git native protocol) had a
- subtle race condition that could lead to a deadlock.
- (merge jk/maint-upload-pack-shallow later)
+ * "git diff --quiet" did not work well with --diff-filter.
+ (merge jk/diff-not-so-quick later)
----
-exec >/var/tmp/1
-echo O=$(git describe master)
-O=v1.7.5.1-216-g3970fc5
-git shortlog --no-merges ^maint ^$O master
+ * "git status -z" did not default to --porcelain output format.
+ (merge bc/maint-status-z-to-use-porcelain later)