Merge branch 'master' of .
This commit is contained in:
commit
f5f2c52bb0
@ -8,6 +8,7 @@ ARTICLES += cvs-migration
|
|||||||
ARTICLES += diffcore
|
ARTICLES += diffcore
|
||||||
ARTICLES += howto-index
|
ARTICLES += howto-index
|
||||||
ARTICLES += repository-layout
|
ARTICLES += repository-layout
|
||||||
|
ARTICLES += hooks
|
||||||
# with their own formatting rules.
|
# with their own formatting rules.
|
||||||
SP_ARTICLES = glossary howto/revert-branch-rebase
|
SP_ARTICLES = glossary howto/revert-branch-rebase
|
||||||
|
|
||||||
|
@ -64,6 +64,12 @@ OPTIONS
|
|||||||
generated "Signed-off-by" line based on your committer
|
generated "Signed-off-by" line based on your committer
|
||||||
identity.
|
identity.
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
link:git-applypatch.html[git-applypatch].
|
||||||
|
|
||||||
|
|
||||||
Author
|
Author
|
||||||
------
|
------
|
||||||
Written by Linus Torvalds <torvalds@osdl.org>
|
Written by Linus Torvalds <torvalds@osdl.org>
|
||||||
|
@ -16,6 +16,10 @@ Takes three files <msg>, <patch>, and <info> prepared from an
|
|||||||
e-mail message by 'git-mailinfo', and creates a commit. It is
|
e-mail message by 'git-mailinfo', and creates a commit. It is
|
||||||
usually not necessary to use this command directly.
|
usually not necessary to use this command directly.
|
||||||
|
|
||||||
|
This command can run `applypatch-msg`, `pre-applypatch`, and
|
||||||
|
`post-applypatch` hooks. See link:hooks.html[hooks] for more
|
||||||
|
information.
|
||||||
|
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
|
@ -8,7 +8,7 @@ git-commit-script - Record your changes
|
|||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
'git commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>] <file>...
|
'git commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>] [-e] <file>...
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -17,6 +17,10 @@ Updates the index file for given paths, or all modified files if
|
|||||||
VISUAL and EDITOR environment variables to edit the commit log
|
VISUAL and EDITOR environment variables to edit the commit log
|
||||||
message.
|
message.
|
||||||
|
|
||||||
|
This command can run `commit-msg`, `pre-commit`, and
|
||||||
|
`post-commit` hooks. See link:hooks.html[hooks] for more
|
||||||
|
information.
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
-a::
|
-a::
|
||||||
@ -47,8 +51,14 @@ OPTIONS
|
|||||||
has a SP character immediately followed by a TAB
|
has a SP character immediately followed by a TAB
|
||||||
character.
|
character.
|
||||||
|
|
||||||
|
-e::
|
||||||
|
The message taken from file with `-F`, command line with
|
||||||
|
`-m`, and from file with `-C` are usually used as the
|
||||||
|
commit log message unmodified. This option lets you
|
||||||
|
further edit the message taken from these sources.
|
||||||
|
|
||||||
<file>...::
|
<file>...::
|
||||||
Update specified paths in the index file.
|
Update specified paths in the index file before committing.
|
||||||
|
|
||||||
|
|
||||||
Author
|
Author
|
||||||
|
@ -88,7 +88,7 @@ For an unmerged path, instead of recording a single mode/SHA1 pair,
|
|||||||
the dircache records up to three such pairs; one from tree O in stage
|
the dircache records up to three such pairs; one from tree O in stage
|
||||||
1, A in stage 2, and B in stage 3. This information can be used by
|
1, A in stage 2, and B in stage 3. This information can be used by
|
||||||
the user (or the porcelain) to see what should eventually be recorded at the
|
the user (or the porcelain) to see what should eventually be recorded at the
|
||||||
path. (see read-cache for more information on state)
|
path. (see git-read-tree for more information on state)
|
||||||
|
|
||||||
|
|
||||||
Exclude Patterns
|
Exclude Patterns
|
||||||
@ -180,7 +180,7 @@ An example:
|
|||||||
|
|
||||||
See Also
|
See Also
|
||||||
--------
|
--------
|
||||||
link:read-cache.html[read-cache]
|
link:git-read-tree.html[git-read-tree]
|
||||||
|
|
||||||
|
|
||||||
Author
|
Author
|
||||||
|
@ -77,6 +77,12 @@ OPTIONS
|
|||||||
<directory>::
|
<directory>::
|
||||||
The repository to sync into.
|
The repository to sync into.
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
link:git-send-pack.html[git-send-pack]
|
||||||
|
|
||||||
|
|
||||||
Author
|
Author
|
||||||
------
|
------
|
||||||
Written by Linus Torvalds <torvalds@osdl.org>
|
Written by Linus Torvalds <torvalds@osdl.org>
|
||||||
|
@ -24,8 +24,27 @@ OPTIONS
|
|||||||
-------
|
-------
|
||||||
|
|
||||||
--force::
|
--force::
|
||||||
Update the info files even when they do not appear
|
Update the info files from scratch.
|
||||||
stale.
|
|
||||||
|
|
||||||
|
OUTPUT
|
||||||
|
------
|
||||||
|
|
||||||
|
Currently the command updates the following files. Please see
|
||||||
|
link:repository-layout.html[repository-layout] for description
|
||||||
|
of what they are for:
|
||||||
|
|
||||||
|
* objects/info/packs
|
||||||
|
|
||||||
|
* info/refs
|
||||||
|
|
||||||
|
* info/rev-cache
|
||||||
|
|
||||||
|
|
||||||
|
BUGS
|
||||||
|
----
|
||||||
|
When you remove an existing ref, the command fails to update
|
||||||
|
info/refs file unless `--force` flag is given.
|
||||||
|
|
||||||
|
|
||||||
Author
|
Author
|
||||||
|
128
Documentation/hooks.txt
Normal file
128
Documentation/hooks.txt
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
Hooks used by GIT
|
||||||
|
=================
|
||||||
|
v0.99.6, Sep 2005
|
||||||
|
|
||||||
|
Hooks are little scripts you can place in `$GIT_DIR/hooks`
|
||||||
|
directory to trigger action at certain points. When
|
||||||
|
`git-init-db` is run, a handful example hooks are copied in the
|
||||||
|
`hooks` directory of the new repository, but by default they are
|
||||||
|
all disabled. To enable a hook, make it executable with `chmod
|
||||||
|
+x`.
|
||||||
|
|
||||||
|
This document describes the currently defined hooks.
|
||||||
|
|
||||||
|
applypatch-msg
|
||||||
|
--------------
|
||||||
|
|
||||||
|
This hook is invoked by `git-applypatch` script, which is
|
||||||
|
typically invoked by `git-applymbox`. It takes a single
|
||||||
|
parameter, the name of the file that holds the proposed commit
|
||||||
|
log message. Exiting with non-zero status causes the
|
||||||
|
'git-applypatch' to abort before applying the patch.
|
||||||
|
|
||||||
|
The hook is allowed to edit the message file in place, and can
|
||||||
|
be used to normalize the message into some project standard
|
||||||
|
format (if the project has one). It can also be used to refuse
|
||||||
|
the commit after inspecting the message file.
|
||||||
|
|
||||||
|
The default applypatch-msg hook, when enabled, runs the
|
||||||
|
commit-msg hook, if the latter is enabled.
|
||||||
|
|
||||||
|
pre-applypatch
|
||||||
|
--------------
|
||||||
|
|
||||||
|
This hook is invoked by `git-applypatch` script, which is
|
||||||
|
typically invoked by `git-applymbox`. It takes no parameter,
|
||||||
|
and is invoked after the patch is applied, but before a commit
|
||||||
|
is made. Exiting with non-zero status causes the working tree
|
||||||
|
after application of the patch not committed.
|
||||||
|
|
||||||
|
It can be used to inspect the current working tree and refuse to
|
||||||
|
make a commit if it does not pass certain test.
|
||||||
|
|
||||||
|
The default pre-applypatch hook, when enabled, runs the
|
||||||
|
pre-commit hook, if the latter is enabled.
|
||||||
|
|
||||||
|
post-applypatch
|
||||||
|
---------------
|
||||||
|
|
||||||
|
This hook is invoked by `git-applypatch` script, which is
|
||||||
|
typically invoked by `git-applymbox`. It takes no parameter,
|
||||||
|
and is invoked after the patch is applied and a commit is made.
|
||||||
|
|
||||||
|
This hook is meant primarily for notification, and cannot affect
|
||||||
|
the outcome of `git-applypatch`.
|
||||||
|
|
||||||
|
pre-commit
|
||||||
|
----------
|
||||||
|
|
||||||
|
This hook is invoked by `git-commit-script`, and can be bypassed
|
||||||
|
with `--no-verify` option. It takes no parameter, and is
|
||||||
|
invoked before obtaining the proposed commit log message and
|
||||||
|
making a commit. Exiting with non-zero status from this script
|
||||||
|
causes the `git-commit-script` to abort.
|
||||||
|
|
||||||
|
The default pre-commit hook, when enabled, catches introduction
|
||||||
|
of lines with trailing whitespaces and aborts the commit when
|
||||||
|
a such line is found.
|
||||||
|
|
||||||
|
commit-msg
|
||||||
|
----------
|
||||||
|
|
||||||
|
This hook is invoked by `git-commit-script`, and can be bypassed
|
||||||
|
with `--no-verify` option. It takes a single parameter, the
|
||||||
|
name of the file that holds the proposed commit log message.
|
||||||
|
Exiting with non-zero status causes the `git-commit-script` to
|
||||||
|
abort.
|
||||||
|
|
||||||
|
The hook is allowed to edit the message file in place, and can
|
||||||
|
be used to normalize the message into some project standard
|
||||||
|
format (if the project has one). It can also be used to refuse
|
||||||
|
the commit after inspecting the message file.
|
||||||
|
|
||||||
|
The default commit-msg hook, when enabled, detects duplicate
|
||||||
|
Signed-off-by: lines, and aborts the commit when one is found.
|
||||||
|
|
||||||
|
post-commit
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This hook is invoked by `git-commit-script`. It takes no
|
||||||
|
parameter, and is invoked after a commit is made.
|
||||||
|
|
||||||
|
This hook is meant primarily for notification, and cannot affect
|
||||||
|
the outcome of `git-commit-script`.
|
||||||
|
|
||||||
|
The default post-commit hook, when enabled, demonstrates how to
|
||||||
|
send out a commit notification e-mail.
|
||||||
|
|
||||||
|
update
|
||||||
|
------
|
||||||
|
|
||||||
|
This hook is invoked by `git-receive-pack`, which is invoked
|
||||||
|
when a `git push` is done against the repository. It takes
|
||||||
|
three parameters, name of the ref being updated, old object name
|
||||||
|
stored in the ref, and the new objectname to be stored in the
|
||||||
|
ref. Exiting with non-zero status from this hook prevents
|
||||||
|
`git-receive-pack` from updating the ref.
|
||||||
|
|
||||||
|
This can be used to prevent 'forced' update on certain refs by
|
||||||
|
making sure that the object name is a commit object that is a
|
||||||
|
descendant of the commit object named by the old object name.
|
||||||
|
Another use suggested on the mailing list is to use this hook to
|
||||||
|
implement access control which is finer grained than the one
|
||||||
|
based on filesystem group.
|
||||||
|
|
||||||
|
post-update
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This hook is invoked by `git-receive-pack`, which is invoked
|
||||||
|
when a `git push` is done against the repository. It takes
|
||||||
|
variable number of parameters; each of which is the name of ref
|
||||||
|
that was actually updated.
|
||||||
|
|
||||||
|
This hook is meant primarily for notification, and cannot affect
|
||||||
|
the outcome of `git-receive-pack`.
|
||||||
|
|
||||||
|
The default post-update hook, when enabled, runs
|
||||||
|
`git-update-server-info` to keep the information used by dumb
|
||||||
|
transport up-to-date.
|
10
apply.c
10
apply.c
@ -672,9 +672,13 @@ static int parse_fragment(char *line, unsigned long size, struct patch *patch, s
|
|||||||
added++;
|
added++;
|
||||||
newlines--;
|
newlines--;
|
||||||
break;
|
break;
|
||||||
/* We allow "\ No newline at end of file" */
|
|
||||||
|
/* We allow "\ No newline at end of file". Depending
|
||||||
|
* on locale settings when the patch was produced we
|
||||||
|
* don't know what this line looks like. The only
|
||||||
|
* thing we do know is that it begins with "\ ". */
|
||||||
case '\\':
|
case '\\':
|
||||||
if (len < 12 || memcmp(line, "\\ No newline", 12))
|
if (len < 12 || memcmp(line, "\\ ", 2))
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -683,7 +687,7 @@ static int parse_fragment(char *line, unsigned long size, struct patch *patch, s
|
|||||||
* it in the above loop because we hit oldlines == newlines == 0
|
* it in the above loop because we hit oldlines == newlines == 0
|
||||||
* before seeing it.
|
* before seeing it.
|
||||||
*/
|
*/
|
||||||
if (12 < size && !memcmp(line, "\\ No newline", 12))
|
if (12 < size && !memcmp(line, "\\ ", 2))
|
||||||
offset += linelen(line, size);
|
offset += linelen(line, size);
|
||||||
|
|
||||||
patch->lines_added += added;
|
patch->lines_added += added;
|
||||||
|
2
cache.h
2
cache.h
@ -327,7 +327,7 @@ extern int get_ack(int fd, unsigned char *result_sha1);
|
|||||||
extern struct ref **get_remote_heads(int in, struct ref **list, int nr_match, char **match);
|
extern struct ref **get_remote_heads(int in, struct ref **list, int nr_match, char **match);
|
||||||
|
|
||||||
extern struct packed_git *parse_pack_index(unsigned char *sha1);
|
extern struct packed_git *parse_pack_index(unsigned char *sha1);
|
||||||
extern struct packed_git *parse_pack_index_file(unsigned char *sha1,
|
extern struct packed_git *parse_pack_index_file(const unsigned char *sha1,
|
||||||
char *idx_path);
|
char *idx_path);
|
||||||
|
|
||||||
extern void prepare_packed_git(void);
|
extern void prepare_packed_git(void);
|
||||||
|
@ -49,12 +49,12 @@ $SIG{'PIPE'}="IGNORE";
|
|||||||
$ENV{'TZ'}="UTC";
|
$ENV{'TZ'}="UTC";
|
||||||
|
|
||||||
our($opt_h,$opt_v, $opt_T,
|
our($opt_h,$opt_v, $opt_T,
|
||||||
$opt_C,$opt_t, $opt_i);
|
$opt_C,$opt_t);
|
||||||
|
|
||||||
sub usage() {
|
sub usage() {
|
||||||
print STDERR <<END;
|
print STDERR <<END;
|
||||||
Usage: ${\basename $0} # fetch/update GIT from Arch
|
Usage: ${\basename $0} # fetch/update GIT from Arch
|
||||||
[ -h ] [ -v ] [ -i ] [ -T ]
|
[ -h ] [ -v ] [ -T ]
|
||||||
[ -C GIT_repository ] [ -t tempdir ]
|
[ -C GIT_repository ] [ -t tempdir ]
|
||||||
repository/arch-branch [ repository/arch-branch] ...
|
repository/arch-branch [ repository/arch-branch] ...
|
||||||
END
|
END
|
||||||
@ -173,21 +173,19 @@ foreach my $root (@arch_roots) {
|
|||||||
## TODO cleanup irrelevant patches
|
## TODO cleanup irrelevant patches
|
||||||
## and put an initial import
|
## and put an initial import
|
||||||
## or a full tag
|
## or a full tag
|
||||||
|
my $import = 0;
|
||||||
if ($opt_i) { # initial import
|
unless (-d '.git') { # initial import
|
||||||
if ($psets[0]{type} eq 'i' || $psets[0]{type} eq 't') {
|
if ($psets[0]{type} eq 'i' || $psets[0]{type} eq 't') {
|
||||||
print "Starting import from $psets[0]{id}\n";
|
print "Starting import from $psets[0]{id}\n";
|
||||||
|
`git-init-db`;
|
||||||
|
die $! if $?;
|
||||||
|
$import = 1;
|
||||||
} else {
|
} else {
|
||||||
die "Need to start from an import or a tag -- cannot use $psets[0]{id}";
|
die "Need to start from an import or a tag -- cannot use $psets[0]{id}";
|
||||||
}
|
}
|
||||||
`git-init-db`;
|
|
||||||
die $! if $?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# process
|
# process patchsets
|
||||||
my $lastbranch = branchname($psets[0]{id}); # only good for initial import
|
|
||||||
my $importseen = $opt_i ? 0 : 1; # start at 1 if opt_i
|
|
||||||
|
|
||||||
foreach my $ps (@psets) {
|
foreach my $ps (@psets) {
|
||||||
|
|
||||||
$ps->{branch} = branchname($ps->{id});
|
$ps->{branch} = branchname($ps->{id});
|
||||||
@ -202,13 +200,21 @@ foreach my $ps (@psets) {
|
|||||||
die $! if $?;
|
die $! if $?;
|
||||||
|
|
||||||
#
|
#
|
||||||
# create the branch if needed
|
# skip commits already in repo
|
||||||
#
|
#
|
||||||
if ($ps->{type} eq 'i' && $importseen) {
|
if (ptag($ps->{id})) {
|
||||||
die "Should not have more than one 'Initial import' per GIT import";
|
$opt_v && print "Skipping already imported: $ps->{id}\n";
|
||||||
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
unless ($opt_i && !$importseen) { # skip for first commit
|
#
|
||||||
|
# create the branch if needed
|
||||||
|
#
|
||||||
|
if ($ps->{type} eq 'i' && !$import) {
|
||||||
|
die "Should not have more than one 'Initial import' per GIT import: $ps->{id}";
|
||||||
|
}
|
||||||
|
|
||||||
|
unless ($import) { # skip for import
|
||||||
if ( -e ".git/refs/heads/$ps->{branch}") {
|
if ( -e ".git/refs/heads/$ps->{branch}") {
|
||||||
# we know about this branch
|
# we know about this branch
|
||||||
`git checkout $ps->{branch}`;
|
`git checkout $ps->{branch}`;
|
||||||
@ -221,17 +227,24 @@ foreach my $ps (@psets) {
|
|||||||
|
|
||||||
# find where we are supposed to branch from
|
# find where we are supposed to branch from
|
||||||
`git checkout -b $ps->{branch} $branchpoint`;
|
`git checkout -b $ps->{branch} $branchpoint`;
|
||||||
|
|
||||||
|
# If we trust Arch with the fact that this is just
|
||||||
|
# a tag, and it does not affect the state of the tree
|
||||||
|
# then we just tag and move on
|
||||||
|
tag($ps->{id}, $branchpoint);
|
||||||
|
ptag($ps->{id}, $branchpoint);
|
||||||
|
print " * Tagged $ps->{id} at $branchpoint\n";
|
||||||
|
next;
|
||||||
}
|
}
|
||||||
die $! if $?;
|
die $! if $?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Apply the import/changeset/merge into the working tree
|
# Apply the import/changeset/merge into the working tree
|
||||||
#
|
#
|
||||||
if ($ps->{type} eq 'i' || $ps->{type} eq 't') {
|
if ($ps->{type} eq 'i' || $ps->{type} eq 't') {
|
||||||
$importseen = 1;
|
|
||||||
apply_import($ps) or die $!;
|
apply_import($ps) or die $!;
|
||||||
|
$import=0;
|
||||||
} elsif ($ps->{type} eq 's') {
|
} elsif ($ps->{type} eq 's') {
|
||||||
apply_cset($ps);
|
apply_cset($ps);
|
||||||
}
|
}
|
||||||
@ -577,8 +590,6 @@ sub ptag {
|
|||||||
} else { # read
|
} else { # read
|
||||||
# if the tag isn't there, return 0
|
# if the tag isn't there, return 0
|
||||||
unless ( -s ".git/archimport/tags/$tag") {
|
unless ( -s ".git/archimport/tags/$tag") {
|
||||||
warn "Could not find tag $tag -- perhaps it isn't in the repos we have?\n"
|
|
||||||
if $opt_v;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
open(C,"<.git/archimport/tags/$tag")
|
open(C,"<.git/archimport/tags/$tag")
|
||||||
|
10
local-pull.c
10
local-pull.c
@ -17,7 +17,7 @@ void prefetch(unsigned char *sha1)
|
|||||||
|
|
||||||
static struct packed_git *packs = NULL;
|
static struct packed_git *packs = NULL;
|
||||||
|
|
||||||
void setup_index(unsigned char *sha1)
|
static void setup_index(unsigned char *sha1)
|
||||||
{
|
{
|
||||||
struct packed_git *new_pack;
|
struct packed_git *new_pack;
|
||||||
char filename[PATH_MAX];
|
char filename[PATH_MAX];
|
||||||
@ -30,7 +30,7 @@ void setup_index(unsigned char *sha1)
|
|||||||
packs = new_pack;
|
packs = new_pack;
|
||||||
}
|
}
|
||||||
|
|
||||||
int setup_indices()
|
static int setup_indices(void)
|
||||||
{
|
{
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent *de;
|
struct dirent *de;
|
||||||
@ -49,7 +49,7 @@ int setup_indices()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int copy_file(const char *source, const char *dest, const char *hex)
|
static int copy_file(const char *source, const char *dest, const char *hex)
|
||||||
{
|
{
|
||||||
if (use_link) {
|
if (use_link) {
|
||||||
if (!link(source, dest)) {
|
if (!link(source, dest)) {
|
||||||
@ -97,7 +97,7 @@ int copy_file(const char *source, const char *dest, const char *hex)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int fetch_pack(unsigned char *sha1)
|
static int fetch_pack(const unsigned char *sha1)
|
||||||
{
|
{
|
||||||
struct packed_git *target;
|
struct packed_git *target;
|
||||||
char filename[PATH_MAX];
|
char filename[PATH_MAX];
|
||||||
@ -125,7 +125,7 @@ int fetch_pack(unsigned char *sha1)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int fetch_file(unsigned char *sha1)
|
static int fetch_file(const unsigned char *sha1)
|
||||||
{
|
{
|
||||||
static int object_name_start = -1;
|
static int object_name_start = -1;
|
||||||
static char filename[PATH_MAX];
|
static char filename[PATH_MAX];
|
||||||
|
@ -34,9 +34,10 @@ void *patch_delta(void *src_buf, unsigned long src_size,
|
|||||||
|
|
||||||
/* now the result size */
|
/* now the result size */
|
||||||
size = get_delta_hdr_size(&data);
|
size = get_delta_hdr_size(&data);
|
||||||
dst_buf = malloc(size);
|
dst_buf = malloc(size + 1);
|
||||||
if (!dst_buf)
|
if (!dst_buf)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
dst_buf[size] = 0;
|
||||||
|
|
||||||
out = dst_buf;
|
out = dst_buf;
|
||||||
while (data < top) {
|
while (data < top) {
|
||||||
|
@ -487,7 +487,7 @@ struct packed_git *parse_pack_index(unsigned char *sha1)
|
|||||||
return parse_pack_index_file(sha1, path);
|
return parse_pack_index_file(sha1, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct packed_git *parse_pack_index_file(unsigned char *sha1, char *idx_path)
|
struct packed_git *parse_pack_index_file(const unsigned char *sha1, char *idx_path)
|
||||||
{
|
{
|
||||||
struct packed_git *p;
|
struct packed_git *p;
|
||||||
unsigned long idx_size;
|
unsigned long idx_size;
|
||||||
|
148
t/t4112-apply-renames.sh
Executable file
148
t/t4112-apply-renames.sh
Executable file
@ -0,0 +1,148 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2005 Junio C Hamano
|
||||||
|
#
|
||||||
|
|
||||||
|
test_description='git-apply should not get confused with rename/copy.
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
# setup
|
||||||
|
|
||||||
|
mkdir -p include/arch/x86_64/klibc klibc/arch/x86_64/include/klibc
|
||||||
|
|
||||||
|
cat >include/arch/x86_64/klibc/archsetjmp.h <<\EOF
|
||||||
|
/*
|
||||||
|
* arch/x86_64/include/klibc/archsetjmp.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _KLIBC_ARCHSETJMP_H
|
||||||
|
#define _KLIBC_ARCHSETJMP_H
|
||||||
|
|
||||||
|
struct __jmp_buf {
|
||||||
|
unsigned long __rbx;
|
||||||
|
unsigned long __rsp;
|
||||||
|
unsigned long __rbp;
|
||||||
|
unsigned long __r12;
|
||||||
|
unsigned long __r13;
|
||||||
|
unsigned long __r14;
|
||||||
|
unsigned long __r15;
|
||||||
|
unsigned long __rip;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct __jmp_buf jmp_buf[1];
|
||||||
|
|
||||||
|
#endif /* _SETJMP_H */
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >klibc/arch/x86_64/include/klibc/archsetjmp.h <<\EOF
|
||||||
|
/*
|
||||||
|
* arch/x86_64/include/klibc/archsetjmp.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _KLIBC_ARCHSETJMP_H
|
||||||
|
#define _KLIBC_ARCHSETJMP_H
|
||||||
|
|
||||||
|
struct __jmp_buf {
|
||||||
|
unsigned long __rbx;
|
||||||
|
unsigned long __rsp;
|
||||||
|
unsigned long __rbp;
|
||||||
|
unsigned long __r12;
|
||||||
|
unsigned long __r13;
|
||||||
|
unsigned long __r14;
|
||||||
|
unsigned long __r15;
|
||||||
|
unsigned long __rip;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct __jmp_buf jmp_buf[1];
|
||||||
|
|
||||||
|
#endif /* _SETJMP_H */
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >patch <<\EOF
|
||||||
|
diff --git a/klibc/arch/x86_64/include/klibc/archsetjmp.h b/include/arch/cris/klibc/archsetjmp.h
|
||||||
|
similarity index 76%
|
||||||
|
copy from klibc/arch/x86_64/include/klibc/archsetjmp.h
|
||||||
|
copy to include/arch/cris/klibc/archsetjmp.h
|
||||||
|
--- a/klibc/arch/x86_64/include/klibc/archsetjmp.h
|
||||||
|
+++ b/include/arch/cris/klibc/archsetjmp.h
|
||||||
|
@@ -1,21 +1,24 @@
|
||||||
|
/*
|
||||||
|
- * arch/x86_64/include/klibc/archsetjmp.h
|
||||||
|
+ * arch/cris/include/klibc/archsetjmp.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _KLIBC_ARCHSETJMP_H
|
||||||
|
#define _KLIBC_ARCHSETJMP_H
|
||||||
|
|
||||||
|
struct __jmp_buf {
|
||||||
|
- unsigned long __rbx;
|
||||||
|
- unsigned long __rsp;
|
||||||
|
- unsigned long __rbp;
|
||||||
|
- unsigned long __r12;
|
||||||
|
- unsigned long __r13;
|
||||||
|
- unsigned long __r14;
|
||||||
|
- unsigned long __r15;
|
||||||
|
- unsigned long __rip;
|
||||||
|
+ unsigned long __r0;
|
||||||
|
+ unsigned long __r1;
|
||||||
|
+ unsigned long __r2;
|
||||||
|
+ unsigned long __r3;
|
||||||
|
+ unsigned long __r4;
|
||||||
|
+ unsigned long __r5;
|
||||||
|
+ unsigned long __r6;
|
||||||
|
+ unsigned long __r7;
|
||||||
|
+ unsigned long __r8;
|
||||||
|
+ unsigned long __sp;
|
||||||
|
+ unsigned long __srp;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct __jmp_buf jmp_buf[1];
|
||||||
|
|
||||||
|
-#endif /* _SETJMP_H */
|
||||||
|
+#endif /* _KLIBC_ARCHSETJMP_H */
|
||||||
|
diff --git a/klibc/arch/x86_64/include/klibc/archsetjmp.h b/include/arch/m32r/klibc/archsetjmp.h
|
||||||
|
similarity index 66%
|
||||||
|
rename from klibc/arch/x86_64/include/klibc/archsetjmp.h
|
||||||
|
rename to include/arch/m32r/klibc/archsetjmp.h
|
||||||
|
--- a/klibc/arch/x86_64/include/klibc/archsetjmp.h
|
||||||
|
+++ b/include/arch/m32r/klibc/archsetjmp.h
|
||||||
|
@@ -1,21 +1,21 @@
|
||||||
|
/*
|
||||||
|
- * arch/x86_64/include/klibc/archsetjmp.h
|
||||||
|
+ * arch/m32r/include/klibc/archsetjmp.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _KLIBC_ARCHSETJMP_H
|
||||||
|
#define _KLIBC_ARCHSETJMP_H
|
||||||
|
|
||||||
|
struct __jmp_buf {
|
||||||
|
- unsigned long __rbx;
|
||||||
|
- unsigned long __rsp;
|
||||||
|
- unsigned long __rbp;
|
||||||
|
+ unsigned long __r8;
|
||||||
|
+ unsigned long __r9;
|
||||||
|
+ unsigned long __r10;
|
||||||
|
+ unsigned long __r11;
|
||||||
|
unsigned long __r12;
|
||||||
|
unsigned long __r13;
|
||||||
|
unsigned long __r14;
|
||||||
|
unsigned long __r15;
|
||||||
|
- unsigned long __rip;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct __jmp_buf jmp_buf[1];
|
||||||
|
|
||||||
|
-#endif /* _SETJMP_H */
|
||||||
|
+#endif /* _KLIBC_ARCHSETJMP_H */
|
||||||
|
EOF
|
||||||
|
|
||||||
|
find include klibc -type f -print | xargs git-update-cache --add --
|
||||||
|
|
||||||
|
test_expect_success 'check rename/copy patch' 'git-apply --check patch'
|
||||||
|
|
||||||
|
test_expect_success 'apply rename/copy patch' 'git-apply --index patch'
|
||||||
|
|
||||||
|
test_done
|
@ -68,7 +68,8 @@ do
|
|||||||
i="$1"
|
i="$1"
|
||||||
case "$resume,$continue" in
|
case "$resume,$continue" in
|
||||||
f,$i) resume=t;;
|
f,$i) resume=t;;
|
||||||
f,*) continue;;
|
f,*) shift
|
||||||
|
continue;;
|
||||||
*)
|
*)
|
||||||
git-mailinfo $keep_subject $utf8 \
|
git-mailinfo $keep_subject $utf8 \
|
||||||
.dotest/msg .dotest/patch <$i >.dotest/info || exit 1
|
.dotest/msg .dotest/patch <$i >.dotest/info || exit 1
|
||||||
|
Loading…
Reference in New Issue
Block a user