Staging
v0.5.1
v0.5.1
https://github.com/git/git
Revision a2239b79e554bab92abe47d8568cbbfe5c77ce85 authored by Junio C Hamano on 16 October 2005, 00:30:15 UTC, committed by Junio C Hamano on 16 October 2005, 01:10:02 UTC
Contains the following changes since v0.99.8c. Johannes Schindelin: Teach git-status about spaces in file names also on MacOSX t5400-send-pack relies on a working cpio Jonas Fonseca: git.sh: quote all paths Junio C Hamano: Also force LC_ALL in test scripts. OpenBSD needs the strcasestr replacement. git-check-ref-format: reject funny ref names. Refuse to create funny refs in clone-pack, git-fetch and receive-pack. Ignore funny refname sent from remote Introduce notation "ref^{type}". Martin Langhoff: cvsimport: don't pass --cvs-direct if user options contradict us Ralf Baechle: rsh.c: typo fix Note that "funny ref" bits are not strictly fixes but rather backport from the "master" branch. They will prevent refs and heads with funny names from being created. In addition, what is in the master branch will start feeding the clients unwrapped tag information to help Martin's findtags and possibly later Cogito. These backported "funny ref" changes are to prevent clients on the "maint" branch from getting confused when talking with newer git-upload-pack and when reading from info/refs file prepared with newer git-update-server-info. Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent 4baf5dd
Tip revision: a2239b79e554bab92abe47d8568cbbfe5c77ce85 authored by Junio C Hamano on 16 October 2005, 00:30:15 UTC
GIT v0.99.8d
GIT v0.99.8d
Tip revision: a2239b7
git-format-patch.sh
#!/bin/sh
#
# Copyright (c) 2005 Junio C Hamano
#
. git-sh-setup || die "Not a git archive."
usage () {
echo >&2 "usage: $0"' [-n] [-o dir] [--keep-subject] [--mbox] [--check] [--signoff] [-<diff options>...] upstream [ our-head ]
Prepare each commit with its patch since our-head forked from upstream,
one file per patch, for e-mail submission. Each output file is
numbered sequentially from 1, and uses the first line of the commit
message (massaged for pathname safety) as the filename.
When -o is specified, output files are created in that directory; otherwise in
the current working directory.
When -n is specified, instead of "[PATCH] Subject", the first line is formatted
as "[PATCH N/M] Subject", unless you have only one patch.
When --mbox is specified, the output is formatted to resemble
UNIX mailbox format, and can be concatenated together for processing
with applymbox.
'
exit 1
}
diff_opts=
LF='
'
outdir=./
while case "$#" in 0) break;; esac
do
case "$1" in
-a|--a|--au|--aut|--auth|--autho|--author)
author=t ;;
-c|--c|--ch|--che|--chec|--check)
check=t ;;
-d|--d|--da|--dat|--date)
date=t ;;
-m|--m|--mb|--mbo|--mbox)
date=t author=t mbox=t ;;
-k|--k|--ke|--kee|--keep|--keep-|--keep-s|--keep-su|--keep-sub|\
--keep-subj|--keep-subje|--keep-subjec|--keep-subject)
keep_subject=t ;;
-n|--n|--nu|--num|--numb|--numbe|--number|--numbere|--numbered)
numbered=t ;;
-s|--s|--si|--sig|--sign|--signo|--signof|--signoff)
signoff=t ;;
-o=*|--o=*|--ou=*|--out=*|--outp=*|--outpu=*|--output=*|--output-=*|\
--output-d=*|--output-di=*|--output-dir=*|--output-dire=*|\
--output-direc=*|--output-direct=*|--output-directo=*|\
--output-director=*|--output-directory=*)
outdir=`expr "$1" : '-[^=]*=\(.*\)'` ;;
-o|--o|--ou|--out|--outp|--outpu|--output|--output-|--output-d|\
--output-di|--output-dir|--output-dire|--output-direc|--output-direct|\
--output-directo|--output-director|--output-directory)
case "$#" in 1) usage ;; esac; shift
outdir="$1" ;;
-*' '* | -*"$LF"* | -*' '*)
# Ignore diff option that has whitespace for now.
;;
-*) diff_opts="$diff_opts$1 " ;;
*) break ;;
esac
shift
done
case "$keep_subject$numbered" in
tt)
die '--keep-subject and --numbered are incompatible.' ;;
esac
rev1= rev2=
case "$#" in
2)
rev1="$1" rev2="$2" ;;
1)
case "$1" in
*..*)
rev1=`expr "$1" : '\(.*\)\.\.'`
rev2=`expr "$1" : '.*\.\.\(.*\)'`
;;
*)
rev1="$1"
rev2="HEAD"
;;
esac ;;
*)
usage ;;
esac
me=`git-var GIT_AUTHOR_IDENT | sed -e 's/>.*/>/'`
case "$outdir" in
*/) ;;
*) outdir="$outdir/" ;;
esac
test -d "$outdir" || mkdir -p "$outdir" || exit
tmp=.tmp-series$$
trap 'rm -f $tmp-*' 0 1 2 3 15
series=$tmp-series
commsg=$tmp-commsg
filelist=$tmp-files
titleScript='
/./d
/^$/n
s/^\[PATCH[^]]*\] *//
s/[^-a-z.A-Z_0-9]/-/g
s/\.\.\.*/\./g
s/\.*$//
s/--*/-/g
s/^-//
s/-$//
s/$/./
p
q
'
whosepatchScript='
/^author /{
s/author \(.*>\) \(.*\)$/au='\''\1'\'' ad='\''\2'\''/p
q
}'
git-cherry -v "$rev1" "$rev2" |
while read sign rev comment
do
case "$sign" in
'-')
echo >&2 "Merged already: $comment"
;;
*)
echo $rev
;;
esac
done >$series
total=`wc -l <$series | tr -dc "[0-9]"`
i=1
while read commit
do
git-cat-file commit "$commit" | git-stripspace >$commsg
title=`sed -ne "$titleScript" <$commsg`
case "$numbered" in
'') num= ;;
*)
case $total in
1) num= ;;
*) num=' '`printf "%d/%d" $i $total` ;;
esac
esac
file=`printf '%04d-%stxt' $i "$title"`
i=`expr "$i" + 1`
echo "* $file"
{
mailScript='
/./d
/^$/n'
case "$keep_subject" in
t) ;;
*)
mailScript="$mailScript"'
s|^\[PATCH[^]]*\] *||
s|^|[PATCH'"$num"'] |'
;;
esac
mailScript="$mailScript"'
s|^|Subject: |'
case "$mbox" in
t)
echo 'From nobody Mon Sep 17 00:00:00 2001' ;# UNIX "From" line
;;
esac
eval "$(sed -ne "$whosepatchScript" $commsg)"
test "$author,$au" = ",$me" || {
mailScript="$mailScript"'
a\
From: '"$au"
}
test "$date,$au" = ",$me" || {
mailScript="$mailScript"'
a\
Date: '"$ad"
}
mailScript="$mailScript"'
: body
p
n
b body'
sed -ne "$mailScript" <$commsg
test "$signoff" = "t" && {
offsigner=`git-var GIT_COMMITTER_IDENT | sed -e 's/>.*/>/'`
line="Signed-off-by: $offsigner"
grep -q "^$line\$" $commsg || {
echo
echo "$line"
echo
}
}
echo
echo '---'
echo
git-diff-tree -p $diff_opts "$commit" | git-apply --stat --summary
echo
git-diff-tree -p $diff_opts "$commit"
case "$mbox" in
t)
echo
;;
esac
} >"$outdir$file"
case "$check" in
t)
# This is slightly modified from Andrew Morton's Perfect Patch.
# Lines you introduce should not have trailing whitespace.
# Also check for an indentation that has SP before a TAB.
grep -n '^+\([ ]* .*\|.*[ ]\)$' "$outdir$file"
: do not exit with non-zero because we saw no problem in the last one.
esac
done <$series
Computing file changes ...