зеркало из https://github.com/microsoft/git.git
Merge branch 'maint'
* maint: Start preparing for 1.5.3.6 git-send-email: Change the prompt for the subject of the initial message. SubmittingPatches: improve the 'Patch:' section of the checklist instaweb: Minor cleanups and fixes for potential problems stop t1400 hiding errors in tests Makefile: add missing dependency on wt-status.h refresh_index_quietly(): express "optional" nature of index writing better Fix sed string regex escaping in module_name. Avoid a few unportable, needlessly nested "...`...". git-mailsplit: with maildirs not only process cur/, but also new/ Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Коммит
5d4138a66d
|
@ -0,0 +1,21 @@
|
||||||
|
GIT v1.5.3.6 Release Notes
|
||||||
|
==========================
|
||||||
|
|
||||||
|
Fixes since v1.5.3.5
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
* git-cvsexportcommit handles root commits better;
|
||||||
|
|
||||||
|
* git-svn dcommit used to clobber when sending a series of
|
||||||
|
patches;
|
||||||
|
|
||||||
|
* git-grep sometimes refused to work when your index was
|
||||||
|
unmerged;
|
||||||
|
|
||||||
|
* Quite a lot of documentation clarifications.
|
||||||
|
|
||||||
|
--
|
||||||
|
exec >/var/tmp/1
|
||||||
|
O=v1.5.3.5-32-gcb6c162
|
||||||
|
echo O=`git describe refs/heads/maint`
|
||||||
|
git shortlog --no-merges $O..refs/heads/maint
|
|
@ -20,9 +20,6 @@ Checklist (and a short version for the impatient):
|
||||||
Patch:
|
Patch:
|
||||||
|
|
||||||
- use "git format-patch -M" to create the patch
|
- use "git format-patch -M" to create the patch
|
||||||
- send your patch to <git@vger.kernel.org>. If you use
|
|
||||||
git-send-email(1), please test it first by sending
|
|
||||||
email to yourself.
|
|
||||||
- do not PGP sign your patch
|
- do not PGP sign your patch
|
||||||
- do not attach your patch, but read in the mail
|
- do not attach your patch, but read in the mail
|
||||||
body, unless you cannot teach your mailer to
|
body, unless you cannot teach your mailer to
|
||||||
|
@ -31,13 +28,15 @@ Checklist (and a short version for the impatient):
|
||||||
corrupt whitespaces.
|
corrupt whitespaces.
|
||||||
- provide additional information (which is unsuitable for
|
- provide additional information (which is unsuitable for
|
||||||
the commit message) between the "---" and the diffstat
|
the commit message) between the "---" and the diffstat
|
||||||
- send the patch to the list (git@vger.kernel.org) and the
|
|
||||||
maintainer (gitster@pobox.com).
|
|
||||||
- if you change, add, or remove a command line option or
|
- if you change, add, or remove a command line option or
|
||||||
make some other user interface change, the associated
|
make some other user interface change, the associated
|
||||||
documentation should be updated as well.
|
documentation should be updated as well.
|
||||||
- if your name is not writable in ASCII, make sure that
|
- if your name is not writable in ASCII, make sure that
|
||||||
you send off a message in the correct encoding.
|
you send off a message in the correct encoding.
|
||||||
|
- send the patch to the list (git@vger.kernel.org) and the
|
||||||
|
maintainer (gitster@pobox.com). If you use
|
||||||
|
git-send-email(1), please test it first by sending
|
||||||
|
email to yourself.
|
||||||
|
|
||||||
Long version:
|
Long version:
|
||||||
|
|
||||||
|
|
1
Makefile
1
Makefile
|
@ -922,6 +922,7 @@ git-http-push$X: revision.o http.o http-push.o $(GITLIBS)
|
||||||
|
|
||||||
$(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)
|
$(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)
|
||||||
$(patsubst git-%$X,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h)
|
$(patsubst git-%$X,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h)
|
||||||
|
builtin-revert.o builtin-runstatus.o wt-status.o: wt-status.h
|
||||||
|
|
||||||
$(LIB_FILE): $(LIB_OBJS)
|
$(LIB_FILE): $(LIB_OBJS)
|
||||||
$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)
|
$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)
|
||||||
|
|
|
@ -200,15 +200,11 @@ static void refresh_index_quietly(void)
|
||||||
discard_cache();
|
discard_cache();
|
||||||
read_cache();
|
read_cache();
|
||||||
refresh_cache(REFRESH_QUIET|REFRESH_UNMERGED);
|
refresh_cache(REFRESH_QUIET|REFRESH_UNMERGED);
|
||||||
if (active_cache_changed) {
|
|
||||||
if (write_cache(fd, active_cache, active_nr) ||
|
if (active_cache_changed &&
|
||||||
close(fd) ||
|
!write_cache(fd, active_cache, active_nr) && !close(fd))
|
||||||
commit_locked_index(lock_file))
|
commit_locked_index(lock_file);
|
||||||
; /*
|
|
||||||
* silently ignore it -- we haven't mucked
|
|
||||||
* with the real index.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
rollback_lock_file(lock_file);
|
rollback_lock_file(lock_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,20 +101,29 @@ static int populate_maildir_list(struct path_list *list, const char *path)
|
||||||
{
|
{
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent *dent;
|
struct dirent *dent;
|
||||||
|
char name[PATH_MAX];
|
||||||
|
char *subs[] = { "cur", "new", NULL };
|
||||||
|
char **sub;
|
||||||
|
|
||||||
if ((dir = opendir(path)) == NULL) {
|
for (sub = subs; *sub; ++sub) {
|
||||||
error("cannot opendir %s (%s)", path, strerror(errno));
|
snprintf(name, sizeof(name), "%s/%s", path, *sub);
|
||||||
return -1;
|
if ((dir = opendir(name)) == NULL) {
|
||||||
|
if (errno == ENOENT)
|
||||||
|
continue;
|
||||||
|
error("cannot opendir %s (%s)", name, strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((dent = readdir(dir)) != NULL) {
|
||||||
|
if (dent->d_name[0] == '.')
|
||||||
|
continue;
|
||||||
|
snprintf(name, sizeof(name), "%s/%s", *sub, dent->d_name);
|
||||||
|
path_list_insert(name, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((dent = readdir(dir)) != NULL) {
|
|
||||||
if (dent->d_name[0] == '.')
|
|
||||||
continue;
|
|
||||||
path_list_insert(dent->d_name, list);
|
|
||||||
}
|
|
||||||
|
|
||||||
closedir(dir);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,19 +131,17 @@ static int split_maildir(const char *maildir, const char *dir,
|
||||||
int nr_prec, int skip)
|
int nr_prec, int skip)
|
||||||
{
|
{
|
||||||
char file[PATH_MAX];
|
char file[PATH_MAX];
|
||||||
char curdir[PATH_MAX];
|
|
||||||
char name[PATH_MAX];
|
char name[PATH_MAX];
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
int i;
|
int i;
|
||||||
struct path_list list = {NULL, 0, 0, 1};
|
struct path_list list = {NULL, 0, 0, 1};
|
||||||
|
|
||||||
snprintf(curdir, sizeof(curdir), "%s/cur", maildir);
|
if (populate_maildir_list(&list, maildir) < 0)
|
||||||
if (populate_maildir_list(&list, curdir) < 0)
|
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
for (i = 0; i < list.nr; i++) {
|
for (i = 0; i < list.nr; i++) {
|
||||||
FILE *f;
|
FILE *f;
|
||||||
snprintf(file, sizeof(file), "%s/%s", curdir, list.items[i].path);
|
snprintf(file, sizeof(file), "%s/%s", maildir, list.items[i].path);
|
||||||
f = fopen(file, "r");
|
f = fopen(file, "r");
|
||||||
if (!f) {
|
if (!f) {
|
||||||
error("cannot open mail %s (%s)", file, strerror(errno));
|
error("cannot open mail %s (%s)", file, strerror(errno));
|
||||||
|
@ -152,10 +159,9 @@ static int split_maildir(const char *maildir, const char *dir,
|
||||||
fclose(f);
|
fclose(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
path_list_clear(&list, 1);
|
|
||||||
|
|
||||||
ret = skip;
|
ret = skip;
|
||||||
out:
|
out:
|
||||||
|
path_list_clear(&list, 1);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ browser="`git config --get instaweb.browser`"
|
||||||
port=`git config --get instaweb.port`
|
port=`git config --get instaweb.port`
|
||||||
module_path="`git config --get instaweb.modulepath`"
|
module_path="`git config --get instaweb.modulepath`"
|
||||||
|
|
||||||
conf=$GIT_DIR/gitweb/httpd.conf
|
conf="$GIT_DIR/gitweb/httpd.conf"
|
||||||
|
|
||||||
# Defaults:
|
# Defaults:
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ start_httpd () {
|
||||||
httpd_only="`echo $httpd | cut -f1 -d' '`"
|
httpd_only="`echo $httpd | cut -f1 -d' '`"
|
||||||
if case "$httpd_only" in /*) : ;; *) which $httpd_only >/dev/null;; esac
|
if case "$httpd_only" in /*) : ;; *) which $httpd_only >/dev/null;; esac
|
||||||
then
|
then
|
||||||
$httpd $fqgitdir/gitweb/httpd.conf
|
$httpd "$fqgitdir/gitweb/httpd.conf"
|
||||||
else
|
else
|
||||||
# many httpds are installed in /usr/sbin or /usr/local/sbin
|
# many httpds are installed in /usr/sbin or /usr/local/sbin
|
||||||
# these days and those are not in most users $PATHs
|
# these days and those are not in most users $PATHs
|
||||||
|
@ -185,14 +185,14 @@ server.pid-file = "$fqgitdir/pid"
|
||||||
cgi.assign = ( ".cgi" => "" )
|
cgi.assign = ( ".cgi" => "" )
|
||||||
mimetype.assign = ( ".css" => "text/css" )
|
mimetype.assign = ( ".css" => "text/css" )
|
||||||
EOF
|
EOF
|
||||||
test "$local" = true && echo 'server.bind = "127.0.0.1"' >> "$conf"
|
test x"$local" = xtrue && echo 'server.bind = "127.0.0.1"' >> "$conf"
|
||||||
}
|
}
|
||||||
|
|
||||||
apache2_conf () {
|
apache2_conf () {
|
||||||
test -z "$module_path" && module_path=/usr/lib/apache2/modules
|
test -z "$module_path" && module_path=/usr/lib/apache2/modules
|
||||||
mkdir -p "$GIT_DIR/gitweb/logs"
|
mkdir -p "$GIT_DIR/gitweb/logs"
|
||||||
bind=
|
bind=
|
||||||
test "$local" = true && bind='127.0.0.1:'
|
test x"$local" = xtrue && bind='127.0.0.1:'
|
||||||
echo 'text/css css' > $fqgitdir/mime.types
|
echo 'text/css css' > $fqgitdir/mime.types
|
||||||
cat > "$conf" <<EOF
|
cat > "$conf" <<EOF
|
||||||
ServerName "git-instaweb"
|
ServerName "git-instaweb"
|
||||||
|
@ -245,7 +245,7 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
script='
|
script='
|
||||||
s#^\(my\|our\) $projectroot =.*#\1 $projectroot = "'`dirname $fqgitdir`'";#
|
s#^\(my\|our\) $projectroot =.*#\1 $projectroot = "'$(dirname "$fqgitdir")'";#
|
||||||
s#\(my\|our\) $gitbin =.*#\1 $gitbin = "'$GIT_EXEC_PATH'";#
|
s#\(my\|our\) $gitbin =.*#\1 $gitbin = "'$GIT_EXEC_PATH'";#
|
||||||
s#\(my\|our\) $projects_list =.*#\1 $projects_list = $projectroot;#
|
s#\(my\|our\) $projects_list =.*#\1 $projects_list = $projectroot;#
|
||||||
s#\(my\|our\) $git_temp =.*#\1 $git_temp = "'$fqgitdir/gitweb/tmp'";#'
|
s#\(my\|our\) $git_temp =.*#\1 $git_temp = "'$fqgitdir/gitweb/tmp'";#'
|
||||||
|
@ -265,8 +265,8 @@ gitweb_css () {
|
||||||
EOFGITWEB
|
EOFGITWEB
|
||||||
}
|
}
|
||||||
|
|
||||||
gitweb_cgi $GIT_DIR/gitweb/gitweb.cgi
|
gitweb_cgi "$GIT_DIR/gitweb/gitweb.cgi"
|
||||||
gitweb_css $GIT_DIR/gitweb/gitweb.css
|
gitweb_css "$GIT_DIR/gitweb/gitweb.css"
|
||||||
|
|
||||||
case "$httpd" in
|
case "$httpd" in
|
||||||
*lighttpd*)
|
*lighttpd*)
|
||||||
|
@ -285,6 +285,5 @@ webrick)
|
||||||
esac
|
esac
|
||||||
|
|
||||||
start_httpd
|
start_httpd
|
||||||
test -z "$browser" && browser=echo
|
|
||||||
url=http://127.0.0.1:$port
|
url=http://127.0.0.1:$port
|
||||||
$browser $url || echo $url
|
"$browser" $url || echo $url
|
||||||
|
|
|
@ -391,7 +391,7 @@ do
|
||||||
-s|--strategy)
|
-s|--strategy)
|
||||||
case "$#,$1" in
|
case "$#,$1" in
|
||||||
*,*=*)
|
*,*=*)
|
||||||
STRATEGY="-s `expr "z$1" : 'z-[^=]*=\(.*\)'`" ;;
|
STRATEGY="-s "$(expr "z$1" : 'z-[^=]*=\(.*\)') ;;
|
||||||
1,*)
|
1,*)
|
||||||
usage ;;
|
usage ;;
|
||||||
*)
|
*)
|
||||||
|
|
|
@ -24,13 +24,13 @@ headrev=`git rev-parse --verify "$head"^0` || exit
|
||||||
merge_base=`git merge-base $baserev $headrev` ||
|
merge_base=`git merge-base $baserev $headrev` ||
|
||||||
die "fatal: No commits in common between $base and $head"
|
die "fatal: No commits in common between $base and $head"
|
||||||
|
|
||||||
url="`get_remote_url "$url"`"
|
url=$(get_remote_url "$url")
|
||||||
branch=`git peek-remote "$url" \
|
branch=$(git peek-remote "$url" \
|
||||||
| sed -n -e "/^$headrev refs.heads./{
|
| sed -n -e "/^$headrev refs.heads./{
|
||||||
s/^.* refs.heads.//
|
s/^.* refs.heads.//
|
||||||
p
|
p
|
||||||
q
|
q
|
||||||
}"`
|
}")
|
||||||
if [ -z "$branch" ]; then
|
if [ -z "$branch" ]; then
|
||||||
echo "warn: No branch of $url is at:" >&2
|
echo "warn: No branch of $url is at:" >&2
|
||||||
git log --max-count=1 --pretty='format:warn: %h: %s' $headrev >&2
|
git log --max-count=1 --pretty='format:warn: %h: %s' $headrev >&2
|
||||||
|
|
|
@ -352,7 +352,7 @@ sub expand_aliases {
|
||||||
|
|
||||||
if (!defined $initial_subject && $compose) {
|
if (!defined $initial_subject && $compose) {
|
||||||
do {
|
do {
|
||||||
$_ = $term->readline("What subject should the emails start with? ",
|
$_ = $term->readline("What subject should the initial email start with? ",
|
||||||
$initial_subject);
|
$initial_subject);
|
||||||
} while (!defined $_);
|
} while (!defined $_);
|
||||||
$initial_subject = $_;
|
$initial_subject = $_;
|
||||||
|
|
|
@ -73,7 +73,7 @@ resolve_relative_url ()
|
||||||
module_name()
|
module_name()
|
||||||
{
|
{
|
||||||
# Do we have "submodule.<something>.path = $1" defined in .gitmodules file?
|
# Do we have "submodule.<something>.path = $1" defined in .gitmodules file?
|
||||||
re=$(printf '%s' "$1" | sed -e 's/\([^a-zA-Z0-9_]\)/\\\1/g')
|
re=$(printf '%s' "$1" | sed -e 's/[].[^$\\*]/\\&/g')
|
||||||
name=$( GIT_CONFIG=.gitmodules \
|
name=$( GIT_CONFIG=.gitmodules \
|
||||||
git config --get-regexp '^submodule\..*\.path$' |
|
git config --get-regexp '^submodule\..*\.path$' |
|
||||||
sed -n -e 's|^submodule\.\(.*\)\.path '"$re"'$|\1|p' )
|
sed -n -e 's|^submodule\.\(.*\)\.path '"$re"'$|\1|p' )
|
||||||
|
|
|
@ -205,7 +205,7 @@ test_expect_success \
|
||||||
echo $h_TEST >.git/MERGE_HEAD &&
|
echo $h_TEST >.git/MERGE_HEAD &&
|
||||||
GIT_AUTHOR_DATE="2005-05-26 23:45" \
|
GIT_AUTHOR_DATE="2005-05-26 23:45" \
|
||||||
GIT_COMMITTER_DATE="2005-05-26 23:45" git-commit -F M &&
|
GIT_COMMITTER_DATE="2005-05-26 23:45" git-commit -F M &&
|
||||||
h_MERGED=$(git rev-parse --verify HEAD)
|
h_MERGED=$(git rev-parse --verify HEAD) &&
|
||||||
rm -f M'
|
rm -f M'
|
||||||
|
|
||||||
cat >expect <<EOF
|
cat >expect <<EOF
|
||||||
|
|
Загрузка…
Ссылка в новой задаче