From: Junio C Hamano Date: Sun, 9 May 2010 05:35:35 +0000 (-0700) Subject: Merge branch 'cw/ws-indent-with-tab' X-Git-Tag: v1.7.2-rc0~156 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/c58c5129d6f0a35ee62bcc0892209a2400e9f4e6?hp=a347b17f15dd5358ced8d447af144a46b224982d Merge branch 'cw/ws-indent-with-tab' * cw/ws-indent-with-tab: whitespace: tests for git-apply --whitespace=fix with tab-in-indent whitespace: add tab-in-indent support for --whitespace=fix whitespace: replumb ws_fix_copy to take a strbuf *dst instead of char *dst whitespace: tests for git-diff --check with tab-in-indent error class whitespace: add tab-in-indent error class whitespace: we cannot "catch all errors known to git" anymore --- diff --git a/.gitignore b/.gitignore index 7b3acb7664..dbf1b90c63 100644 --- a/.gitignore +++ b/.gitignore @@ -155,7 +155,9 @@ /git-write-tree /git-core-*/?* /gitk-git/gitk-wish +/gitweb/GITWEB-BUILD-OPTIONS /gitweb/gitweb.cgi +/gitweb/gitweb.min.* /test-chmtime /test-ctype /test-date @@ -177,7 +179,7 @@ *.exe *.[aos] *.py[co] -*.o.d +.depend/ *+ /config.mak /autom4te.cache diff --git a/.mailmap b/.mailmap index 88bd01e16d..a8091eb5df 100644 --- a/.mailmap +++ b/.mailmap @@ -5,6 +5,7 @@ # same person appearing not to be so. # +Alex Bennée Alexander Gavrilov Aneesh Kumar K.V Brian M. Carlson @@ -15,6 +16,7 @@ Daniel Barkalow David D. Kilzer David Kågedal David S. Miller +Deskin Miller Dirk Süsserott Fredrik Kuivinen H. Peter Anvin @@ -60,6 +62,7 @@ Uwe Kleine-König Uwe Kleine-König Uwe Kleine-König Ville Skyttä +Vitaly "_Vi" Shukela William Pursell YOSHIFUJI Hideaki anonymous diff --git a/Documentation/Makefile b/Documentation/Makefile index 8a8a3954dc..04f69cf64e 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -264,7 +264,9 @@ manpage-base-url.xsl: manpage-base-url.xsl.in mv $@+ $@ user-manual.xml: user-manual.txt user-manual.conf - $(QUIET_ASCIIDOC)$(ASCIIDOC) $(ASCIIDOC_EXTRA) -b docbook -d book $< + $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ + $(ASCIIDOC) $(ASCIIDOC_EXTRA) -b docbook -d book -o $@+ $< && \ + mv $@+ $@ technical/api-index.txt: technical/api-index-skel.txt \ technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS)) @@ -278,7 +280,9 @@ XSLT = docbook.xsl XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css user-manual.html: user-manual.xml - $(QUIET_XSLTPROC)xsltproc $(XSLTOPTS) -o $@ $(XSLT) $< + $(QUIET_XSLTPROC)$(RM) $@+ $@ && \ + xsltproc $(XSLTOPTS) -o $@+ $(XSLT) $< && \ + mv $@+ $@ git.info: user-manual.texi $(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi diff --git a/Documentation/RelNotes-1.7.0.4.txt b/Documentation/RelNotes-1.7.0.4.txt index cbc94a2f08..cf7f60e60d 100644 --- a/Documentation/RelNotes-1.7.0.4.txt +++ b/Documentation/RelNotes-1.7.0.4.txt @@ -1,9 +1,11 @@ -Git v1.7.0.4 Release Notes (draft) -================================== +Git v1.7.0.4 Release Notes +========================== Fixes since v1.7.0.3 -------------------- + * Optimized ntohl/htonl on big-endian machines were broken. + * Color values given to "color.." configuration can now have more than one attributes (e.g. "bold ul"). @@ -16,4 +18,10 @@ Fixes since v1.7.0.3 * "git fast-export" didn't check error status and stop when marks file cannot be opened. + * "git format-patch --ignore-if-in-upstream" gave unwarranted errors + when the range was empty, instead of silently finishing. + + * "git remote prune" did not detect remote tracking refs that became + dangling correctly. + And other minor fixes and documentation updates. diff --git a/Documentation/RelNotes-1.7.0.5.txt b/Documentation/RelNotes-1.7.0.5.txt new file mode 100644 index 0000000000..3149c91b7b --- /dev/null +++ b/Documentation/RelNotes-1.7.0.5.txt @@ -0,0 +1,26 @@ +Git v1.7.0.5 Release Notes +========================== + +Fixes since v1.7.0.4 +-------------------- + + * "git daemon" failed to compile on platforms without sockaddr_storage type. + + * Output from "git rev-list --pretty=oneline" was unparsable when a + commit did not have any message, which is abnormal but possible in a + repository converted from foreign scm. + + * "git stash show " gave an error message + that was not so useful. Reworded the message to " is not a + stash". + + * Python scripts in contrib/ area now start with "#!/usr/bin/env python" + to honor user's PATH. + + * "git imap-send" used to mistake any line that begins with "From " as a + message separator in format-patch output. + + * Smart http server backend failed to report an internal server error and + infinitely looped instead after output pipe was closed. + +And other minor fixes and documentation updates. diff --git a/Documentation/RelNotes-1.7.0.6.txt b/Documentation/RelNotes-1.7.0.6.txt new file mode 100644 index 0000000000..b2852b67d0 --- /dev/null +++ b/Documentation/RelNotes-1.7.0.6.txt @@ -0,0 +1,13 @@ +Git v1.7.0.6 Release Notes +========================== + +Fixes since v1.7.0.5 +-------------------- + + * "git diff --stat" used "int" to count the size of differences, + which could result in overflowing. + + * "git rev-list --abbrev-commit" defaulted to 40-byte abbreviations, unlike + newer tools in the git toolset. + +And other minor fixes and documentation updates. diff --git a/Documentation/RelNotes-1.7.1.txt b/Documentation/RelNotes-1.7.1.txt index 19aeef5eff..9d89fedb36 100644 --- a/Documentation/RelNotes-1.7.1.txt +++ b/Documentation/RelNotes-1.7.1.txt @@ -1,19 +1,30 @@ -Git v1.7.1 Release Notes (draft) -================================ +Git v1.7.1 Release Notes +======================== Updates since v1.7.0 -------------------- + * Eric Raymond is the maintainer of updated CIAbot scripts, in contrib/. + + * gitk updates. + * Some commands (e.g. svn and http interfaces) that interactively ask - password can be told to use an external program given via GIT_ASKPASS. + for a password can be told to use an external program given via + GIT_ASKPASS. + + * Conflict markers that lead the common ancestor in diff3-style output + now have a label, which hopefully would help third-party tools that + expect one. + + * Comes with an updated bash-completion script. * "git am" learned "--keep-cr" option to handle inputs that are - mixture of changes to files with and without CRLF line endings. + a mixture of changes to files with and without CRLF line endings. * "git cvsimport" learned -R option to leave revision mapping between CVS revisions and resulting git commits. - * "git diff --submodule" notices and descries dirty submodules. + * "git diff --submodule" notices and describes dirty submodules. * "git for-each-ref" learned %(symref), %(symref:short) and %(flag) tokens. @@ -34,12 +45,11 @@ Updates since v1.7.0 * "git log -p --first-parent -m" shows one-parent diff for merge commits, instead of showing combined diff. - * "git merge-file" learned to use custom conflict marker size and also use - the "union merge" behaviour. + * "git merge-file" learned to use custom conflict marker size and also + to use the "union merge" behaviour. - * "git notes" command has been rewritten in C and learned quite a - many commands and features to help you carry notes forward across - rebases and amends. + * "git notes" command has been rewritten in C and learned many commands + and features to help you carry notes forward across rebases and amends. * "git request-pull" identifies the commit the request is relative to in a more readable way. @@ -48,13 +58,18 @@ Updates since v1.7.0 near the tip while preserving your local changes in a way similar to how "git checkout branch" does. - * "git status" notices and descries dirty submodules. + * "git status" notices and describes dirty submodules. * "git svn" should work better when interacting with repositories with CRLF line endings. * "git imap-send" learned to support CRAM-MD5 authentication. + * "gitweb" installation procedure can use "minified" js/css files + better. + + * Various documentation updates. + Fixes since v1.7.0 ------------------ @@ -64,8 +79,11 @@ release, unless otherwise noted. * "git add frotz/nitfol" did not complain when the entire frotz/ directory was ignored. ---- -exec >/var/tmp/1 -echo O=$(git describe) -O=v1.7.0.3-310-g99f5b08 -git shortlog --no-merges ^maint $O.. + * "git diff --stat" used "int" to count the size of differences, + which could result in overflowing. + + * "git rev-list --pretty=oneline" didn't terminate a record with LF for + commits without any message. + + * "git rev-list --abbrev-commit" defaulted to 40-byte abbreviations, unlike + newer tools in the git toolset. diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index c686f8646b..abc65de946 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches @@ -520,11 +520,9 @@ Gmail GMail does not appear to have any way to turn off line wrapping in the web interface, so this will mangle any emails that you send. You can however use any IMAP email client to connect to the google imap server, and forward -the emails through that. Just make sure to disable line wrapping in that -email client. Alternatively, use "git send-email" instead. +the emails through that. -Submitting properly formatted patches via Gmail is simple now that -IMAP support is available. First, edit your ~/.gitconfig to specify your +To submit using the IMAP interface, first, edit your ~/.gitconfig to specify your account settings: [imap] @@ -538,14 +536,29 @@ account settings: You might need to instead use: folder = "[Google Mail]/Drafts" if you get an error that the "Folder doesn't exist". -Next, ensure that your Gmail settings are correct. In "Settings" the -"Use Unicode (UTF-8) encoding for outgoing messages" should be checked. +Once your commits are ready to be sent to the mailing list, run the +following command to send the patch emails to your Gmail Drafts +folder. -Once your commits are ready to send to the mailing list, run the following -command to send the patch emails to your Gmail Drafts folder. + $ git format-patch --cover-letter -M --stdout origin/master | git imap-send - $ git format-patch -M --stdout origin/master | git imap-send +Just make sure to disable line wrapping in the email client (GMail web +interface will line wrap no matter what, so you need to use a real +IMAP client). -Go to your Gmail account, open the Drafts folder, find the patch email, fill -in the To: and CC: fields and send away! +Alternatively, you can use "git send-email" and send your patches +through the GMail SMTP server. edit ~/.gitconfig to specify your +account settings: + +[sendemail] + smtpencryption = tls + smtpserver = smtp.gmail.com + smtpuser = user@gmail.com + smtppass = p4ssw0rd + smtpserverport = 587 + +Once your commits are ready to be sent to the mailing list, run the +following commands: + $ git format-patch --cover-letter -M origin/master -o outgoing/ + $ git send-email outgoing/* diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt index 4833cac4b9..d8205691c6 100644 --- a/Documentation/blame-options.txt +++ b/Documentation/blame-options.txt @@ -79,14 +79,15 @@ of lines before or after the line given by . of the --date option at linkgit:git-log[1]. -M||:: - Detect moving lines in the file as well. When a commit - moves a block of lines in a file (e.g. the original file - has A and then B, and the commit changes it to B and - then A), the traditional 'blame' algorithm typically blames - the lines that were moved up (i.e. B) to the parent and - assigns blame to the lines that were moved down (i.e. A) - to the child commit. With this option, both groups of lines - are blamed on the parent. + Detect moved or copied lines within a file. When a commit + moves or copies a block of lines (e.g. the original file + has A and then B, and the commit changes it to B and then + A), the traditional 'blame' algorithm notices only half of + the movement and typically blames the lines that were moved + up (i.e. B) to the parent and assigns blame to the lines that + were moved down (i.e. A) to the child commit. With this + option, both groups of lines are blamed on the parent by + running extra passes of inspection. + is optional but it is the lower bound on the number of alphanumeric characters that git must detect as moving @@ -94,7 +95,7 @@ within a file for it to associate those lines with the parent commit. -C||:: - In addition to `-M`, detect lines copied from other + In addition to `-M`, detect lines moved or copied from other files that were modified in the same commit. This is useful when you reorganize your program and move code around across files. When this option is given twice, diff --git a/Documentation/config.txt b/Documentation/config.txt index 9bb8f3d898..6308026bf6 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -198,11 +198,11 @@ core.quotepath:: core.autocrlf:: If true, makes git convert `CRLF` at the end of lines in text files to - `LF` when reading from the filesystem, and convert in reverse when - writing to the filesystem. The variable can be set to + `LF` when reading from the work tree, and convert in reverse when + writing to the work tree. The variable can be set to 'input', in which case the conversion happens only while - reading from the filesystem but files are written out with - `LF` at the end of lines. A file is considered + reading from the work tree but files are written out to the work + tree with `LF` at the end of lines. A file is considered "text" (i.e. be subjected to the autocrlf mechanism) based on the file's `crlf` attribute, or if `crlf` is unspecified, based on the file's contents. See linkgit:gitattributes[5]. @@ -916,7 +916,7 @@ format.signoff:: gc.aggressiveWindow:: The window size parameter used in the delta compression algorithm used by 'git gc --aggressive'. This defaults - to 10. + to 250. gc.auto:: When there are approximately more than this many loose @@ -1361,10 +1361,6 @@ notes.rewrite.:: automatically copies your notes from the original to the rewritten commit. Defaults to `true`, but see "notes.rewriteRef" below. -+ -This setting can be overridden with the `GIT_NOTES_REWRITE_REF` -environment variable, which must be a colon separated list of refs or -globs. notes.rewriteMode:: When copying notes during a rewrite (see the @@ -1384,6 +1380,10 @@ notes.rewriteRef:: + Does not have a default value; you must configure this variable to enable note rewriting. ++ +This setting can be overridden with the `GIT_NOTES_REWRITE_REF` +environment variable, which must be a colon separated list of refs or +globs. pack.window:: The size of the window used by linkgit:git-pack-objects[1] when no diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 60e922e6ef..c9c6c2b1cb 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -94,8 +94,8 @@ Also, when `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] ifndef::git-log[] - When `--raw` or `--numstat` has been given, do not munge - pathnames and use NULs as output field terminators. + When `--raw`, `--numstat`, `--name-only` or `--name-status` has been + given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] + Without this option, each pathname output will have TAB, LF, double quotes, diff --git a/Documentation/everyday.txt b/Documentation/everyday.txt index 9310b650d3..e0ba8cc075 100644 --- a/Documentation/everyday.txt +++ b/Documentation/everyday.txt @@ -1,13 +1,8 @@ Everyday GIT With 20 Commands Or So =================================== -<> commands are needed by people who have a -repository --- that is everybody, because every working tree of -git is a repository. - -In addition, <> commands are -essential for anybody who makes a commit, even for somebody who -works alone. +<> commands are essential for +anybody who makes a commit, even for somebody who works alone. If you work with other people, you will need commands listed in the <> section as well. @@ -20,46 +15,6 @@ administrators who are responsible for the care and feeding of git repositories. -Basic Repository[[Basic Repository]] ------------------------------------- - -Everybody uses these commands to maintain git repositories. - - * linkgit:git-init[1] or linkgit:git-clone[1] to create a - new repository. - - * linkgit:git-fsck[1] to check the repository for errors. - - * linkgit:git-gc[1] to do common housekeeping tasks such as - repack and prune. - -Examples -~~~~~~~~ - -Check health and remove cruft.:: -+ ------------- -$ git fsck <1> -$ git count-objects <2> -$ git gc <3> ------------- -+ -<1> running without `\--full` is usually cheap and assures the -repository health reasonably well. -<2> check how many loose objects there are and how much -disk space is wasted by not repacking. -<3> repacks the local repository and performs other housekeeping tasks. - -Repack a small project into single pack.:: -+ ------------- -$ git gc <1> ------------- -+ -<1> pack all the objects reachable from the refs into one pack, -then remove the other packs. - - Individual Developer (Standalone)[[Individual Developer (Standalone)]] ---------------------------------------------------------------------- @@ -67,6 +22,8 @@ A standalone individual developer does not exchange patches with other people, and works alone in a single repository, using the following commands. + * linkgit:git-init[1] to create a new repository. + * linkgit:git-show-branch[1] to see where you are. * linkgit:git-log[1] to see what happened. diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt index 903a690f10..1940256930 100644 --- a/Documentation/git-branch.txt +++ b/Documentation/git-branch.txt @@ -63,7 +63,9 @@ way to clean up all obsolete remote-tracking branches. OPTIONS ------- -d:: - Delete a branch. The branch must be fully merged in HEAD. + Delete a branch. The branch must be fully merged in its + upstream branch, or in `HEAD` if no upstream was set with + `--track` or `--set-upstream`. -D:: Delete a branch irrespective of its merged status. @@ -72,6 +74,8 @@ OPTIONS Create the branch's reflog. This activates recording of all changes made to the branch ref, enabling use of date based sha1 expressions such as "@\{yesterday}". + Note that in non-bare repositories, reflogs are usually + enabled by default by the `core.logallrefupdates` config option. -f:: --force:: diff --git a/Documentation/git-fetch.txt b/Documentation/git-fetch.txt index 948ea26c5a..400fe7f956 100644 --- a/Documentation/git-fetch.txt +++ b/Documentation/git-fetch.txt @@ -8,13 +8,13 @@ git-fetch - Download objects and refs from another repository SYNOPSIS -------- -'git fetch' ... +'git fetch' [] [ [...]] -'git fetch' +'git fetch' [] -'git fetch' --multiple [ | ]... +'git fetch' --multiple [] [ | ]... -'git fetch' --all +'git fetch' --all [] DESCRIPTION diff --git a/Documentation/git-http-backend.txt b/Documentation/git-http-backend.txt index 5238820657..277d9e141b 100644 --- a/Documentation/git-http-backend.txt +++ b/Documentation/git-http-backend.txt @@ -35,7 +35,7 @@ These services can be enabled/disabled using the per-repository configuration file: http.getanyfile:: - This serves older Git clients which are unable to use the + This serves Git clients older than version 1.6.6 that are unable to use the upload pack service. When enabled, clients are able to read any file within the repository, including objects that are no longer reachable from a branch but are still present. diff --git a/Documentation/git-imap-send.txt b/Documentation/git-imap-send.txt index 6cafbe2ec1..57aba42e66 100644 --- a/Documentation/git-imap-send.txt +++ b/Documentation/git-imap-send.txt @@ -16,7 +16,9 @@ DESCRIPTION This command uploads a mailbox generated with 'git format-patch' into an IMAP drafts folder. This allows patches to be sent as other email is when using mail clients that cannot read mailbox -files directly. +files directly. The command also works with any general mailbox +in which emails have the fields "From", "Date", and "Subject" in +that order. Typical usage is something like: @@ -122,12 +124,6 @@ Thunderbird in particular is known to be problematic. Thunderbird users may wish to visit this web page for more information: http://kb.mozillazine.org/Plain_text_e-mail_-_Thunderbird#Completely_plain_email - -BUGS ----- -Doesn't handle lines starting with "From " in the message body. - - Author ------ Derived from isync 1.0.1 by Mike McCormack. diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt index 9c9618cead..c2325ef90e 100644 --- a/Documentation/git-merge.txt +++ b/Documentation/git-merge.txt @@ -9,7 +9,8 @@ git-merge - Join two or more development histories together SYNOPSIS -------- [verse] -'git merge' [-n] [--stat] [--no-commit] [--squash] [-s ]... +'git merge' [-n] [--stat] [--no-commit] [--squash] + [-s ] [-X ] [--[no-]rerere-autoupdate] [-m ] ... 'git merge' HEAD ... diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt index 59dc8b197e..48570242fb 100644 --- a/Documentation/git-push.txt +++ b/Documentation/git-push.txt @@ -11,7 +11,7 @@ SYNOPSIS [verse] 'git push' [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=] [--repo=] [-f | --force] [-v | --verbose] [-u | --set-upstream] - [ ...] + [ [...]] DESCRIPTION ----------- diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index 823f2a4638..0d07b1b207 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -274,9 +274,16 @@ which makes little sense. -f:: --force-rebase:: Force the rebase even if the current branch is a descendant - of the commit you are rebasing onto. Normally the command will + of the commit you are rebasing onto. Normally non-interactive rebase will exit with the message "Current branch is up to date" in such a situation. + Incompatible with the --interactive option. ++ +You may find this (or --no-ff with an interactive rebase) helpful after +reverting a topic branch merge, as this option recreates the topic branch with +fresh commits so it can be remerged successfully without needing to "revert +the reversion" (see the +link:howto/revert-a-faulty-merge.txt[revert-a-faulty-merge How-To] for details). --ignore-whitespace:: --whitespace=