diff options
| -rw-r--r-- | Documentation/Makefile | 1 | ||||
| -rw-r--r-- | Documentation/RelNotes-1.5.0.3.txt | 55 | ||||
| -rw-r--r-- | Documentation/git-remote.txt | 17 | ||||
| -rw-r--r-- | contrib/emacs/git.el | 24 | ||||
| -rwxr-xr-x | git-archimport.perl | 19 | ||||
| -rwxr-xr-x | git-cvsexportcommit.perl | 3 | ||||
| -rw-r--r-- | http-push.c | 2 | 
7 files changed, 106 insertions, 15 deletions
| 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 <name> <url> +'git-remote' add [-t <branch>] [-m <branch>] [-f] <name> <url>  'git-remote' show <name>  'git-remote' prune <name>  '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 @@ foreach my $ps (@psets) {      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 @@ if ($opt_c) {  	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 <<END; diff --git a/http-push.c b/http-push.c index 0fd73dbf58..68b78b538a 100644 --- a/http-push.c +++ b/http-push.c @@ -1295,7 +1295,7 @@ static struct remote_lock *lock_remote(const char *path, long timeout)  	sprintf(url, "%s%s", remote->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(); | 
