Merge branch 'maint'
authorJunio C Hamano <gitster@pobox.com>
Thu, 9 Apr 2009 06:41:27 +0000 (23:41 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 9 Apr 2009 06:47:23 +0000 (23:47 -0700)
* maint:
Start 1.6.2.3 preparation
process_{tree,blob}: Remove useless xstrdup calls
git-pull.sh: better warning message for "git pull" on detached head.

Conflicts:
RelNotes

1  2 
Documentation/RelNotes-1.6.3.txt
git-pull.sh
index db6956205d4fe12dbb4adefb71bc01030f15dde7,0000000000000000000000000000000000000000..517c783b5d123a2585461c2b5b2c4638bf5125e2
mode 100644,000000..100644
--- /dev/null
@@@ -1,151 -1,0 +1,146 @@@
- * git-repack (invoked from git-gc) did not work as nicely as it should in
-   a repository that borrows objects from neighbours via alternates
-   mechanism especially when some packs are marked with the ".keep" flag
-   to prevent them from being repacked.
 +GIT v1.6.3 Release Notes
 +========================
 +
 +With the next major release, "git push" into a branch that is
 +currently checked out will be refused by default.  You can choose
 +what should happen upon such a push by setting the configuration
 +variable receive.denyCurrentBranch in the receiving repository.
 +
 +To ease the transition plan, the receiving repository of such a
 +push running this release will issue a big warning when the
 +configuration variable is missing.  Please refer to:
 +
 +  http://git.or.cz/gitwiki/GitFaq#non-bare
 +  http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
 +
 +for more details on the reason why this change is needed and the
 +transition plan.
 +
 +For a similar reason, "git push $there :$killed" to delete the branch
 +$killed in a remote repository $there, if $killed branch is the current
 +branch pointed at by its HEAD, gets a large warning.  You can choose what
 +should happen upon such a push by setting the configuration variable
 +receive.denyDeleteCurrent in the receiving repository.
 +
 +When the user does not tell "git push" what to push, it has always
 +pushed matching refs.  For some people it is unexpected, and a new
 +configuration variable push.default has been introduced to allow
 +changing a different default behaviour.  To advertise the new feature,
 +a big warning is issued if this is not configured and a git push without
 +arguments is attempted.
 +
 +
 +Updates since v1.6.2
 +--------------------
 +
 +(subsystems)
 +
 +(performance)
 +
 +* many uses of lstat(2) in the codepath for "git checkout" have been
 +  optimized out.
 +
 +(usability, bells and whistles)
 +
 +* rsync:/path/to/repo can be used to run git over rsync for local
 +  repositories.  It may not be useful in practice; meant primarily for
 +  testing.
 +
 +* http transport learned to prompt and use password when fetching from or
 +  pushing to http://user@host.xz/ URL.
 +
 +* (msysgit) progress output that is sent over the sideband protocol can
 +  be handled appropriately in Windows console.
 +
 +* "--pretty=<style>" option to the log family of commands can now be
 +  spelled as "--format=<style>".  In addition, --format=%formatstring
 +  is a short-hand for --pretty=tformat:%formatstring.
 +
 +* "--oneline" is a synonym for "--pretty=oneline --abbrev=commit".
 +
 +* If you realize that you botched the patch when you are editing hunks
 +  with the 'edit' action in git-add -i/-p, you can abort the editor to
 +  tell git not to apply it.
 +
 +* The number of commits shown in "you are ahead/behind your upstream"
 +  messages given by "git checkout" and "git status" used to count merge
 +  commits; now it doesn't.
 +
 +* git-archive learned --output=<file> option.
 +
 +* git-bisect shows not just the number of remaining commits whose goodness
 +  is unknown, but also shows the estimated number of remaining rounds.
 +
 +* You can give --date=<format> option to git-blame.
 +
 +* git-branch -r shows HEAD symref that points at a remote branch in
 +  interest of each tracked remote repository.
 +
 +* git-config learned -e option to open an editor to edit the config file
 +  directly.
 +
 +* git-clone runs post-checkout hook when run without --no-checkout.
 +
 +* git-fast-export choked when seeing a tag that does not point at commit.
 +
 +* git-format-patch can be told to use attachment with a new configuration,
 +  format.attach.
 +
 +* git-format-patch can be told to produce deep or shallow message threads.
 +
 +* git-format-patch learned format.headers configuration to add extra
 +  header fields to the output.  This behaviour is similar to the existing
 +  --add-header=<header> option of the command.
 +
 +* git-grep learned to highlight the found substrings in color.
 +
 +* git-imap-send learned to work around Thunderbird's inability to easily
 +  disable format=flowed with a new configuration, imap.preformattedHTML.
 +
 +* git-rebase can be told to rebase the series even if your branch is a
 +  descendant of the commit you are rebasing onto with --force-rebase
 +  option.
 +
 +* git-rebase can be told to report diffstat with the --stat option.
 +
 +* Output from git-remote command has been vastly improved.
 +
 +* git-send-email learned --confirm option to review the Cc: list before
 +  sending the messages out.
 +
 +(developers)
 +
 +* Test scripts can be run under valgrind.
 +
 +* Test scripts can be run with installed git.
 +
 +* Makefile learned 'coverage' option to run the test suites with
 +  coverage tracking enabled.
 +
 +* Building the manpages with docbook-xsl between 1.69.1 and 1.71.1 now
 +  requires setting DOCBOOK_SUPPRESS_SP to work around a docbook-xsl bug.
 +  This workaround used to be enabled by default, but causes problems
 +  with newer versions of docbook-xsl.  In addition, there are a few more
 +  knobs you can tweak to work around issues with various versions of the
 +  docbook-xsl package.  See comments in Documentation/Makefile for details.
 +
 +Fixes since v1.6.2
 +------------------
 +
 +All of the fixes in v1.6.2.X maintenance series are included in this
 +release, unless otherwise noted.
 +
 +Here are fixes that this release has, but have not been backported to
 +v1.6.2.X series.
 +
 +* The initial checkout did not read the attributes from the .gitattribute
 +  file that is being checked out.
 +
 +* git-gc spent excessive amount of time to decide if an object appears
 +  in a locally existing pack (if needed, backport by merging 69e020a).
 +
 +---
 +exec >/var/tmp/1
 +O=v1.6.2.2-403-g8130949
 +echo O=$(git describe master)
 +git shortlog --no-merges $O..master ^maint
diff --combined git-pull.sh
index 8a26763206dbd852aacb15db7f5319eb35678a29,c8920596050abc531d721dc95dfc8b11096ecd92..8c750270e9ee1466180c2fbbc8e688d5131a17fe
@@@ -16,7 -16,7 +16,7 @@@ cd_to_topleve
  test -z "$(git ls-files -u)" ||
        die "You are in the middle of a conflicted merge."
  
 -strategy_args= no_stat= no_commit= squash= no_ff= log_arg= verbosity=
 +strategy_args= diffstat= no_commit= squash= no_ff= log_arg= verbosity=
  curr_branch=$(git symbolic-ref -q HEAD)
  curr_branch_short=$(echo "$curr_branch" | sed "s|refs/heads/||")
  rebase=$(git config --bool branch.$curr_branch_short.rebase)
@@@ -28,9 -28,9 +28,9 @@@ d
        -v|--verbose)
                verbosity="$verbosity -v" ;;
        -n|--no-stat|--no-summary)
 -              no_stat=-n ;;
 +              diffstat=--no-stat ;;
        --stat|--summary)
 -              no_stat=$1 ;;
 +              diffstat=--stat ;;
        --log|--no-log)
                log_arg=$1 ;;
        --no-c|--no-co|--no-com|--no-comm|--no-commi|--no-commit)
