зеркало из https://github.com/microsoft/git.git
Merge branch 'maint'
* maint: Obey NO_C99_FORMAT in fast-import.c. Add a compat/strtoumax.c for Solaris 8. git-clone: Sync documentation to usage note.
This commit is contained in:
Коммит
2b2b892e36
|
@ -448,7 +448,7 @@ Updates in v1.5.0 since v1.4.4 series
|
||||||
- There is a partial support for 'shallow' repositories that
|
- There is a partial support for 'shallow' repositories that
|
||||||
keeps only recent history. A 'shallow clone' is created by
|
keeps only recent history. A 'shallow clone' is created by
|
||||||
specifying how deep that truncated history should be
|
specifying how deep that truncated history should be
|
||||||
(e.g. "git clone --depth=5 git://some.where/repo.git").
|
(e.g. "git clone --depth 5 git://some.where/repo.git").
|
||||||
|
|
||||||
Currently a shallow repository has number of limitations:
|
Currently a shallow repository has number of limitations:
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ SYNOPSIS
|
||||||
[verse]
|
[verse]
|
||||||
'git-clone' [--template=<template_directory>] [-l [-s]] [-q] [-n] [--bare]
|
'git-clone' [--template=<template_directory>] [-l [-s]] [-q] [-n] [--bare]
|
||||||
[-o <name>] [-u <upload-pack>] [--reference <repository>]
|
[-o <name>] [-u <upload-pack>] [--reference <repository>]
|
||||||
[--depth=<depth>] <repository> [<directory>]
|
[--depth <depth>] <repository> [<directory>]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -96,7 +96,7 @@ OPTIONS
|
||||||
if unset the templates are taken from the installation
|
if unset the templates are taken from the installation
|
||||||
defined default, typically `/usr/share/git-core/templates`.
|
defined default, typically `/usr/share/git-core/templates`.
|
||||||
|
|
||||||
--depth=<depth>::
|
--depth <depth>::
|
||||||
Create a 'shallow' clone with a history truncated to the
|
Create a 'shallow' clone with a history truncated to the
|
||||||
specified number of revs. A shallow repository has
|
specified number of revs. A shallow repository has
|
||||||
number of limitations (you cannot clone or fetch from
|
number of limitations (you cannot clone or fetch from
|
||||||
|
|
13
Makefile
13
Makefile
|
@ -28,6 +28,10 @@ all::
|
||||||
#
|
#
|
||||||
# Define NO_STRLCPY if you don't have strlcpy.
|
# Define NO_STRLCPY if you don't have strlcpy.
|
||||||
#
|
#
|
||||||
|
# Define NO_STRTOUMAX if you don't have strtoumax in the C library.
|
||||||
|
# If your compiler also does not support long long or does not have
|
||||||
|
# strtoull, define NO_STRTOULL.
|
||||||
|
#
|
||||||
# Define NO_SETENV if you don't have setenv in the C library.
|
# Define NO_SETENV if you don't have setenv in the C library.
|
||||||
#
|
#
|
||||||
# Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.
|
# Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.
|
||||||
|
@ -353,11 +357,13 @@ ifeq ($(uname_S),SunOS)
|
||||||
NO_UNSETENV = YesPlease
|
NO_UNSETENV = YesPlease
|
||||||
NO_SETENV = YesPlease
|
NO_SETENV = YesPlease
|
||||||
NO_C99_FORMAT = YesPlease
|
NO_C99_FORMAT = YesPlease
|
||||||
|
NO_STRTOUMAX = YesPlease
|
||||||
endif
|
endif
|
||||||
ifeq ($(uname_R),5.9)
|
ifeq ($(uname_R),5.9)
|
||||||
NO_UNSETENV = YesPlease
|
NO_UNSETENV = YesPlease
|
||||||
NO_SETENV = YesPlease
|
NO_SETENV = YesPlease
|
||||||
NO_C99_FORMAT = YesPlease
|
NO_C99_FORMAT = YesPlease
|
||||||
|
NO_STRTOUMAX = YesPlease
|
||||||
endif
|
endif
|
||||||
INSTALL = ginstall
|
INSTALL = ginstall
|
||||||
TAR = gtar
|
TAR = gtar
|
||||||
|
@ -517,6 +523,13 @@ ifdef NO_STRLCPY
|
||||||
COMPAT_CFLAGS += -DNO_STRLCPY
|
COMPAT_CFLAGS += -DNO_STRLCPY
|
||||||
COMPAT_OBJS += compat/strlcpy.o
|
COMPAT_OBJS += compat/strlcpy.o
|
||||||
endif
|
endif
|
||||||
|
ifdef NO_STRTOUMAX
|
||||||
|
COMPAT_CFLAGS += -DNO_STRTOUMAX
|
||||||
|
COMPAT_OBJS += compat/strtoumax.o
|
||||||
|
endif
|
||||||
|
ifdef NO_STRTOULL
|
||||||
|
COMPAT_CFLAGS += -DNO_STRTOULL
|
||||||
|
endif
|
||||||
ifdef NO_SETENV
|
ifdef NO_SETENV
|
||||||
COMPAT_CFLAGS += -DNO_SETENV
|
COMPAT_CFLAGS += -DNO_SETENV
|
||||||
COMPAT_OBJS += compat/setenv.o
|
COMPAT_OBJS += compat/setenv.o
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include "../git-compat-util.h"
|
||||||
|
|
||||||
|
uintmax_t gitstrtoumax (const char *nptr, char **endptr, int base)
|
||||||
|
{
|
||||||
|
#if defined(NO_STRTOULL)
|
||||||
|
return strtoul(nptr, endptr, base);
|
||||||
|
#else
|
||||||
|
return strtoull(nptr, endptr, base);
|
||||||
|
#endif
|
||||||
|
}
|
|
@ -133,6 +133,15 @@ Format of STDIN stream:
|
||||||
#define PACK_ID_BITS 16
|
#define PACK_ID_BITS 16
|
||||||
#define MAX_PACK_ID ((1<<PACK_ID_BITS)-1)
|
#define MAX_PACK_ID ((1<<PACK_ID_BITS)-1)
|
||||||
|
|
||||||
|
#if !defined(NO_C99_FORMAT)
|
||||||
|
#define UM_FMT "%ju"
|
||||||
|
#define UM10_FMT "%10ju"
|
||||||
|
#else
|
||||||
|
/* Assumes unsigned long long exists. */
|
||||||
|
#define UM_FMT "%llu"
|
||||||
|
#define UM10_FMT "%10llu"
|
||||||
|
#endif
|
||||||
|
|
||||||
struct object_entry
|
struct object_entry
|
||||||
{
|
{
|
||||||
struct object_entry *next;
|
struct object_entry *next;
|
||||||
|
@ -475,7 +484,7 @@ static struct object_entry *find_mark(uintmax_t idnum)
|
||||||
oe = s->data.marked[idnum];
|
oe = s->data.marked[idnum];
|
||||||
}
|
}
|
||||||
if (!oe)
|
if (!oe)
|
||||||
die("mark :%ju not declared", orig_idnum);
|
die("mark :" UM_FMT " not declared", orig_idnum);
|
||||||
return oe;
|
return oe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1361,7 +1370,7 @@ static void dump_marks_helper(FILE *f,
|
||||||
} else {
|
} else {
|
||||||
for (k = 0; k < 1024; k++) {
|
for (k = 0; k < 1024; k++) {
|
||||||
if (m->data.marked[k])
|
if (m->data.marked[k])
|
||||||
fprintf(f, ":%ju %s\n", base + k,
|
fprintf(f, ":" UM_FMT " %s\n", base + k,
|
||||||
sha1_to_hex(m->data.marked[k]->sha1));
|
sha1_to_hex(m->data.marked[k]->sha1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1687,7 +1696,7 @@ static void cmd_from(struct branch *b)
|
||||||
unsigned long size;
|
unsigned long size;
|
||||||
char *buf;
|
char *buf;
|
||||||
if (oe->type != OBJ_COMMIT)
|
if (oe->type != OBJ_COMMIT)
|
||||||
die("Mark :%ju not a commit", idnum);
|
die("Mark :" UM_FMT " not a commit", idnum);
|
||||||
hashcpy(b->sha1, oe->sha1);
|
hashcpy(b->sha1, oe->sha1);
|
||||||
buf = gfi_unpack_entry(oe, &size);
|
buf = gfi_unpack_entry(oe, &size);
|
||||||
if (!buf || size < 46)
|
if (!buf || size < 46)
|
||||||
|
@ -1740,7 +1749,7 @@ static struct hash_list *cmd_merge(unsigned int *count)
|
||||||
uintmax_t idnum = strtoumax(from + 1, NULL, 10);
|
uintmax_t idnum = strtoumax(from + 1, NULL, 10);
|
||||||
struct object_entry *oe = find_mark(idnum);
|
struct object_entry *oe = find_mark(idnum);
|
||||||
if (oe->type != OBJ_COMMIT)
|
if (oe->type != OBJ_COMMIT)
|
||||||
die("Mark :%ju not a commit", idnum);
|
die("Mark :" UM_FMT " not a commit", idnum);
|
||||||
hashcpy(n->sha1, oe->sha1);
|
hashcpy(n->sha1, oe->sha1);
|
||||||
} else if (get_sha1(from, n->sha1))
|
} else if (get_sha1(from, n->sha1))
|
||||||
die("Invalid ref name or SHA1 expression: %s", from);
|
die("Invalid ref name or SHA1 expression: %s", from);
|
||||||
|
@ -1884,7 +1893,7 @@ static void cmd_new_tag(void)
|
||||||
from_mark = strtoumax(from + 1, NULL, 10);
|
from_mark = strtoumax(from + 1, NULL, 10);
|
||||||
oe = find_mark(from_mark);
|
oe = find_mark(from_mark);
|
||||||
if (oe->type != OBJ_COMMIT)
|
if (oe->type != OBJ_COMMIT)
|
||||||
die("Mark :%ju not a commit", from_mark);
|
die("Mark :" UM_FMT " not a commit", from_mark);
|
||||||
hashcpy(sha1, oe->sha1);
|
hashcpy(sha1, oe->sha1);
|
||||||
} else if (!get_sha1(from, sha1)) {
|
} else if (!get_sha1(from, sha1)) {
|
||||||
unsigned long size;
|
unsigned long size;
|
||||||
|
@ -2059,18 +2068,18 @@ int main(int argc, const char **argv)
|
||||||
|
|
||||||
fprintf(stderr, "%s statistics:\n", argv[0]);
|
fprintf(stderr, "%s statistics:\n", argv[0]);
|
||||||
fprintf(stderr, "---------------------------------------------------------------------\n");
|
fprintf(stderr, "---------------------------------------------------------------------\n");
|
||||||
fprintf(stderr, "Alloc'd objects: %10ju\n", alloc_count);
|
fprintf(stderr, "Alloc'd objects: " UM10_FMT "\n", alloc_count);
|
||||||
fprintf(stderr, "Total objects: %10ju (%10ju duplicates )\n", total_count, duplicate_count);
|
fprintf(stderr, "Total objects: " UM10_FMT " (" UM10_FMT " duplicates )\n", total_count, duplicate_count);
|
||||||
fprintf(stderr, " blobs : %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_BLOB], duplicate_count_by_type[OBJ_BLOB], delta_count_by_type[OBJ_BLOB]);
|
fprintf(stderr, " blobs : " UM10_FMT " (" UM10_FMT " duplicates " UM10_FMT " deltas)\n", object_count_by_type[OBJ_BLOB], duplicate_count_by_type[OBJ_BLOB], delta_count_by_type[OBJ_BLOB]);
|
||||||
fprintf(stderr, " trees : %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_TREE], duplicate_count_by_type[OBJ_TREE], delta_count_by_type[OBJ_TREE]);
|
fprintf(stderr, " trees : " UM10_FMT " (" UM10_FMT " duplicates " UM10_FMT " deltas)\n", object_count_by_type[OBJ_TREE], duplicate_count_by_type[OBJ_TREE], delta_count_by_type[OBJ_TREE]);
|
||||||
fprintf(stderr, " commits: %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_COMMIT], duplicate_count_by_type[OBJ_COMMIT], delta_count_by_type[OBJ_COMMIT]);
|
fprintf(stderr, " commits: " UM10_FMT " (" UM10_FMT " duplicates " UM10_FMT " deltas)\n", object_count_by_type[OBJ_COMMIT], duplicate_count_by_type[OBJ_COMMIT], delta_count_by_type[OBJ_COMMIT]);
|
||||||
fprintf(stderr, " tags : %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_TAG], duplicate_count_by_type[OBJ_TAG], delta_count_by_type[OBJ_TAG]);
|
fprintf(stderr, " tags : " UM10_FMT " (" UM10_FMT " duplicates " UM10_FMT " deltas)\n", object_count_by_type[OBJ_TAG], duplicate_count_by_type[OBJ_TAG], delta_count_by_type[OBJ_TAG]);
|
||||||
fprintf(stderr, "Total branches: %10lu (%10lu loads )\n", branch_count, branch_load_count);
|
fprintf(stderr, "Total branches: %10lu (%10lu loads )\n", branch_count, branch_load_count);
|
||||||
fprintf(stderr, " marks: %10ju (%10ju unique )\n", (((uintmax_t)1) << marks->shift) * 1024, marks_set_count);
|
fprintf(stderr, " marks: " UM10_FMT " (" UM10_FMT " unique )\n", (((uintmax_t)1) << marks->shift) * 1024, marks_set_count);
|
||||||
fprintf(stderr, " atoms: %10u\n", atom_cnt);
|
fprintf(stderr, " atoms: %10u\n", atom_cnt);
|
||||||
fprintf(stderr, "Memory total: %10ju KiB\n", (total_allocd + alloc_count*sizeof(struct object_entry))/1024);
|
fprintf(stderr, "Memory total: " UM10_FMT " KiB\n", (total_allocd + alloc_count*sizeof(struct object_entry))/1024);
|
||||||
fprintf(stderr, " pools: %10lu KiB\n", (unsigned long)(total_allocd/1024));
|
fprintf(stderr, " pools: %10lu KiB\n", (unsigned long)(total_allocd/1024));
|
||||||
fprintf(stderr, " objects: %10ju KiB\n", (alloc_count*sizeof(struct object_entry))/1024);
|
fprintf(stderr, " objects: " UM10_FMT " KiB\n", (alloc_count*sizeof(struct object_entry))/1024);
|
||||||
fprintf(stderr, "---------------------------------------------------------------------\n");
|
fprintf(stderr, "---------------------------------------------------------------------\n");
|
||||||
pack_report();
|
pack_report();
|
||||||
fprintf(stderr, "---------------------------------------------------------------------\n");
|
fprintf(stderr, "---------------------------------------------------------------------\n");
|
||||||
|
|
|
@ -139,6 +139,11 @@ extern char *gitstrcasestr(const char *haystack, const char *needle);
|
||||||
extern size_t gitstrlcpy(char *, const char *, size_t);
|
extern size_t gitstrlcpy(char *, const char *, size_t);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NO_STRTOUMAX
|
||||||
|
#define strtoumax gitstrtoumax
|
||||||
|
extern uintmax_t gitstrtoumax(const char *, char **, int);
|
||||||
|
#endif
|
||||||
|
|
||||||
extern void release_pack_memory(size_t);
|
extern void release_pack_memory(size_t);
|
||||||
|
|
||||||
static inline char* xstrdup(const char *str)
|
static inline char* xstrdup(const char *str)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче