Compare commits
52 Commits
Author | SHA1 | Date | |
---|---|---|---|
740c281d21 | |||
98b12a4b9a | |||
405869d0d5 | |||
cd989a97ec | |||
0d854fc1e3 | |||
a1991f1734 | |||
514dd21326 | |||
5796c5baa3 | |||
1a1f7b2c52 | |||
0196a605f7 | |||
054e22caf4 | |||
ef937140a6 | |||
79e9dba0d4 | |||
af3e5d1b2a | |||
cfececfe1f | |||
1fbc6e6e60 | |||
85dd37941a | |||
63618af24a | |||
bba6acb335 | |||
d31f3ad23d | |||
e6aaa39347 | |||
5c0b13f85a | |||
51a60f5bfb | |||
479eaa8ef8 | |||
42c55ce49e | |||
0ae0e882b2 | |||
cf3983d1ff | |||
79bc4ef368 | |||
04953bc888 | |||
97ea0d1043 | |||
dce6818d10 | |||
b93e6e3663 | |||
644edd02c1 | |||
9c65ee15ee | |||
3c735e0776 | |||
92e25b6b5b | |||
da7a478bc0 | |||
8e1aa2f792 | |||
48d547fb38 | |||
65bbf082c2 | |||
3345c0f5b9 | |||
f3d51ffde8 | |||
1a4927c5c5 | |||
f1064f6bc8 | |||
c4a7b0092b | |||
380694544d | |||
edd2d84665 | |||
f8ee1f02da | |||
c1cebcf431 | |||
bed137d2d5 | |||
839fa9c500 | |||
3cf6bb3406 |
1
.mailmap
1
.mailmap
@ -202,6 +202,7 @@ Seth Falcon <seth@userprimary.net> <sfalcon@fhcrc.org>
|
||||
Shawn O. Pearce <spearce@spearce.org>
|
||||
Simon Hausmann <hausmann@kde.org> <simon@lst.de>
|
||||
Simon Hausmann <hausmann@kde.org> <shausman@trolltech.com>
|
||||
Stefan Beller <stefanbeller@gmail.com> <stefanbeller@googlemail.com>
|
||||
Stefan Naewe <stefan.naewe@gmail.com> <stefan.naewe@atlas-elektronik.com>
|
||||
Stefan Naewe <stefan.naewe@gmail.com> <stefan.naewe@googlemail.com>
|
||||
Stefan Sperling <stsp@elego.de> <stsp@stsp.name>
|
||||
|
@ -264,6 +264,15 @@ For Python scripts:
|
||||
documentation for version 2.6 does not mention this prefix, it has
|
||||
been supported since version 2.6.0.
|
||||
|
||||
Error Messages
|
||||
|
||||
- Do not end error messages with a full stop.
|
||||
|
||||
- Do not capitalize ("unable to open %s", not "Unable to open %s")
|
||||
|
||||
- Say what the error is first ("cannot open %s", not "%s: cannot open")
|
||||
|
||||
|
||||
Writing Documentation:
|
||||
|
||||
Most (if not all) of the documentation pages are written in the
|
||||
|
17
Documentation/RelNotes/2.0.3.txt
Normal file
17
Documentation/RelNotes/2.0.3.txt
Normal file
@ -0,0 +1,17 @@
|
||||
Git v2.0.3 Release Notes
|
||||
========================
|
||||
|
||||
* An ancient rewrite passed a wrong pointer to a curl library
|
||||
function in a rarely used code path.
|
||||
|
||||
* "filter-branch" left an empty single-parent commit that results when
|
||||
all parents of a merge commit gets mapped to the same commit, even
|
||||
under "--prune-empty".
|
||||
|
||||
* "log --show-signature" incorrectly decided the color to paint a
|
||||
mergetag that was and was not correctly validated.
|
||||
|
||||
* "log --show-signature" did not pay attention to "--graph" option.
|
||||
|
||||
Also a lot of fixes to the tests and some updates to the docs are
|
||||
included.
|
@ -102,7 +102,7 @@ eval "set -- $(git rev-parse --sq --prefix "$prefix" "$@")"
|
||||
+
|
||||
If you want to make sure that the output actually names an object in
|
||||
your object database and/or can be used as a specific type of object
|
||||
you require, you can add "^{type}" peeling operator to the parameter.
|
||||
you require, you can add "\^{type}" peeling operator to the parameter.
|
||||
For example, `git rev-parse "$VAR^{commit}"` will make sure `$VAR`
|
||||
names an existing object that is a commit-ish (i.e. a commit, or an
|
||||
annotated tag that points at a commit). To make sure that `$VAR`
|
||||
|
@ -43,9 +43,10 @@ unreleased) version of Git, that is available from 'master'
|
||||
branch of the `git.git` repository.
|
||||
Documentation for older releases are available here:
|
||||
|
||||
* link:v2.0.2/git.html[documentation for release 2.0.2]
|
||||
* link:v2.0.3/git.html[documentation for release 2.0.3]
|
||||
|
||||
* release notes for
|
||||
link:RelNotes/2.0.3.txt[2.0.3],
|
||||
link:RelNotes/2.0.2.txt[2.0.2],
|
||||
link:RelNotes/2.0.1.txt[2.0.1],
|
||||
link:RelNotes/2.0.0.txt[2.0.0].
|
||||
@ -1044,7 +1045,7 @@ Authors
|
||||
-------
|
||||
Git was started by Linus Torvalds, and is currently maintained by Junio
|
||||
C Hamano. Numerous contributions have come from the Git mailing list
|
||||
<git@vger.kernel.org>. http://www.ohloh.net/p/git/contributors/summary
|
||||
<git@vger.kernel.org>. http://www.openhub.net/p/git/contributors/summary
|
||||
gives you a more complete list of contributors.
|
||||
|
||||
If you have a clone of git.git itself, the
|
||||
|
@ -1,7 +1,7 @@
|
||||
[[def_alternate_object_database]]alternate object database::
|
||||
Via the alternates mechanism, a <<def_repository,repository>>
|
||||
can inherit part of its <<def_object_database,object database>>
|
||||
from another object database, which is called "alternate".
|
||||
from another object database, which is called an "alternate".
|
||||
|
||||
[[def_bare_repository]]bare repository::
|
||||
A bare repository is normally an appropriately
|
||||
|
@ -7,10 +7,10 @@ use the mem* functions than a str* one (memchr vs. strchr e.g.).
|
||||
Though, one has to be careful about the fact that str* functions often
|
||||
stop on NULs and that strbufs may have embedded NULs.
|
||||
|
||||
An strbuf is NUL terminated for convenience, but no function in the
|
||||
A strbuf is NUL terminated for convenience, but no function in the
|
||||
strbuf API actually relies on the string being free of NULs.
|
||||
|
||||
strbufs has some invariants that are very important to keep in mind:
|
||||
strbufs have some invariants that are very important to keep in mind:
|
||||
|
||||
. The `buf` member is never NULL, so it can be used in any usual C
|
||||
string operations safely. strbuf's _have_ to be initialized either by
|
||||
@ -56,8 +56,8 @@ Data structures
|
||||
* `struct strbuf`
|
||||
|
||||
This is the string buffer structure. The `len` member can be used to
|
||||
determine the current length of the string, and `buf` member provides access to
|
||||
the string itself.
|
||||
determine the current length of the string, and `buf` member provides
|
||||
access to the string itself.
|
||||
|
||||
Functions
|
||||
---------
|
||||
@ -184,7 +184,7 @@ strbuf_addstr(sb, "immediate string");
|
||||
|
||||
`strbuf_addbuf`::
|
||||
|
||||
Copy the contents of an other buffer at the end of the current one.
|
||||
Copy the contents of another buffer at the end of the current one.
|
||||
|
||||
`strbuf_adddup`::
|
||||
|
||||
|
@ -60,7 +60,7 @@ Because Git repositories are accessed by standard path components
|
||||
server administrators MAY use directory based permissions within
|
||||
their HTTP server to control repository access.
|
||||
|
||||
Clients SHOULD support Basic authentication as described by RFC 2616.
|
||||
Clients SHOULD support Basic authentication as described by RFC 2617.
|
||||
Servers SHOULD support Basic authentication by relying upon the
|
||||
HTTP server placed in front of the Git server software.
|
||||
|
||||
|
@ -416,12 +416,11 @@ REVISIONS" section of linkgit:gitrevisions[7].
|
||||
Updating a repository with git fetch
|
||||
------------------------------------
|
||||
|
||||
Eventually the developer cloned from will do additional work in her
|
||||
repository, creating new commits and advancing the branches to point
|
||||
at the new commits.
|
||||
After you clone a repository and commit a few changes of your own, you
|
||||
may wish to check the original repository for updates.
|
||||
|
||||
The command `git fetch`, with no arguments, will update all of the
|
||||
remote-tracking branches to the latest version found in her
|
||||
The `git-fetch` command, with no arguments, will update all of the
|
||||
remote-tracking branches to the latest version found in the original
|
||||
repository. It will not touch any of your own branches--not even the
|
||||
"master" branch that was created for you on clone.
|
||||
|
||||
@ -1811,8 +1810,8 @@ manner.
|
||||
You can then import these into your mail client and send them by
|
||||
hand. However, if you have a lot to send at once, you may prefer to
|
||||
use the linkgit:git-send-email[1] script to automate the process.
|
||||
Consult the mailing list for your project first to determine how they
|
||||
prefer such patches be handled.
|
||||
Consult the mailing list for your project first to determine
|
||||
their requirements for submitting patches.
|
||||
|
||||
[[importing-patches]]
|
||||
Importing patches to a project
|
||||
@ -2255,7 +2254,7 @@ $ git checkout test && git merge speed-up-spinlocks
|
||||
It is unlikely that you would have any conflicts here ... but you might if you
|
||||
spent a while on this step and had also pulled new versions from upstream.
|
||||
|
||||
Some time later when enough time has passed and testing done, you can pull the
|
||||
Sometime later when enough time has passed and testing done, you can pull the
|
||||
same branch into the `release` tree ready to go upstream. This is where you
|
||||
see the value of keeping each patch (or patch series) in its own branch. It
|
||||
means that the patches can be moved into the `release` tree in any order.
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
GVF=GIT-VERSION-FILE
|
||||
DEF_VER=v2.0.2
|
||||
DEF_VER=v2.0.3
|
||||
|
||||
LF='
|
||||
'
|
||||
|
@ -2869,9 +2869,7 @@ static int apply_binary_fragment(struct image *img, struct patch *patch)
|
||||
case BINARY_LITERAL_DEFLATED:
|
||||
clear_image(img);
|
||||
img->len = fragment->size;
|
||||
img->buf = xmalloc(img->len+1);
|
||||
memcpy(img->buf, fragment->patch, img->len);
|
||||
img->buf[img->len] = '\0';
|
||||
img->buf = xmemdupz(fragment->patch, img->len);
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
|
@ -2458,11 +2458,8 @@ parse_done:
|
||||
die("revision walk setup failed");
|
||||
|
||||
if (is_null_sha1(sb.final->object.sha1)) {
|
||||
char *buf;
|
||||
o = sb.final->util;
|
||||
buf = xmalloc(o->file.size + 1);
|
||||
memcpy(buf, o->file.ptr, o->file.size + 1);
|
||||
sb.final_buf = buf;
|
||||
sb.final_buf = xmemdupz(o->file.ptr, o->file.size);
|
||||
sb.final_buf_size = o->file.size;
|
||||
}
|
||||
else {
|
||||
|
@ -621,8 +621,7 @@ static int *list_and_choose(struct menu_opts *opts, struct menu_stuff *stuff)
|
||||
nr += chosen[i];
|
||||
}
|
||||
|
||||
result = xmalloc(sizeof(int) * (nr + 1));
|
||||
memset(result, 0, sizeof(int) * (nr + 1));
|
||||
result = xcalloc(nr + 1, sizeof(int));
|
||||
for (i = 0; i < stuff->nr && j < nr; i++) {
|
||||
if (chosen[i])
|
||||
result[j++] = i;
|
||||
|
@ -362,8 +362,7 @@ static void set_thread_data(struct thread_local *data)
|
||||
|
||||
static struct base_data *alloc_base_data(void)
|
||||
{
|
||||
struct base_data *base = xmalloc(sizeof(struct base_data));
|
||||
memset(base, 0, sizeof(*base));
|
||||
struct base_data *base = xcalloc(1, sizeof(struct base_data));
|
||||
base->ref_last = -1;
|
||||
base->ofs_last = -1;
|
||||
return base;
|
||||
|
@ -92,7 +92,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||
|
||||
if (argv[i]) {
|
||||
int j;
|
||||
pattern = xcalloc(sizeof(const char *), argc - i + 1);
|
||||
pattern = xcalloc(argc - i + 1, sizeof(const char *));
|
||||
for (j = i; j < argc; j++) {
|
||||
int len = strlen(argv[j]);
|
||||
char *p = xmalloc(len + 3);
|
||||
|
@ -282,7 +282,7 @@ static int config_read_branches(const char *key, const char *value, void *cb)
|
||||
item = string_list_insert(&branch_list, name);
|
||||
|
||||
if (!item->util)
|
||||
item->util = xcalloc(sizeof(struct branch_info), 1);
|
||||
item->util = xcalloc(1, sizeof(struct branch_info));
|
||||
info = item->util;
|
||||
if (type == REMOTE) {
|
||||
if (info->remote_name)
|
||||
@ -398,7 +398,7 @@ static int get_push_ref_states(const struct ref *remote_refs,
|
||||
|
||||
item = string_list_append(&states->push,
|
||||
abbrev_branch(ref->peer_ref->name));
|
||||
item->util = xcalloc(sizeof(struct push_info), 1);
|
||||
item->util = xcalloc(1, sizeof(struct push_info));
|
||||
info = item->util;
|
||||
info->forced = ref->force;
|
||||
info->dest = xstrdup(abbrev_branch(ref->name));
|
||||
@ -433,7 +433,7 @@ static int get_push_ref_states_noquery(struct ref_states *states)
|
||||
states->push.strdup_strings = 1;
|
||||
if (!remote->push_refspec_nr) {
|
||||
item = string_list_append(&states->push, _("(matching)"));
|
||||
info = item->util = xcalloc(sizeof(struct push_info), 1);
|
||||
info = item->util = xcalloc(1, sizeof(struct push_info));
|
||||
info->status = PUSH_STATUS_NOTQUERIED;
|
||||
info->dest = xstrdup(item->string);
|
||||
}
|
||||
@ -446,7 +446,7 @@ static int get_push_ref_states_noquery(struct ref_states *states)
|
||||
else
|
||||
item = string_list_append(&states->push, _("(delete)"));
|
||||
|
||||
info = item->util = xcalloc(sizeof(struct push_info), 1);
|
||||
info = item->util = xcalloc(1, sizeof(struct push_info));
|
||||
info->forced = spec->force;
|
||||
info->status = PUSH_STATUS_NOTQUERIED;
|
||||
info->dest = xstrdup(spec->dst ? spec->dst : item->string);
|
||||
|
2
commit.c
2
commit.c
@ -1089,7 +1089,7 @@ struct commit_list *reduce_heads(struct commit_list *heads)
|
||||
p->item->object.flags |= STALE;
|
||||
num_head++;
|
||||
}
|
||||
array = xcalloc(sizeof(*array), num_head);
|
||||
array = xcalloc(num_head, sizeof(*array));
|
||||
for (p = heads, i = 0; p; p = p->next) {
|
||||
if (p->item->object.flags & STALE) {
|
||||
array[i++] = p->item;
|
||||
|
@ -101,19 +101,34 @@ static inline uint64_t git_bswap64(uint64_t x)
|
||||
#undef ntohll
|
||||
#undef htonll
|
||||
|
||||
#if !defined(__BYTE_ORDER)
|
||||
# if defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)
|
||||
# define __BYTE_ORDER BYTE_ORDER
|
||||
# define __LITTLE_ENDIAN LITTLE_ENDIAN
|
||||
# define __BIG_ENDIAN BIG_ENDIAN
|
||||
#if defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && defined(__BIG_ENDIAN)
|
||||
|
||||
# define GIT_BYTE_ORDER __BYTE_ORDER
|
||||
# define GIT_LITTLE_ENDIAN __LITTLE_ENDIAN
|
||||
# define GIT_BIG_ENDIAN __BIG_ENDIAN
|
||||
|
||||
#elif defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)
|
||||
|
||||
# define GIT_BYTE_ORDER BYTE_ORDER
|
||||
# define GIT_LITTLE_ENDIAN LITTLE_ENDIAN
|
||||
# define GIT_BIG_ENDIAN BIG_ENDIAN
|
||||
|
||||
#else
|
||||
|
||||
# define GIT_BIG_ENDIAN 4321
|
||||
# define GIT_LITTLE_ENDIAN 1234
|
||||
|
||||
# if defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
|
||||
# define GIT_BYTE_ORDER GIT_BIG_ENDIAN
|
||||
# elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
|
||||
# define GIT_BYTE_ORDER GIT_LITTLE_ENDIAN
|
||||
# else
|
||||
# error "Cannot determine endianness"
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
#if !defined(__BYTE_ORDER)
|
||||
# error "Cannot determine endianness"
|
||||
#endif
|
||||
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
#if GIT_BYTE_ORDER == GIT_BIG_ENDIAN
|
||||
# define ntohll(n) (n)
|
||||
# define htonll(n) (n)
|
||||
#else
|
||||
|
@ -1226,8 +1226,7 @@ static int WSAAPI getaddrinfo_stub(const char *node, const char *service,
|
||||
else
|
||||
ai->ai_canonname = NULL;
|
||||
|
||||
sin = xmalloc(ai->ai_addrlen);
|
||||
memset(sin, 0, ai->ai_addrlen);
|
||||
sin = xcalloc(1, ai->ai_addrlen);
|
||||
sin->sin_family = AF_INET;
|
||||
/* Note: getaddrinfo is supposed to allow service to be a string,
|
||||
* which should be looked up using getservbyname. This is
|
||||
|
4
config.c
4
config.c
@ -1538,7 +1538,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
|
||||
* The lock serves a purpose in addition to locking: the new
|
||||
* contents of .git/config will be written into it.
|
||||
*/
|
||||
lock = xcalloc(sizeof(struct lock_file), 1);
|
||||
lock = xcalloc(1, sizeof(struct lock_file));
|
||||
fd = hold_lock_file_for_update(lock, config_filename, 0);
|
||||
if (fd < 0) {
|
||||
error("could not lock config file %s: %s", config_filename, strerror(errno));
|
||||
@ -1793,7 +1793,7 @@ int git_config_rename_section_in_file(const char *config_filename,
|
||||
if (!config_filename)
|
||||
config_filename = filename_buf = git_pathdup("config");
|
||||
|
||||
lock = xcalloc(sizeof(struct lock_file), 1);
|
||||
lock = xcalloc(1, sizeof(struct lock_file));
|
||||
out_fd = hold_lock_file_for_update(lock, config_filename, 0);
|
||||
if (out_fd < 0) {
|
||||
ret = error("could not lock config file %s", config_filename);
|
||||
|
@ -64,9 +64,7 @@ static void parse_one_symref_info(struct string_list *symref, const char *val, i
|
||||
if (!len)
|
||||
return; /* just "symref" */
|
||||
/* e.g. "symref=HEAD:refs/heads/master" */
|
||||
sym = xmalloc(len + 1);
|
||||
memcpy(sym, val, len);
|
||||
sym[len] = '\0';
|
||||
sym = xmemdupz(val, len);
|
||||
target = strchr(sym, ':');
|
||||
if (!target)
|
||||
/* just "symref=something" */
|
||||
|
@ -8,7 +8,8 @@ This test verifies the basic operation of the merge, pull, add
|
||||
and split subcommands of git subtree.
|
||||
'
|
||||
|
||||
export TEST_DIRECTORY=$(pwd)/../../../t
|
||||
TEST_DIRECTORY=$(pwd)/../../../t
|
||||
export TEST_DIRECTORY
|
||||
|
||||
. ../../../t/test-lib.sh
|
||||
|
||||
|
2
diff.c
2
diff.c
@ -1361,7 +1361,7 @@ static struct diffstat_file *diffstat_add(struct diffstat_t *diffstat,
|
||||
const char *name_b)
|
||||
{
|
||||
struct diffstat_file *x;
|
||||
x = xcalloc(sizeof (*x), 1);
|
||||
x = xcalloc(1, sizeof(*x));
|
||||
ALLOC_GROW(diffstat->files, diffstat->nr + 1, diffstat->alloc);
|
||||
diffstat->files[diffstat->nr++] = x;
|
||||
if (name_b) {
|
||||
|
@ -332,7 +332,13 @@ while read commit parents; do
|
||||
parentstr=
|
||||
for parent in $parents; do
|
||||
for reparent in $(map "$parent"); do
|
||||
parentstr="$parentstr -p $reparent"
|
||||
case "$parentstr " in
|
||||
*" -p $reparent "*)
|
||||
;;
|
||||
*)
|
||||
parentstr="$parentstr -p $reparent"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
if [ "$filter_parent" ]; then
|
||||
|
@ -345,7 +345,17 @@ PidFile "$fqgitdir/pid"
|
||||
Listen $bind$port
|
||||
EOF
|
||||
|
||||
for mod in mime dir env log_config
|
||||
for mod in mpm_event mpm_prefork mpm_worker
|
||||
do
|
||||
if test -e $module_path/mod_${mod}.so
|
||||
then
|
||||
echo "LoadModule ${mod}_module " \
|
||||
"$module_path/mod_${mod}.so" >> "$conf"
|
||||
# only one mpm module permitted
|
||||
break
|
||||
fi
|
||||
done
|
||||
for mod in mime dir env log_config authz_core
|
||||
do
|
||||
if test -e $module_path/mod_${mod}.so
|
||||
then
|
||||
|
@ -13,7 +13,8 @@ refspec="${GIT_REMOTE_TESTGIT_REFSPEC-$default_refspec}"
|
||||
|
||||
test -z "$refspec" && prefix="refs"
|
||||
|
||||
export GIT_DIR="$url/.git"
|
||||
GIT_DIR="$url/.git"
|
||||
export GIT_DIR
|
||||
|
||||
force=
|
||||
|
||||
|
@ -94,7 +94,8 @@ create_stash () {
|
||||
# ease of unpacking later.
|
||||
u_commit=$(
|
||||
untracked_files | (
|
||||
export GIT_INDEX_FILE="$TMPindex"
|
||||
GIT_INDEX_FILE="$TMPindex" &&
|
||||
export GIT_INDEX_FILE &&
|
||||
rm -f "$TMPindex" &&
|
||||
git update-index -z --add --remove --stdin &&
|
||||
u_tree=$(git write-tree) &&
|
||||
|
@ -607,9 +607,7 @@ int main(int argc, char **argv)
|
||||
|
||||
cmd = c;
|
||||
n = out[0].rm_eo - out[0].rm_so;
|
||||
cmd_arg = xmalloc(n);
|
||||
memcpy(cmd_arg, dir + out[0].rm_so + 1, n-1);
|
||||
cmd_arg[n-1] = '\0';
|
||||
cmd_arg = xmemdupz(dir + out[0].rm_so + 1, n - 1);
|
||||
dir[out[0].rm_so] = 0;
|
||||
break;
|
||||
}
|
||||
|
@ -199,7 +199,7 @@ static void curl_setup_http(CURL *curl, const char *url,
|
||||
curl_easy_setopt(curl, CURLOPT_READFUNCTION, fread_buffer);
|
||||
#ifndef NO_CURL_IOCTL
|
||||
curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, ioctl_buffer);
|
||||
curl_easy_setopt(curl, CURLOPT_IOCTLDATA, &buffer);
|
||||
curl_easy_setopt(curl, CURLOPT_IOCTLDATA, buffer);
|
||||
#endif
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_fn);
|
||||
curl_easy_setopt(curl, CURLOPT_NOBODY, 0);
|
||||
@ -1732,7 +1732,7 @@ int main(int argc, char **argv)
|
||||
|
||||
git_extract_argv0_path(argv[0]);
|
||||
|
||||
repo = xcalloc(sizeof(*repo), 1);
|
||||
repo = xcalloc(1, sizeof(*repo));
|
||||
|
||||
argv++;
|
||||
for (i = 1; i < argc; i++, argv++) {
|
||||
|
@ -951,7 +951,7 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc)
|
||||
char *arg, *rsp;
|
||||
int s = -1, preauth;
|
||||
|
||||
ctx = xcalloc(sizeof(*ctx), 1);
|
||||
ctx = xcalloc(1, sizeof(*ctx));
|
||||
|
||||
ctx->imap = imap = xcalloc(sizeof(*imap), 1);
|
||||
imap->buf.sock.fd[0] = imap->buf.sock.fd[1] = -1;
|
||||
|
22
log-tree.c
22
log-tree.c
@ -365,6 +365,7 @@ static void show_sig_lines(struct rev_info *opt, int status, const char *bol)
|
||||
eol = strchrnul(bol, '\n');
|
||||
printf("%s%.*s%s%s", color, (int)(eol - bol), bol, reset,
|
||||
*eol ? "\n" : "");
|
||||
graph_show_oneline(opt->graph);
|
||||
bol = (*eol) ? (eol + 1) : eol;
|
||||
}
|
||||
}
|
||||
@ -446,16 +447,17 @@ static void show_one_mergetag(struct rev_info *opt,
|
||||
|
||||
payload_size = parse_signature(extra->value, extra->len);
|
||||
status = -1;
|
||||
if (extra->len > payload_size)
|
||||
if (verify_signed_buffer(extra->value, payload_size,
|
||||
extra->value + payload_size,
|
||||
extra->len - payload_size,
|
||||
&verify_message, NULL)) {
|
||||
if (verify_message.len <= gpg_message_offset)
|
||||
strbuf_addstr(&verify_message, "No signature\n");
|
||||
else
|
||||
status = 0;
|
||||
}
|
||||
if (extra->len > payload_size) {
|
||||
/* could have a good signature */
|
||||
if (!verify_signed_buffer(extra->value, payload_size,
|
||||
extra->value + payload_size,
|
||||
extra->len - payload_size,
|
||||
&verify_message, NULL))
|
||||
status = 0; /* good */
|
||||
else if (verify_message.len <= gpg_message_offset)
|
||||
strbuf_addstr(&verify_message, "No signature\n");
|
||||
/* otherwise we couldn't verify, which is shown as bad */
|
||||
}
|
||||
|
||||
show_sig_lines(opt, status, verify_message.buf);
|
||||
strbuf_release(&verify_message);
|
||||
|
6
notes.c
6
notes.c
@ -303,7 +303,7 @@ static int note_tree_insert(struct notes_tree *t, struct int_node *tree,
|
||||
free(entry);
|
||||
return 0;
|
||||
}
|
||||
new_node = (struct int_node *) xcalloc(sizeof(struct int_node), 1);
|
||||
new_node = (struct int_node *) xcalloc(1, sizeof(struct int_node));
|
||||
ret = note_tree_insert(t, new_node, n + 1, l, GET_PTR_TYPE(*p),
|
||||
combine_notes);
|
||||
if (ret)
|
||||
@ -443,7 +443,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree,
|
||||
if (len <= 20) {
|
||||
type = PTR_TYPE_NOTE;
|
||||
l = (struct leaf_node *)
|
||||
xcalloc(sizeof(struct leaf_node), 1);
|
||||
xcalloc(1, sizeof(struct leaf_node));
|
||||
hashcpy(l->key_sha1, object_sha1);
|
||||
hashcpy(l->val_sha1, entry.sha1);
|
||||
if (len < 20) {
|
||||
@ -1003,7 +1003,7 @@ void init_notes(struct notes_tree *t, const char *notes_ref,
|
||||
if (!combine_notes)
|
||||
combine_notes = combine_notes_concatenate;
|
||||
|
||||
t->root = (struct int_node *) xcalloc(sizeof(struct int_node), 1);
|
||||
t->root = (struct int_node *) xcalloc(1, sizeof(struct int_node));
|
||||
t->first_non_note = NULL;
|
||||
t->prev_non_note = NULL;
|
||||
t->ref = notes_ref ? xstrdup(notes_ref) : NULL;
|
||||
|
@ -45,7 +45,7 @@ static void init_pack_revindex(void)
|
||||
if (!num)
|
||||
return;
|
||||
pack_revindex_hashsz = num * 11;
|
||||
pack_revindex = xcalloc(sizeof(*pack_revindex), pack_revindex_hashsz);
|
||||
pack_revindex = xcalloc(pack_revindex_hashsz, sizeof(*pack_revindex));
|
||||
for (p = packed_git; p; p = p->next) {
|
||||
num = pack_revindex_ix(p);
|
||||
num = - 1 - num;
|
||||
|
4
path.c
4
path.c
@ -249,9 +249,7 @@ int validate_headref(const char *path)
|
||||
static struct passwd *getpw_str(const char *username, size_t len)
|
||||
{
|
||||
struct passwd *pw;
|
||||
char *username_z = xmalloc(len + 1);
|
||||
memcpy(username_z, username, len);
|
||||
username_z[len] = '\0';
|
||||
char *username_z = xmemdupz(username, len);
|
||||
pw = getpwnam(username_z);
|
||||
free(username_z);
|
||||
return pw;
|
||||
|
@ -389,8 +389,7 @@ void parse_pathspec(struct pathspec *pathspec,
|
||||
if (!(flags & PATHSPEC_PREFER_CWD))
|
||||
die("BUG: PATHSPEC_PREFER_CWD requires arguments");
|
||||
|
||||
pathspec->items = item = xmalloc(sizeof(*item));
|
||||
memset(item, 0, sizeof(*item));
|
||||
pathspec->items = item = xcalloc(1, sizeof(*item));
|
||||
item->match = prefix;
|
||||
item->original = prefix;
|
||||
item->nowildcard_len = item->len = strlen(prefix);
|
||||
|
@ -41,7 +41,7 @@ static int read_one_reflog(unsigned char *osha1, unsigned char *nsha1,
|
||||
static struct complete_reflogs *read_complete_reflog(const char *ref)
|
||||
{
|
||||
struct complete_reflogs *reflogs =
|
||||
xcalloc(sizeof(struct complete_reflogs), 1);
|
||||
xcalloc(1, sizeof(struct complete_reflogs));
|
||||
reflogs->ref = xstrdup(ref);
|
||||
for_each_reflog_ent(ref, read_one_reflog, reflogs);
|
||||
if (reflogs->nr == 0) {
|
||||
@ -135,7 +135,7 @@ struct reflog_walk_info {
|
||||
|
||||
void init_reflog_walk(struct reflog_walk_info** info)
|
||||
{
|
||||
*info = xcalloc(sizeof(struct reflog_walk_info), 1);
|
||||
*info = xcalloc(1, sizeof(struct reflog_walk_info));
|
||||
}
|
||||
|
||||
int add_reflog_for_walk(struct reflog_walk_info *info,
|
||||
@ -199,7 +199,7 @@ int add_reflog_for_walk(struct reflog_walk_info *info,
|
||||
= reflogs;
|
||||
}
|
||||
|
||||
commit_reflog = xcalloc(sizeof(struct commit_reflog), 1);
|
||||
commit_reflog = xcalloc(1, sizeof(struct commit_reflog));
|
||||
if (recno < 0) {
|
||||
commit_reflog->recno = get_reflog_recno_by_time(reflogs, timestamp);
|
||||
if (commit_reflog->recno < 0) {
|
||||
@ -242,7 +242,7 @@ void fake_reflog_parent(struct reflog_walk_info *info, struct commit *commit)
|
||||
return;
|
||||
}
|
||||
|
||||
commit->parents = xcalloc(sizeof(struct commit_list), 1);
|
||||
commit->parents = xcalloc(1, sizeof(struct commit_list));
|
||||
commit->parents->item = commit_info->commit;
|
||||
}
|
||||
|
||||
|
2
remote.c
2
remote.c
@ -523,7 +523,7 @@ static void free_refspecs(struct refspec *refspec, int nr_refspec)
|
||||
static struct refspec *parse_refspec_internal(int nr_refspec, const char **refspec, int fetch, int verify)
|
||||
{
|
||||
int i;
|
||||
struct refspec *rs = xcalloc(sizeof(*rs), nr_refspec);
|
||||
struct refspec *rs = xcalloc(nr_refspec, sizeof(*rs));
|
||||
|
||||
for (i = 0; i < nr_refspec; i++) {
|
||||
size_t llen;
|
||||
|
@ -278,9 +278,7 @@ static string_list_ty variables_set;
|
||||
static void
|
||||
note_variable (const char *var_ptr, size_t var_len)
|
||||
{
|
||||
char *string = xmalloc (var_len + 1);
|
||||
memcpy (string, var_ptr, var_len);
|
||||
string[var_len] = '\0';
|
||||
char *string = xmemdupz (var_ptr, var_len);
|
||||
|
||||
string_list_append (&variables_set, string);
|
||||
}
|
||||
|
@ -14,7 +14,11 @@ test_description='merge-recursive options
|
||||
. ./test-lib.sh
|
||||
|
||||
test_have_prereq SED_STRIPS_CR && SED_OPTIONS=-b
|
||||
test_have_prereq GREP_STRIPS_CR && export GREP_OPTIONS=-U
|
||||
if test_have_prereq GREP_STRIPS_CR
|
||||
then
|
||||
GREP_OPTIONS=-U
|
||||
export GREP_OPTIONS
|
||||
fi
|
||||
|
||||
test_expect_success 'setup' '
|
||||
conflict_hunks () {
|
||||
|
@ -3,6 +3,7 @@
|
||||
test_description='git log'
|
||||
|
||||
. ./test-lib.sh
|
||||
. "$TEST_DIRECTORY/lib-gpg.sh"
|
||||
|
||||
test_expect_success setup '
|
||||
|
||||
@ -841,4 +842,34 @@ test_expect_success 'dotdot is a parent directory' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success GPG 'log --graph --show-signature' '
|
||||
test_when_finished "git reset --hard && git checkout master" &&
|
||||
git checkout -b signed master &&
|
||||
echo foo >foo &&
|
||||
git add foo &&
|
||||
git commit -S -m signed_commit &&
|
||||
git log --graph --show-signature -n1 signed >actual &&
|
||||
grep "^| gpg: Signature made" actual &&
|
||||
grep "^| gpg: Good signature" actual
|
||||
'
|
||||
|
||||
test_expect_success GPG 'log --graph --show-signature for merged tag' '
|
||||
test_when_finished "git reset --hard && git checkout master" &&
|
||||
git checkout -b plain master &&
|
||||
echo aaa >bar &&
|
||||
git add bar &&
|
||||
git commit -m bar_commit &&
|
||||
git checkout -b tagged master &&
|
||||
echo bbb >baz &&
|
||||
git add baz &&
|
||||
git commit -m baz_commit &&
|
||||
git tag -s -m signed_tag_msg signed_tag &&
|
||||
git checkout plain &&
|
||||
git merge --no-ff -m msg signed_tag &&
|
||||
git log --graph --show-signature -n1 plain >actual &&
|
||||
grep "^|\\\ merged tag" actual &&
|
||||
grep "^| | gpg: Signature made" actual &&
|
||||
grep "^| | gpg: Good signature" actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -164,7 +164,7 @@ check_tar with_olde-prefix olde-
|
||||
test_expect_success 'git archive on large files' '
|
||||
test_config core.bigfilethreshold 1 &&
|
||||
git archive HEAD >b3.tar &&
|
||||
test_cmp b.tar b3.tar
|
||||
test_cmp_bin b.tar b3.tar
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
@ -173,15 +173,15 @@ test_expect_success \
|
||||
|
||||
test_expect_success \
|
||||
'git archive vs. the same in a bare repo' \
|
||||
'test_cmp b.tar b3.tar'
|
||||
'test_cmp_bin b.tar b3.tar'
|
||||
|
||||
test_expect_success 'git archive with --output' \
|
||||
'git archive --output=b4.tar HEAD &&
|
||||
test_cmp b.tar b4.tar'
|
||||
test_cmp_bin b.tar b4.tar'
|
||||
|
||||
test_expect_success 'git archive --remote' \
|
||||
'git archive --remote=. HEAD >b5.tar &&
|
||||
test_cmp b.tar b5.tar'
|
||||
test_cmp_bin b.tar b5.tar'
|
||||
|
||||
test_expect_success \
|
||||
'validate file modification time' \
|
||||
@ -198,7 +198,7 @@ test_expect_success \
|
||||
|
||||
test_expect_success 'git archive with --output, override inferred format' '
|
||||
git archive --format=tar --output=d4.zip HEAD &&
|
||||
test_cmp b.tar d4.zip
|
||||
test_cmp_bin b.tar d4.zip
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
@ -244,34 +244,34 @@ test_expect_success 'archive --list shows only enabled remote filters' '
|
||||
test_expect_success 'invoke tar filter by format' '
|
||||
git archive --format=tar.foo HEAD >config.tar.foo &&
|
||||
tr ab ba <config.tar.foo >config.tar &&
|
||||
test_cmp b.tar config.tar &&
|
||||
test_cmp_bin b.tar config.tar &&
|
||||
git archive --format=bar HEAD >config.bar &&
|
||||
tr ab ba <config.bar >config.tar &&
|
||||
test_cmp b.tar config.tar
|
||||
test_cmp_bin b.tar config.tar
|
||||
'
|
||||
|
||||
test_expect_success 'invoke tar filter by extension' '
|
||||
git archive -o config-implicit.tar.foo HEAD &&
|
||||
test_cmp config.tar.foo config-implicit.tar.foo &&
|
||||
test_cmp_bin config.tar.foo config-implicit.tar.foo &&
|
||||
git archive -o config-implicit.bar HEAD &&
|
||||
test_cmp config.tar.foo config-implicit.bar
|
||||
test_cmp_bin config.tar.foo config-implicit.bar
|
||||
'
|
||||
|
||||
test_expect_success 'default output format remains tar' '
|
||||
git archive -o config-implicit.baz HEAD &&
|
||||
test_cmp b.tar config-implicit.baz
|
||||
test_cmp_bin b.tar config-implicit.baz
|
||||
'
|
||||
|
||||
test_expect_success 'extension matching requires dot' '
|
||||
git archive -o config-implicittar.foo HEAD &&
|
||||
test_cmp b.tar config-implicittar.foo
|
||||
test_cmp_bin b.tar config-implicittar.foo
|
||||
'
|
||||
|
||||
test_expect_success 'only enabled filters are available remotely' '
|
||||
test_must_fail git archive --remote=. --format=tar.foo HEAD \
|
||||
>remote.tar.foo &&
|
||||
git archive --remote=. --format=bar >remote.bar HEAD &&
|
||||
test_cmp remote.bar config.bar
|
||||
test_cmp_bin remote.bar config.bar
|
||||
'
|
||||
|
||||
test_expect_success GZIP 'git archive --format=tgz' '
|
||||
@ -280,27 +280,27 @@ test_expect_success GZIP 'git archive --format=tgz' '
|
||||
|
||||
test_expect_success GZIP 'git archive --format=tar.gz' '
|
||||
git archive --format=tar.gz HEAD >j1.tar.gz &&
|
||||
test_cmp j.tgz j1.tar.gz
|
||||
test_cmp_bin j.tgz j1.tar.gz
|
||||
'
|
||||
|
||||
test_expect_success GZIP 'infer tgz from .tgz filename' '
|
||||
git archive --output=j2.tgz HEAD &&
|
||||
test_cmp j.tgz j2.tgz
|
||||
test_cmp_bin j.tgz j2.tgz
|
||||
'
|
||||
|
||||
test_expect_success GZIP 'infer tgz from .tar.gz filename' '
|
||||
git archive --output=j3.tar.gz HEAD &&
|
||||
test_cmp j.tgz j3.tar.gz
|
||||
test_cmp_bin j.tgz j3.tar.gz
|
||||
'
|
||||
|
||||
test_expect_success GZIP 'extract tgz file' '
|
||||
gzip -d -c <j.tgz >j.tar &&
|
||||
test_cmp b.tar j.tar
|
||||
test_cmp_bin b.tar j.tar
|
||||
'
|
||||
|
||||
test_expect_success GZIP 'remote tar.gz is allowed by default' '
|
||||
git archive --remote=. --format=tar.gz HEAD >remote.tar.gz &&
|
||||
test_cmp j.tgz remote.tar.gz
|
||||
test_cmp_bin j.tgz remote.tar.gz
|
||||
'
|
||||
|
||||
test_expect_success GZIP 'remote tar.gz can be disabled' '
|
||||
|
@ -68,7 +68,7 @@ test_expect_missing worktree2/ignored-by-worktree
|
||||
|
||||
test_expect_success 'git archive vs. bare' '
|
||||
(cd bare && git archive HEAD) >bare-archive.tar &&
|
||||
test_cmp archive.tar bare-archive.tar
|
||||
test_cmp_bin archive.tar bare-archive.tar
|
||||
'
|
||||
|
||||
test_expect_success 'git archive with worktree attributes, bare' '
|
||||
|
@ -97,15 +97,15 @@ test_expect_success \
|
||||
|
||||
test_expect_success \
|
||||
'git archive --format=zip vs. the same in a bare repo' \
|
||||
'test_cmp d.zip d1.zip'
|
||||
'test_cmp_bin d.zip d1.zip'
|
||||
|
||||
test_expect_success 'git archive --format=zip with --output' \
|
||||
'git archive --format=zip --output=d2.zip HEAD &&
|
||||
test_cmp d.zip d2.zip'
|
||||
test_cmp_bin d.zip d2.zip'
|
||||
|
||||
test_expect_success 'git archive with --output, inferring format' '
|
||||
git archive --output=d3.zip HEAD &&
|
||||
test_cmp d.zip d3.zip
|
||||
test_cmp_bin d.zip d3.zip
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
|
@ -45,7 +45,7 @@ test_expect_success HEADER_ONLY_TAR_OK 'tar archive of commit with empty tree' '
|
||||
test_expect_success 'tar archive of empty tree is empty' '
|
||||
git archive --format=tar HEAD: >empty.tar &&
|
||||
perl -e "print \"\\0\" x 10240" >10knuls.tar &&
|
||||
test_cmp 10knuls.tar empty.tar
|
||||
test_cmp_bin 10knuls.tar empty.tar
|
||||
'
|
||||
|
||||
test_expect_success 'tar archive of empty tree with prefix' '
|
||||
|
@ -229,7 +229,7 @@ test_expect_success 'pull request format' '
|
||||
cd local &&
|
||||
git request-pull initial "$downstream_url" full
|
||||
) >request &&
|
||||
grep ' tags/full$'
|
||||
grep " tags/full\$" request
|
||||
'
|
||||
|
||||
test_expect_success 'request-pull ignores OPTIONS_KEEPDASHDASH poison' '
|
||||
|
@ -5,7 +5,11 @@ test_description='test git-http-backend-noserver'
|
||||
|
||||
HTTPD_DOCUMENT_ROOT_PATH="$TRASH_DIRECTORY"
|
||||
|
||||
test_have_prereq GREP_STRIPS_CR && export GREP_OPTIONS=-U
|
||||
if test_have_prereq GREP_STRIPS_CR
|
||||
then
|
||||
GREP_OPTIONS=-U
|
||||
export GREP_OPTIONS
|
||||
fi
|
||||
|
||||
run_backend() {
|
||||
echo "$2" |
|
||||
|
@ -308,6 +308,17 @@ test_expect_success 'Prune empty commits' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'prune empty collapsed merges' '
|
||||
test_config merge.ff false &&
|
||||
git rev-list HEAD >expect &&
|
||||
test_commit to_remove_2 &&
|
||||
git reset --hard HEAD^ &&
|
||||
test_merge non-ff to_remove_2 &&
|
||||
git filter-branch -f --index-filter "git update-index --remove to_remove_2.t" --prune-empty HEAD &&
|
||||
git rev-list HEAD >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success '--remap-to-ancestor with filename filters' '
|
||||
git checkout master &&
|
||||
git reset --hard A &&
|
||||
|
@ -1096,11 +1096,6 @@ test_expect_success 'grep -E pattern with grep.patternType=fixed' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_config() {
|
||||
git config "$1" "$2" &&
|
||||
test_when_finished "git config --unset $1"
|
||||
}
|
||||
|
||||
cat >expected <<EOF
|
||||
hello.c<RED>:<RESET>int main(int argc, const char **argv)
|
||||
hello.c<RED>-<RESET>{
|
||||
|
@ -617,6 +617,12 @@ test_cmp() {
|
||||
$GIT_TEST_CMP "$@"
|
||||
}
|
||||
|
||||
# test_cmp_bin - helper to compare binary files
|
||||
|
||||
test_cmp_bin() {
|
||||
cmp "$@"
|
||||
}
|
||||
|
||||
# Check if the file expected to be empty is indeed empty, and barfs
|
||||
# otherwise.
|
||||
|
||||
|
@ -1026,7 +1026,7 @@ static struct ref *get_refs_list(struct transport *transport, int for_push)
|
||||
|
||||
int transport_helper_init(struct transport *transport, const char *name)
|
||||
{
|
||||
struct helper_data *data = xcalloc(sizeof(*data), 1);
|
||||
struct helper_data *data = xcalloc(1, sizeof(*data));
|
||||
data->name = name;
|
||||
|
||||
if (getenv("GIT_TRANSPORT_HELPER_DEBUG"))
|
||||
|
Reference in New Issue
Block a user