commit
6ab58895cd
|
@ -13,7 +13,8 @@ SYNOPSIS
|
||||||
(-[c|d|o|i|s|u|k|m])\*
|
(-[c|d|o|i|s|u|k|m])\*
|
||||||
[-x <pattern>|--exclude=<pattern>]
|
[-x <pattern>|--exclude=<pattern>]
|
||||||
[-X <file>|--exclude-from=<file>]
|
[-X <file>|--exclude-from=<file>]
|
||||||
[--exclude-per-directory=<file>] [--] [<file>]\*
|
[--exclude-per-directory=<file>]
|
||||||
|
[--full-name] [--] [<file>]\*
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -77,6 +78,12 @@ OPTIONS
|
||||||
K:: to be killed
|
K:: to be killed
|
||||||
? other
|
? other
|
||||||
|
|
||||||
|
--full-name::
|
||||||
|
When run from a subdirectory, the command usually
|
||||||
|
outputs paths relative to the current directory. This
|
||||||
|
option forces paths to be output relative to the project
|
||||||
|
top directory.
|
||||||
|
|
||||||
--::
|
--::
|
||||||
Do not interpret any more arguments as options.
|
Do not interpret any more arguments as options.
|
||||||
|
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -55,7 +55,7 @@ all:
|
||||||
# Define USE_STDEV below if you want git to care about the underlying device
|
# Define USE_STDEV below if you want git to care about the underlying device
|
||||||
# change being considered an inode change from the update-cache perspective.
|
# change being considered an inode change from the update-cache perspective.
|
||||||
|
|
||||||
GIT_VERSION = 1.0.3
|
GIT_VERSION = 1.0.4
|
||||||
|
|
||||||
# CFLAGS and LDFLAGS are for the users to override from the command line.
|
# CFLAGS and LDFLAGS are for the users to override from the command line.
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
git-core (1.0.4-0) unstable; urgency=low
|
||||||
|
|
||||||
|
* GIT 1.0.4.
|
||||||
|
|
||||||
|
-- Junio C Hamano <junkio@cox.net> Sat, 24 Dec 2005 00:01:20 -0800
|
||||||
|
|
||||||
git-core (1.0.3-0) unstable; urgency=low
|
git-core (1.0.3-0) unstable; urgency=low
|
||||||
|
|
||||||
* GIT 1.0.3 maintenance release.
|
* GIT 1.0.3 maintenance release.
|
||||||
|
|
11
git-merge.sh
11
git-merge.sh
|
@ -209,6 +209,7 @@ case "$use_strategies" in
|
||||||
esac
|
esac
|
||||||
|
|
||||||
result_tree= best_cnt=-1 best_strategy= wt_strategy=
|
result_tree= best_cnt=-1 best_strategy= wt_strategy=
|
||||||
|
merge_was_ok=
|
||||||
for strategy in $use_strategies
|
for strategy in $use_strategies
|
||||||
do
|
do
|
||||||
test "$wt_strategy" = '' || {
|
test "$wt_strategy" = '' || {
|
||||||
|
@ -228,6 +229,7 @@ do
|
||||||
exit=$?
|
exit=$?
|
||||||
if test "$no_commit" = t && test "$exit" = 0
|
if test "$no_commit" = t && test "$exit" = 0
|
||||||
then
|
then
|
||||||
|
merge_was_ok=t
|
||||||
exit=1 ;# pretend it left conflicts.
|
exit=1 ;# pretend it left conflicts.
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -293,4 +295,11 @@ do
|
||||||
done >"$GIT_DIR/MERGE_HEAD"
|
done >"$GIT_DIR/MERGE_HEAD"
|
||||||
echo $merge_msg >"$GIT_DIR/MERGE_MSG"
|
echo $merge_msg >"$GIT_DIR/MERGE_MSG"
|
||||||
|
|
||||||
die "Automatic merge failed/prevented; fix up by hand"
|
if test "$merge_was_ok" = t
|
||||||
|
then
|
||||||
|
echo >&2 \
|
||||||
|
"Automatic merge went well; stopped before committing as requested"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
die "Automatic merge failed; fix up by hand"
|
||||||
|
fi
|
||||||
|
|
|
@ -562,7 +562,7 @@ static void verify_pathspec(void)
|
||||||
static const char ls_files_usage[] =
|
static const char ls_files_usage[] =
|
||||||
"git-ls-files [-z] [-t] (--[cached|deleted|others|stage|unmerged|killed|modified])* "
|
"git-ls-files [-z] [-t] (--[cached|deleted|others|stage|unmerged|killed|modified])* "
|
||||||
"[ --ignored ] [--exclude=<pattern>] [--exclude-from=<file>] "
|
"[ --ignored ] [--exclude=<pattern>] [--exclude-from=<file>] "
|
||||||
"[ --exclude-per-directory=<filename> ] [--] [<file>]*";
|
"[ --exclude-per-directory=<filename> ] [--full-name] [--] [<file>]*";
|
||||||
|
|
||||||
int main(int argc, const char **argv)
|
int main(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
|
|
|
@ -472,7 +472,7 @@ static void convert_to_utf8(char *line, char *charset)
|
||||||
char *in, *out;
|
char *in, *out;
|
||||||
size_t insize, outsize, nrc;
|
size_t insize, outsize, nrc;
|
||||||
char outbuf[4096]; /* cheat */
|
char outbuf[4096]; /* cheat */
|
||||||
static char latin_one[] = "latin-1";
|
static char latin_one[] = "latin1";
|
||||||
char *input_charset = *charset ? charset : latin_one;
|
char *input_charset = *charset ? charset : latin_one;
|
||||||
iconv_t conv = iconv_open(metainfo_charset, input_charset);
|
iconv_t conv = iconv_open(metainfo_charset, input_charset);
|
||||||
|
|
||||||
|
|
16
sha1_file.c
16
sha1_file.c
|
@ -321,12 +321,16 @@ struct packed_git *packed_git;
|
||||||
static int check_packed_git_idx(const char *path, unsigned long *idx_size_,
|
static int check_packed_git_idx(const char *path, unsigned long *idx_size_,
|
||||||
void **idx_map_)
|
void **idx_map_)
|
||||||
{
|
{
|
||||||
|
SHA_CTX ctx;
|
||||||
|
unsigned char sha1[20];
|
||||||
void *idx_map;
|
void *idx_map;
|
||||||
unsigned int *index;
|
unsigned int *index;
|
||||||
unsigned long idx_size;
|
unsigned long idx_size;
|
||||||
int nr, i;
|
int nr, i;
|
||||||
int fd = open(path, O_RDONLY);
|
int fd;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
fd = open(path, O_RDONLY);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return -1;
|
return -1;
|
||||||
if (fstat(fd, &st)) {
|
if (fstat(fd, &st)) {
|
||||||
|
@ -364,6 +368,16 @@ static int check_packed_git_idx(const char *path, unsigned long *idx_size_,
|
||||||
if (idx_size != 4*256 + nr * 24 + 20 + 20)
|
if (idx_size != 4*256 + nr * 24 + 20 + 20)
|
||||||
return error("wrong index file size");
|
return error("wrong index file size");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* File checksum.
|
||||||
|
*/
|
||||||
|
SHA1_Init(&ctx);
|
||||||
|
SHA1_Update(&ctx, idx_map, idx_size-20);
|
||||||
|
SHA1_Final(sha1, &ctx);
|
||||||
|
|
||||||
|
if (memcmp(sha1, idx_map + idx_size - 20, 20))
|
||||||
|
return error("index checksum mismatch");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -284,10 +284,54 @@ static void show_one_commit(struct commit *commit, int no_name)
|
||||||
static char *ref_name[MAX_REVS + 1];
|
static char *ref_name[MAX_REVS + 1];
|
||||||
static int ref_name_cnt;
|
static int ref_name_cnt;
|
||||||
|
|
||||||
|
static const char *find_digit_prefix(const char *s, int *v)
|
||||||
|
{
|
||||||
|
const char *p;
|
||||||
|
int ver;
|
||||||
|
char ch;
|
||||||
|
|
||||||
|
for (p = s, ver = 0;
|
||||||
|
'0' <= (ch = *p) && ch <= '9';
|
||||||
|
p++)
|
||||||
|
ver = ver * 10 + ch - '0';
|
||||||
|
*v = ver;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int version_cmp(const char *a, const char *b)
|
||||||
|
{
|
||||||
|
while (1) {
|
||||||
|
int va, vb;
|
||||||
|
|
||||||
|
a = find_digit_prefix(a, &va);
|
||||||
|
b = find_digit_prefix(b, &vb);
|
||||||
|
if (va != vb)
|
||||||
|
return va - vb;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
int ca = *a;
|
||||||
|
int cb = *b;
|
||||||
|
if ('0' <= ca && ca <= '9')
|
||||||
|
ca = 0;
|
||||||
|
if ('0' <= cb && cb <= '9')
|
||||||
|
cb = 0;
|
||||||
|
if (ca != cb)
|
||||||
|
return ca - cb;
|
||||||
|
if (!ca)
|
||||||
|
break;
|
||||||
|
a++;
|
||||||
|
b++;
|
||||||
|
}
|
||||||
|
if (!*a && !*b)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int compare_ref_name(const void *a_, const void *b_)
|
static int compare_ref_name(const void *a_, const void *b_)
|
||||||
{
|
{
|
||||||
const char * const*a = a_, * const*b = b_;
|
const char * const*a = a_, * const*b = b_;
|
||||||
return strcmp(*a, *b);
|
return version_cmp(*a, *b);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sort_ref_range(int bottom, int top)
|
static void sort_ref_range(int bottom, int top)
|
||||||
|
@ -299,8 +343,15 @@ static void sort_ref_range(int bottom, int top)
|
||||||
static int append_ref(const char *refname, const unsigned char *sha1)
|
static int append_ref(const char *refname, const unsigned char *sha1)
|
||||||
{
|
{
|
||||||
struct commit *commit = lookup_commit_reference_gently(sha1, 1);
|
struct commit *commit = lookup_commit_reference_gently(sha1, 1);
|
||||||
|
int i;
|
||||||
|
|
||||||
if (!commit)
|
if (!commit)
|
||||||
return 0;
|
return 0;
|
||||||
|
/* Avoid adding the same thing twice */
|
||||||
|
for (i = 0; i < ref_name_cnt; i++)
|
||||||
|
if (!strcmp(refname, ref_name[i]))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (MAX_REVS <= ref_name_cnt) {
|
if (MAX_REVS <= ref_name_cnt) {
|
||||||
fprintf(stderr, "warning: ignoring %s; "
|
fprintf(stderr, "warning: ignoring %s; "
|
||||||
"cannot handle more than %d refs\n",
|
"cannot handle more than %d refs\n",
|
||||||
|
@ -512,19 +563,17 @@ int main(int ac, char **av)
|
||||||
if (1 < independent + merge_base + (extra != 0))
|
if (1 < independent + merge_base + (extra != 0))
|
||||||
usage(show_branch_usage);
|
usage(show_branch_usage);
|
||||||
|
|
||||||
|
/* If nothing is specified, show all branches by default */
|
||||||
|
if (ac + all_heads + all_tags == 0)
|
||||||
|
all_heads = 1;
|
||||||
|
|
||||||
if (all_heads + all_tags)
|
if (all_heads + all_tags)
|
||||||
snarf_refs(all_heads, all_tags);
|
snarf_refs(all_heads, all_tags);
|
||||||
|
|
||||||
if (ac) {
|
|
||||||
while (0 < ac) {
|
while (0 < ac) {
|
||||||
append_one_rev(*av);
|
append_one_rev(*av);
|
||||||
ac--; av++;
|
ac--; av++;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* If no revs given, then add heads */
|
|
||||||
snarf_refs(1, 0);
|
|
||||||
}
|
|
||||||
if (!ref_name_cnt) {
|
if (!ref_name_cnt) {
|
||||||
fprintf(stderr, "No revs to be shown.\n");
|
fprintf(stderr, "No revs to be shown.\n");
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
|
@ -163,6 +163,13 @@ test_expect_success \
|
||||||
else :;
|
else :;
|
||||||
fi &&
|
fi &&
|
||||||
|
|
||||||
|
cp test-1-${packname_1}.pack test-3.pack &&
|
||||||
|
dd if=/dev/zero of=test-3.idx count=1 bs=1 conv=notrunc seek=1200 &&
|
||||||
|
if git-verify-pack test-3.pack
|
||||||
|
then false
|
||||||
|
else :;
|
||||||
|
fi &&
|
||||||
|
|
||||||
:'
|
:'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
|
|
Loading…
Reference in New Issue