diff --git a/Documentation/Makefile b/Documentation/Makefile index 9e7f2a7880..b6d1d8824f 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -37,6 +37,7 @@ INSTALL?=install DOC_REF = origin/man -include ../config.mak.autogen +-include ../config.mak # # Please note that there is a minor bug in asciidoc. diff --git a/Documentation/RelNotes-1.5.0.3.txt b/Documentation/RelNotes-1.5.0.3.txt new file mode 100644 index 0000000000..90b49cf27d --- /dev/null +++ b/Documentation/RelNotes-1.5.0.3.txt @@ -0,0 +1,55 @@ +GIT v1.5.0.2 Release Notes +========================== + +Fixes since v1.5.0.2 +-------------------- + +* Bugfixes + + - 'git.el' honors the commit coding system from the configuration. + + - 'blameview' in contrib/ correctly digs deeper when a line is + clicked. + + - 'http-push' correctly makes sure the remote side has leading + path. Earlier it started in the middle of the path, and + incorrectly. + + - 'cvsexportcommit' does not lose yet-to-be-used message file. + + - int-vs-size_t typefix when running combined diff on files + over 2GB long. + + - 'git apply --whitespace=strip' should not touch unmodified + lines. + + - 'git-mailinfo' choke when a logical header line was too long. + + - 'git show A..B' did not error out. Negative ref ("not A" in + this example) does not make sense for the purpose of the + command, so now it errors out. + + - 'git fmt-merge-msg --file' without file parameter did not + correctly error out. + + - 'git archimport' barfed upon encountering a commit without + summary. + + - 'git index-pack' did not protect itself from getting a short + read out of pread(2). + +* Documentation updates + + - options to 'git remote add' were described insufficiently. + + +--- +exec >/var/tmp/1 +O=v1.5.0.2 +O=v1.5.0.2-16-gdb554bf +echo O=`git describe maint` +git shortlog --no-merges $O..maint + +# Local Variables: +# mode: text +# End: diff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt index 266faade31..a9fb6a9a5e 100644 --- a/Documentation/git-remote.txt +++ b/Documentation/git-remote.txt @@ -10,7 +10,7 @@ SYNOPSIS -------- [verse] 'git-remote' -'git-remote' add +'git-remote' add [-t ] [-m ] [-f] 'git-remote' show 'git-remote' prune 'git-remote' update [group] @@ -77,8 +77,8 @@ gitlink:git-config[1]). Examples -------- -Add a new remote, fetch, and check out a branch from it: - +* Add a new remote, fetch, and check out a branch from it ++ ------------ $ git remote origin @@ -98,6 +98,17 @@ $ git checkout -b nfs linux-nfs/master ... ------------ +* Imitate 'git clone' but track only selected branches ++ +------------ +$ mkdir project.git +$ cd project.git +$ git init +$ git remote add -f -t master -m master origin git://example.com/git.git/ +$ git merge origin +------------ + + See Also -------- gitlink:git-fetch[1] diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el index 24629eb3e2..13d198229b 100644 --- a/contrib/emacs/git.el +++ b/contrib/emacs/git.el @@ -75,10 +75,11 @@ then to `add-log-mailing-address' and then to `user-mail-address'." :type '(choice (const :tag "Default" nil) (string :tag "Email"))) -(defcustom git-commits-coding-system 'utf-8 +(defcustom git-commits-coding-system nil "Default coding system for the log message of git commits." :group 'git - :type 'coding-system) + :type '(choice (const :tag "From repository config" nil) + (coding-system))) (defcustom git-append-signed-off-by nil "Whether to append a Signed-off-by line to the commit message before editing." @@ -236,6 +237,15 @@ and returns the process output as a string." (and (fboundp 'user-mail-address) (user-mail-address)) (and (boundp 'user-mail-address) user-mail-address))) +(defun git-get-commits-coding-system () + "Return the coding system to use for commits." + (let ((repo-config (git-config "i18n.commitencoding"))) + (or git-commits-coding-system + (and repo-config + (fboundp 'locale-charset-to-coding-system) + (locale-charset-to-coding-system repo-config)) + 'utf-8))) + (defun git-escape-file-name (name) "Escape a file name if necessary." (if (string-match "[\n\t\"\\]" name) @@ -327,7 +337,7 @@ and returns the process output as a string." "Call git-commit-tree with buffer as input and return the resulting commit SHA1." (let ((author-name (git-get-committer-name)) (author-email (git-get-committer-email)) - author-date log-start log-end args) + author-date log-start log-end args coding-system-for-write) (when head (push "-p" args) (push head args)) @@ -350,12 +360,12 @@ and returns the process output as a string." (push "-p" args) (push (match-string 1) args)))) (setq log-start (point-min))) - (setq log-end (point-max))) + (setq log-end (point-max)) + (setq coding-system-for-write buffer-file-coding-system)) (git-get-string-sha1 (with-output-to-string (with-current-buffer standard-output - (let ((coding-system-for-write git-commits-coding-system) - (env `(("GIT_AUTHOR_NAME" . ,author-name) + (let ((env `(("GIT_AUTHOR_NAME" . ,author-name) ("GIT_AUTHOR_EMAIL" . ,author-email) ("GIT_COMMITTER_NAME" . ,(git-get-committer-name)) ("GIT_COMMITTER_EMAIL" . ,(git-get-committer-email))))) @@ -888,6 +898,7 @@ and returns the process output as a string." (let ((buffer (get-buffer-create "*git-commit*")) (merge-heads (git-get-merge-heads)) (dir default-directory) + (coding-system (git-get-commits-coding-system)) (sign-off git-append-signed-off-by)) (with-current-buffer buffer (when (eq 0 (buffer-size)) @@ -912,6 +923,7 @@ and returns the process output as a string." (git-get-committer-name) (git-get-committer-email))))))) (log-edit #'git-do-commit nil #'git-log-edit-files buffer) (setq font-lock-keywords (font-lock-compile-keywords git-log-edit-font-lock-keywords)) + (setq buffer-file-coding-system coding-system) (re-search-forward (regexp-quote (concat git-log-msg-separator "\n")) nil t))) (defun git-find-file () diff --git a/git-archimport.perl b/git-archimport.perl index 66aaeae102..0fcb156d14 100755 --- a/git-archimport.perl +++ b/git-archimport.perl @@ -553,7 +553,7 @@ sub process_patchset_fast { my $pid = open2(*READER, *WRITER,'git-commit-tree',$tree,@par) or die $!; - print WRITER $ps->{summary},"\n"; + print WRITER $ps->{summary},"\n\n"; print WRITER $ps->{message},"\n"; # make it easy to backtrack and figure out which Arch revision this was: @@ -755,7 +755,8 @@ sub parselog { $ps->{tag} = $1; $key = undef; } elsif (/^Summary:\s*(.*)$/ ) { - # summary can be multiline as long as it has a leading space + # summary can be multiline as long as it has a leading space. + # we squeeze it onto a single line, though. $ps->{summary} = [ $1 ]; $key = 'summary'; } elsif (/^Creator: (.*)\s*<([^\>]+)>/) { @@ -787,8 +788,18 @@ sub parselog { } } - # post-processing: - $ps->{summary} = join("\n",@{$ps->{summary}})."\n"; + # drop leading empty lines from the log message + while (@$log && $log->[0] eq '') { + shift @$log; + } + if (exists $ps->{summary} && @{$ps->{summary}}) { + $ps->{summary} = join(' ', @{$ps->{summary}}); + } + elsif (@$log == 0) { + $ps->{summary} = 'empty commit message'; + } else { + $ps->{summary} = $log->[0] . '...'; + } $ps->{message} = join("\n",@$log); # skip Arch control files, unescape pika-escaped files diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl index d08216cfd7..67224b4449 100755 --- a/git-cvsexportcommit.perl +++ b/git-cvsexportcommit.perl @@ -248,13 +248,14 @@ die "Exiting: The commit did not succeed"; } print "Committed successfully to CVS\n"; + # clean up + unlink(".msg"); } else { print "Ready for you to commit, just run:\n\n $cmd\n"; } # clean up unlink(".cvsexportcommit.diff"); -unlink(".msg"); sub usage { print STDERR <url, path); /* Make sure leading directories exist for the remote ref */ - ep = strchr(url + strlen(remote->url) + 11, '/'); + ep = strchr(url + strlen(remote->url) + 1, '/'); while (ep) { *ep = 0; slot = get_active_slot();