@@@ -90,23 -90,31 +90,31 @@@ error_on_no_merge_candidates () 
  
        curr_branch=${curr_branch#refs/heads/}
  
-       echo "You asked me to pull without telling me which branch you"
-       echo "want to merge with, and 'branch.${curr_branch}.merge' in"
-       echo "your configuration file does not tell me either.  Please"
-       echo "name which branch you want to merge on the command line and"
-       echo "try again (e.g. 'git pull <repository> <refspec>')."
-       echo "See git-pull(1) for details on the refspec."
-       echo
-       echo "If you often merge with the same branch, you may want to"
-       echo "configure the following variables in your configuration"
-       echo "file:"
-       echo
-       echo "    branch.${curr_branch}.remote = <nickname>"
-       echo "    branch.${curr_branch}.merge = <remote-ref>"
-       echo "    remote.<nickname>.url = <url>"
-       echo "    remote.<nickname>.fetch = <refspec>"
-       echo
-       echo "See git-config(1) for details."
+       if [ -z "$curr_branch" ]; then
+               echo "You are not currently on a branch, so I cannot use any"
+               echo "'branch.<branchname>.merge' in your configuration file."
+               echo "Please specify which branch you want to merge on the command"
+               echo "line and try again (e.g. 'git pull <repository> <refspec>')."
+               echo "See git-pull(1) for details."
+       else
+               echo "You asked me to pull without telling me which branch you"
+               echo "want to merge with, and 'branch.${curr_branch}.merge' in"
+               echo "your configuration file does not tell me either.  Please"
+               echo "specify which branch you want to merge on the command line and"
+               echo "try again (e.g. 'git pull <repository> <refspec>')."
+               echo "See git-pull(1) for details."
+               echo
+               echo "If you often merge with the same branch, you may want to"
+               echo "configure the following variables in your configuration"
+               echo "file:"
+               echo
+               echo "    branch.${curr_branch}.remote = <nickname>"
+               echo "    branch.${curr_branch}.merge = <remote-ref>"
+               echo "    remote.<nickname>.url = <url>"
+               echo "    remote.<nickname>.fetch = <refspec>"
+               echo
+               echo "See git-config(1) for details."
+       fi
        exit 1
  }
  
@@@ -188,7 -196,7 +196,7 @@@ f
  
  merge_name=$(git fmt-merge-msg $log_arg <"$GIT_DIR/FETCH_HEAD") || exit
  test true = "$rebase" &&
 -      exec git-rebase $strategy_args --onto $merge_head \
 +      exec git-rebase $diffstat $strategy_args --onto $merge_head \
        ${oldremoteref:-$merge_head}
 -exec git-merge $no_stat $no_commit $squash $no_ff $log_arg $strategy_args \
 +exec git-merge $diffstat $no_commit $squash $no_ff $log_arg $strategy_args \
        "$merge_name" HEAD $merge_head $verbosity