Merge branch 'maint'
* maint: git-format-patch --in-reply-to: accept <message@id> with angle brackets git-add -u: do not barf on type changes Remove duplicate note about removing commits with git-filter-branch git-clone: improve error message if curl program is missing or not executable hooks--update: Explicitly check for all zeros for a deleted ref.
This commit is contained in:
commit
611d8139e4
@ -220,11 +220,6 @@ git filter-branch --commit-filter '
|
||||
fi' HEAD
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Note that the changes introduced by the commits, and not reverted by
|
||||
subsequent commits, will still be in the rewritten branch. If you want
|
||||
to throw out _changes_ together with the commits, you should use the
|
||||
interactive mode of gitlink:git-rebase[1].
|
||||
|
||||
The function 'skip_commits' is defined as follows:
|
||||
|
||||
--------------------------
|
||||
|
@ -98,6 +98,7 @@ static void update_callback(struct diff_queue_struct *q,
|
||||
die("unexpacted diff status %c", p->status);
|
||||
case DIFF_STATUS_UNMERGED:
|
||||
case DIFF_STATUS_MODIFIED:
|
||||
case DIFF_STATUS_TYPE_CHANGED:
|
||||
add_file_to_cache(path, verbose);
|
||||
break;
|
||||
case DIFF_STATUS_DELETED:
|
||||
|
@ -437,6 +437,34 @@ static void gen_message_id(char *dest, unsigned int length, char *base)
|
||||
(int)(email_end - email_start - 1), email_start + 1);
|
||||
}
|
||||
|
||||
static const char *clean_message_id(const char *msg_id)
|
||||
{
|
||||
char ch;
|
||||
const char *a, *z, *m;
|
||||
char *n;
|
||||
size_t len;
|
||||
|
||||
m = msg_id;
|
||||
while ((ch = *m) && (isspace(ch) || (ch == '<')))
|
||||
m++;
|
||||
a = m;
|
||||
z = NULL;
|
||||
while ((ch = *m)) {
|
||||
if (!isspace(ch) && (ch != '>'))
|
||||
z = m;
|
||||
m++;
|
||||
}
|
||||
if (!z)
|
||||
die("insane in-reply-to: %s", msg_id);
|
||||
if (++z == m)
|
||||
return a;
|
||||
len = z - a;
|
||||
n = xmalloc(len + 1);
|
||||
memcpy(n, a, len);
|
||||
n[len] = 0;
|
||||
return n;
|
||||
}
|
||||
|
||||
int cmd_format_patch(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
struct commit *commit;
|
||||
@ -625,7 +653,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
|
||||
if (numbered)
|
||||
rev.total = total + start_number - 1;
|
||||
rev.add_signoff = add_signoff;
|
||||
rev.ref_message_id = in_reply_to;
|
||||
if (in_reply_to)
|
||||
rev.ref_message_id = clean_message_id(in_reply_to);
|
||||
while (0 <= --nr) {
|
||||
int shown;
|
||||
commit = list[nr];
|
||||
|
@ -34,7 +34,11 @@ fi
|
||||
|
||||
http_fetch () {
|
||||
# $1 = Remote, $2 = Local
|
||||
curl -nsfL $curl_extra_args "$1" >"$2"
|
||||
curl -nsfL $curl_extra_args "$1" >"$2" ||
|
||||
case $? in
|
||||
126|127) exit ;;
|
||||
*) return $? ;;
|
||||
esac
|
||||
}
|
||||
|
||||
clone_dumb_http () {
|
||||
|
@ -42,7 +42,7 @@ fi
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a branch
|
||||
if [ -z "${newrev##0*}" ]; then
|
||||
if [ "$newrev" = "0000000000000000000000000000000000000000" ]; then
|
||||
newrev_type=commit
|
||||
else
|
||||
newrev_type=$(git-cat-file -t $newrev)
|
||||
|
Loading…
Reference in New Issue
Block a user