Merge branch 'maint'
* maint: Start preparing Release Notes for 1.5.0.3 Documentation: git-remote add [-t <branch>] [-m <branch>] [-f] name url Include config.mak in doc/Makefile git.el: Set the default commit coding system from the repository config. git-archimport: support empty summaries, put summary on a single line. http-push.c::lock_remote(): validate all remote refs. git-cvsexportcommit: don't cleanup .msg if not yet committed to cvs.
This commit is contained in:
commit
1db8b60b2a
@ -37,6 +37,7 @@ INSTALL?=install
|
|||||||
DOC_REF = origin/man
|
DOC_REF = origin/man
|
||||||
|
|
||||||
-include ../config.mak.autogen
|
-include ../config.mak.autogen
|
||||||
|
-include ../config.mak
|
||||||
|
|
||||||
#
|
#
|
||||||
# Please note that there is a minor bug in asciidoc.
|
# Please note that there is a minor bug in asciidoc.
|
||||||
|
55
Documentation/RelNotes-1.5.0.3.txt
Normal file
55
Documentation/RelNotes-1.5.0.3.txt
Normal file
@ -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:
|
@ -10,7 +10,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git-remote'
|
'git-remote'
|
||||||
'git-remote' add <name> <url>
|
'git-remote' add [-t <branch>] [-m <branch>] [-f] <name> <url>
|
||||||
'git-remote' show <name>
|
'git-remote' show <name>
|
||||||
'git-remote' prune <name>
|
'git-remote' prune <name>
|
||||||
'git-remote' update [group]
|
'git-remote' update [group]
|
||||||
@ -77,8 +77,8 @@ gitlink:git-config[1]).
|
|||||||
Examples
|
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
|
$ git remote
|
||||||
origin
|
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
|
See Also
|
||||||
--------
|
--------
|
||||||
gitlink:git-fetch[1]
|
gitlink:git-fetch[1]
|
||||||
|
@ -75,10 +75,11 @@ then to `add-log-mailing-address' and then to `user-mail-address'."
|
|||||||
:type '(choice (const :tag "Default" nil)
|
:type '(choice (const :tag "Default" nil)
|
||||||
(string :tag "Email")))
|
(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."
|
"Default coding system for the log message of git commits."
|
||||||
:group 'git
|
:group 'git
|
||||||
:type 'coding-system)
|
:type '(choice (const :tag "From repository config" nil)
|
||||||
|
(coding-system)))
|
||||||
|
|
||||||
(defcustom git-append-signed-off-by nil
|
(defcustom git-append-signed-off-by nil
|
||||||
"Whether to append a Signed-off-by line to the commit message before editing."
|
"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 (fboundp 'user-mail-address) (user-mail-address))
|
||||||
(and (boundp '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)
|
(defun git-escape-file-name (name)
|
||||||
"Escape a file name if necessary."
|
"Escape a file name if necessary."
|
||||||
(if (string-match "[\n\t\"\\]" name)
|
(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."
|
"Call git-commit-tree with buffer as input and return the resulting commit SHA1."
|
||||||
(let ((author-name (git-get-committer-name))
|
(let ((author-name (git-get-committer-name))
|
||||||
(author-email (git-get-committer-email))
|
(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
|
(when head
|
||||||
(push "-p" args)
|
(push "-p" args)
|
||||||
(push head args))
|
(push head args))
|
||||||
@ -350,12 +360,12 @@ and returns the process output as a string."
|
|||||||
(push "-p" args)
|
(push "-p" args)
|
||||||
(push (match-string 1) args))))
|
(push (match-string 1) args))))
|
||||||
(setq log-start (point-min)))
|
(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
|
(git-get-string-sha1
|
||||||
(with-output-to-string
|
(with-output-to-string
|
||||||
(with-current-buffer standard-output
|
(with-current-buffer standard-output
|
||||||
(let ((coding-system-for-write git-commits-coding-system)
|
(let ((env `(("GIT_AUTHOR_NAME" . ,author-name)
|
||||||
(env `(("GIT_AUTHOR_NAME" . ,author-name)
|
|
||||||
("GIT_AUTHOR_EMAIL" . ,author-email)
|
("GIT_AUTHOR_EMAIL" . ,author-email)
|
||||||
("GIT_COMMITTER_NAME" . ,(git-get-committer-name))
|
("GIT_COMMITTER_NAME" . ,(git-get-committer-name))
|
||||||
("GIT_COMMITTER_EMAIL" . ,(git-get-committer-email)))))
|
("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*"))
|
(let ((buffer (get-buffer-create "*git-commit*"))
|
||||||
(merge-heads (git-get-merge-heads))
|
(merge-heads (git-get-merge-heads))
|
||||||
(dir default-directory)
|
(dir default-directory)
|
||||||
|
(coding-system (git-get-commits-coding-system))
|
||||||
(sign-off git-append-signed-off-by))
|
(sign-off git-append-signed-off-by))
|
||||||
(with-current-buffer buffer
|
(with-current-buffer buffer
|
||||||
(when (eq 0 (buffer-size))
|
(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)))))))
|
(git-get-committer-name) (git-get-committer-email)))))))
|
||||||
(log-edit #'git-do-commit nil #'git-log-edit-files buffer)
|
(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 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)))
|
(re-search-forward (regexp-quote (concat git-log-msg-separator "\n")) nil t)))
|
||||||
|
|
||||||
(defun git-find-file ()
|
(defun git-find-file ()
|
||||||
|
@ -553,7 +553,7 @@ foreach my $ps (@psets) {
|
|||||||
|
|
||||||
my $pid = open2(*READER, *WRITER,'git-commit-tree',$tree,@par)
|
my $pid = open2(*READER, *WRITER,'git-commit-tree',$tree,@par)
|
||||||
or die $!;
|
or die $!;
|
||||||
print WRITER $ps->{summary},"\n";
|
print WRITER $ps->{summary},"\n\n";
|
||||||
print WRITER $ps->{message},"\n";
|
print WRITER $ps->{message},"\n";
|
||||||
|
|
||||||
# make it easy to backtrack and figure out which Arch revision this was:
|
# make it easy to backtrack and figure out which Arch revision this was:
|
||||||
@ -755,7 +755,8 @@ sub parselog {
|
|||||||
$ps->{tag} = $1;
|
$ps->{tag} = $1;
|
||||||
$key = undef;
|
$key = undef;
|
||||||
} elsif (/^Summary:\s*(.*)$/ ) {
|
} 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 ];
|
$ps->{summary} = [ $1 ];
|
||||||
$key = 'summary';
|
$key = 'summary';
|
||||||
} elsif (/^Creator: (.*)\s*<([^\>]+)>/) {
|
} elsif (/^Creator: (.*)\s*<([^\>]+)>/) {
|
||||||
@ -787,8 +788,18 @@ sub parselog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# post-processing:
|
# drop leading empty lines from the log message
|
||||||
$ps->{summary} = join("\n",@{$ps->{summary}})."\n";
|
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);
|
$ps->{message} = join("\n",@$log);
|
||||||
|
|
||||||
# skip Arch control files, unescape pika-escaped files
|
# skip Arch control files, unescape pika-escaped files
|
||||||
|
@ -248,13 +248,14 @@ if ($opt_c) {
|
|||||||
die "Exiting: The commit did not succeed";
|
die "Exiting: The commit did not succeed";
|
||||||
}
|
}
|
||||||
print "Committed successfully to CVS\n";
|
print "Committed successfully to CVS\n";
|
||||||
|
# clean up
|
||||||
|
unlink(".msg");
|
||||||
} else {
|
} else {
|
||||||
print "Ready for you to commit, just run:\n\n $cmd\n";
|
print "Ready for you to commit, just run:\n\n $cmd\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
# clean up
|
# clean up
|
||||||
unlink(".cvsexportcommit.diff");
|
unlink(".cvsexportcommit.diff");
|
||||||
unlink(".msg");
|
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
print STDERR <<END;
|
print STDERR <<END;
|
||||||
|
@ -1295,7 +1295,7 @@ static struct remote_lock *lock_remote(const char *path, long timeout)
|
|||||||
sprintf(url, "%s%s", remote->url, path);
|
sprintf(url, "%s%s", remote->url, path);
|
||||||
|
|
||||||
/* Make sure leading directories exist for the remote ref */
|
/* 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) {
|
while (ep) {
|
||||||
*ep = 0;
|
*ep = 0;
|
||||||
slot = get_active_slot();
|
slot = get_active_slot();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user