Hello community,
here is the log from the commit of package git for openSUSE:Factory checked in at 2014-10-05 20:28:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/git (Old)
and /work/SRC/openSUSE:Factory/.git.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "git"
Changes:
--------
--- /work/SRC/openSUSE:Factory/git/git.changes 2014-09-23 10:42:25.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.git.new/git.changes 2014-10-05 20:28:13.000000000 +0200
@@ -1,0 +2,19 @@
+Tue Sep 30 20:32:08 UTC 2014 - andreas.stieger@gmx.de
+
+- git 2.1.2:
+ * "git push" over HTTP transport had an artificial limit on
+ number of refs that can be pushed imposed by the command line
+ length.
+ * When receiving an invalid pack stream that records the same
+ object twice, multiple threads got confused due to a race.
+ * An attempt to remove the entire tree in the "git fast-import"
+ input stream caused it to misbehave.
+ * Reachability check (used in "git prune" and friends) did not
+ add a detached HEAD as a starting point to traverse
+ objects still in use.
+ * "git config --add section.var val" used to lose existing
+ section.var whose value was an empty string.
+ * "git fsck" failed to report that it found corrupt objects via
+ its exit status in some cases.
+
+-------------------------------------------------------------------
Old:
----
git-2.1.1.tar.xz
New:
----
git-2.1.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ git.spec ++++++
--- /var/tmp/diff_new_pack.lBOjXw/_old 2014-10-05 20:28:14.000000000 +0200
+++ /var/tmp/diff_new_pack.lBOjXw/_new 2014-10-05 20:28:14.000000000 +0200
@@ -20,7 +20,7 @@
%define _fwdefdir /etc/sysconfig/SuSEfirewall2.d/services
Name: git
-Version: 2.1.1
+Version: 2.1.2
Release: 0
Summary: Fast, scalable, distributed revision control system
License: GPL-2.0
++++++ git-2.1.1.tar.xz -> git-2.1.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/Documentation/RelNotes/2.1.2.txt new/git-2.1.2/Documentation/RelNotes/2.1.2.txt
--- old/git-2.1.1/Documentation/RelNotes/2.1.2.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/git-2.1.2/Documentation/RelNotes/2.1.2.txt 2014-09-30 21:00:40.000000000 +0200
@@ -0,0 +1,20 @@
+Git v2.1.2 Release Notes
+========================
+
+ * "git push" over HTTP transport had an artificial limit on number of
+ refs that can be pushed imposed by the command line length.
+
+ * When receiving an invalid pack stream that records the same object
+ twice, multiple threads got confused due to a race.
+
+ * An attempt to remove the entire tree in the "git fast-import" input
+ stream caused it to misbehave.
+
+ * Reachability check (used in "git prune" and friends) did not add a
+ detached HEAD as a starting point to traverse objects still in use.
+
+ * "git config --add section.var val" used to lose existing
+ section.var whose value was an empty string.
+
+ * "git fsck" failed to report that it found corrupt objects via its
+ exit status in some cases.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/Documentation/git-rebase.txt new/git-2.1.2/Documentation/git-rebase.txt
--- old/git-2.1.1/Documentation/git-rebase.txt 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/Documentation/git-rebase.txt 2014-09-30 21:00:40.000000000 +0200
@@ -9,7 +9,7 @@
--------
[verse]
'git rebase' [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>]
- [<upstream>] [<branch>]
+ [<upstream> [<branch>]]
'git rebase' [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>]
--root [<branch>]
'git rebase' --continue | --skip | --abort | --edit-todo
@@ -316,11 +316,8 @@
-f::
--force-rebase::
- Force the rebase even if the current branch is a descendant
- of the commit you are rebasing onto. Normally non-interactive rebase will
- exit with the message "Current branch is up to date" in such a
- situation.
- Incompatible with the --interactive option.
+ Force a rebase even if the current branch is up-to-date and
+ the command without `--force` would return without doing anything.
+
You may find this (or --no-ff with an interactive rebase) helpful after
reverting a topic branch merge, as this option recreates the topic branch with
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/Documentation/git-send-pack.txt new/git-2.1.2/Documentation/git-send-pack.txt
--- old/git-2.1.1/Documentation/git-send-pack.txt 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/Documentation/git-send-pack.txt 2014-09-30 21:00:40.000000000 +0200
@@ -35,6 +35,16 @@
Instead of explicitly specifying which refs to update,
update all heads that locally exist.
+--stdin::
+ Take the list of refs from stdin, one per line. If there
+ are refs specified on the command line in addition to this
+ option, then the refs from stdin are processed after those
+ on the command line.
++
+If '--stateless-rpc' is specified together with this option then
+the list of refs must be in packet format (pkt-line). Each ref must
+be in a separate packet, and the list must end with a flush packet.
+
--dry-run::
Do everything except actually send the updates.
@@ -77,7 +87,8 @@
Without '--all' and without any '<ref>', the heads that exist
both on the local side and on the remote side are updated.
-When one or more '<ref>' are specified explicitly, it can be either a
+When one or more '<ref>' are specified explicitly (whether on the
+command line or via `--stdin`), it can be either a
single pattern, or a pair of such pattern separated by a colon
":" (this means that a ref name cannot have a colon in it). A
single pattern '<name>' is just a shorthand for '<name>:<name>'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/Documentation/git.txt new/git-2.1.2/Documentation/git.txt
--- old/git-2.1.1/Documentation/git.txt 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/Documentation/git.txt 2014-09-30 21:00:40.000000000 +0200
@@ -43,9 +43,10 @@
branch of the `git.git` repository.
Documentation for older releases are available here:
-* link:v2.1.1/git.html[documentation for release 2.1.1]
+* link:v2.1.2/git.html[documentation for release 2.1.2]
* release notes for
+ link:RelNotes/2.1.2.txt[2.1.2],
link:RelNotes/2.1.1.txt[2.1.1],
link:RelNotes/2.1.0.txt[2.1].
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/GIT-VERSION-GEN new/git-2.1.2/GIT-VERSION-GEN
--- old/git-2.1.1/GIT-VERSION-GEN 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/GIT-VERSION-GEN 2014-09-30 21:00:40.000000000 +0200
@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
-DEF_VER=v2.1.1
+DEF_VER=v2.1.2
LF='
'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/RelNotes new/git-2.1.2/RelNotes
--- old/git-2.1.1/RelNotes 2014-10-05 20:28:16.000000000 +0200
+++ new/git-2.1.2/RelNotes 2014-10-05 20:28:16.000000000 +0200
@@ -1 +1 @@
-symbolic link to Documentation/RelNotes/2.1.1.txt
+symbolic link to Documentation/RelNotes/2.1.2.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/builtin/config.c new/git-2.1.2/builtin/config.c
--- old/git-2.1.1/builtin/config.c 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/builtin/config.c 2014-09-30 21:00:40.000000000 +0200
@@ -586,7 +586,8 @@
check_argc(argc, 2, 2);
value = normalize_value(argv[0], argv[1]);
return git_config_set_multivar_in_file(given_config_source.file,
- argv[0], value, "^$", 0);
+ argv[0], value,
+ CONFIG_REGEX_NONE, 0);
}
else if (actions == ACTION_REPLACE_ALL) {
check_write();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/builtin/fsck.c new/git-2.1.2/builtin/fsck.c
--- old/git-2.1.1/builtin/fsck.c 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/builtin/fsck.c 2014-09-30 21:00:40.000000000 +0200
@@ -388,7 +388,8 @@
unsigned char *sha1 = entry->sha1;
sha1_list.entry[i] = NULL;
- fsck_sha1(sha1);
+ if (fsck_sha1(sha1))
+ errors_found |= ERROR_OBJECT;
free(entry);
}
sha1_list.nr = 0;
@@ -488,6 +489,7 @@
obj = parse_object(sha1);
if (!obj) {
error("%s: invalid sha1 pointer %s", refname, sha1_to_hex(sha1));
+ errors_found |= ERROR_REACHABLE;
/* We'll continue with the rest despite the error.. */
return 0;
}
@@ -504,7 +506,7 @@
{
if (head_points_at && !is_null_sha1(head_sha1))
fsck_handle_ref("HEAD", head_sha1, 0, NULL);
- for_each_ref(fsck_handle_ref, NULL);
+ for_each_rawref(fsck_handle_ref, NULL);
if (include_reflogs)
for_each_reflog(fsck_handle_reflog, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/builtin/index-pack.c new/git-2.1.2/builtin/index-pack.c
--- old/git-2.1.1/builtin/index-pack.c 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/builtin/index-pack.c 2014-09-30 21:00:40.000000000 +0200
@@ -112,6 +112,10 @@
#define deepest_delta_lock() lock_mutex(&deepest_delta_mutex)
#define deepest_delta_unlock() unlock_mutex(&deepest_delta_mutex)
+static pthread_mutex_t type_cas_mutex;
+#define type_cas_lock() lock_mutex(&type_cas_mutex)
+#define type_cas_unlock() unlock_mutex(&type_cas_mutex)
+
static pthread_key_t key;
static inline void lock_mutex(pthread_mutex_t *mutex)
@@ -135,6 +139,7 @@
init_recursive_mutex(&read_mutex);
pthread_mutex_init(&counter_mutex, NULL);
pthread_mutex_init(&work_mutex, NULL);
+ pthread_mutex_init(&type_cas_mutex, NULL);
if (show_stat)
pthread_mutex_init(&deepest_delta_mutex, NULL);
pthread_key_create(&key, NULL);
@@ -157,6 +162,7 @@
pthread_mutex_destroy(&read_mutex);
pthread_mutex_destroy(&counter_mutex);
pthread_mutex_destroy(&work_mutex);
+ pthread_mutex_destroy(&type_cas_mutex);
if (show_stat)
pthread_mutex_destroy(&deepest_delta_mutex);
for (i = 0; i < nr_threads; i++)
@@ -862,7 +868,6 @@
{
void *base_data, *delta_data;
- delta_obj->real_type = base->obj->real_type;
if (show_stat) {
delta_obj->delta_depth = base->obj->delta_depth + 1;
deepest_delta_lock();
@@ -888,6 +893,26 @@
counter_unlock();
}
+/*
+ * Standard boolean compare-and-swap: atomically check whether "*type" is
+ * "want"; if so, swap in "set" and return true. Otherwise, leave it untouched
+ * and return false.
+ */
+static int compare_and_swap_type(enum object_type *type,
+ enum object_type want,
+ enum object_type set)
+{
+ enum object_type old;
+
+ type_cas_lock();
+ old = *type;
+ if (old == want)
+ *type = set;
+ type_cas_unlock();
+
+ return old == want;
+}
+
static struct base_data *find_unresolved_deltas_1(struct base_data *base,
struct base_data *prev_base)
{
@@ -915,7 +940,10 @@
struct object_entry *child = objects + deltas[base->ref_first].obj_no;
struct base_data *result = alloc_base_data();
- assert(child->real_type == OBJ_REF_DELTA);
+ if (!compare_and_swap_type(&child->real_type, OBJ_REF_DELTA,
+ base->obj->real_type))
+ die("BUG: child->real_type != OBJ_REF_DELTA");
+
resolve_delta(child, base, result);
if (base->ref_first == base->ref_last && base->ofs_last == -1)
free_base_data(base);
@@ -929,6 +957,7 @@
struct base_data *result = alloc_base_data();
assert(child->real_type == OBJ_OFS_DELTA);
+ child->real_type = base->obj->real_type;
resolve_delta(child, base, result);
if (base->ofs_first == base->ofs_last)
free_base_data(base);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/builtin/send-pack.c new/git-2.1.2/builtin/send-pack.c
--- old/git-2.1.1/builtin/send-pack.c 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/builtin/send-pack.c 2014-09-30 21:00:40.000000000 +0200
@@ -110,6 +110,7 @@
int flags;
unsigned int reject_reasons;
int progress = -1;
+ int from_stdin = 0;
struct push_cas_option cas = {0};
argv++;
@@ -169,6 +170,10 @@
args.stateless_rpc = 1;
continue;
}
+ if (!strcmp(arg, "--stdin")) {
+ from_stdin = 1;
+ continue;
+ }
if (!strcmp(arg, "--helper-status")) {
helper_status = 1;
continue;
@@ -201,6 +206,28 @@
}
if (!dest)
usage(send_pack_usage);
+
+ if (from_stdin) {
+ struct argv_array all_refspecs = ARGV_ARRAY_INIT;
+
+ for (i = 0; i < nr_refspecs; i++)
+ argv_array_push(&all_refspecs, refspecs[i]);
+
+ if (args.stateless_rpc) {
+ const char *buf;
+ while ((buf = packet_read_line(0, NULL)))
+ argv_array_push(&all_refspecs, buf);
+ } else {
+ struct strbuf line = STRBUF_INIT;
+ while (strbuf_getline(&line, stdin, '\n') != EOF)
+ argv_array_push(&all_refspecs, line.buf);
+ strbuf_release(&line);
+ }
+
+ refspecs = all_refspecs.argv;
+ nr_refspecs = all_refspecs.argc;
+ }
+
/*
* --all and --mirror are incompatible; neither makes sense
* with any refspecs.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/cache.h new/git-2.1.2/cache.h
--- old/git-2.1.1/cache.h 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/cache.h 2014-09-30 21:00:40.000000000 +0200
@@ -1281,6 +1281,8 @@
#define CONFIG_INVALID_PATTERN 6
#define CONFIG_GENERIC_ERROR 7
+#define CONFIG_REGEX_NONE ((void *)1)
+
struct git_config_source {
unsigned int use_stdin:1;
const char *file;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/config.c new/git-2.1.2/config.c
--- old/git-2.1.1/config.c 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/config.c 2014-09-30 21:00:40.000000000 +0200
@@ -1236,10 +1236,15 @@
static int matches(const char *key, const char *value)
{
- return !strcmp(key, store.key) &&
- (store.value_regex == NULL ||
- (store.do_not_match ^
- !regexec(store.value_regex, value, 0, NULL, 0)));
+ if (strcmp(key, store.key))
+ return 0; /* not ours */
+ if (!store.value_regex)
+ return 1; /* always matches */
+ if (store.value_regex == CONFIG_REGEX_NONE)
+ return 0; /* never matches */
+
+ return store.do_not_match ^
+ (value && !regexec(store.value_regex, value, 0, NULL, 0));
}
static int store_aux(const char *key, const char *value, void *cb)
@@ -1501,6 +1506,8 @@
/*
* If value==NULL, unset in (remove from) config,
* if value_regex!=NULL, disregard key/value pairs where value does not match.
+ * if value_regex==CONFIG_REGEX_NONE, do not match any existing values
+ * (only add a new one)
* if multi_replace==0, nothing, or only one matching key/value is replaced,
* else all matching key/values (regardless how many) are removed,
* before the new pair is written.
@@ -1584,6 +1591,8 @@
if (value_regex == NULL)
store.value_regex = NULL;
+ else if (value_regex == CONFIG_REGEX_NONE)
+ store.value_regex = CONFIG_REGEX_NONE;
else {
if (value_regex[0] == '!') {
store.do_not_match = 1;
@@ -1615,7 +1624,8 @@
if (git_config_from_file(store_aux, config_filename, NULL)) {
error("invalid config file %s", config_filename);
free(store.key);
- if (store.value_regex != NULL) {
+ if (store.value_regex != NULL &&
+ store.value_regex != CONFIG_REGEX_NONE) {
regfree(store.value_regex);
free(store.value_regex);
}
@@ -1624,7 +1634,8 @@
}
free(store.key);
- if (store.value_regex != NULL) {
+ if (store.value_regex != NULL &&
+ store.value_regex != CONFIG_REGEX_NONE) {
regfree(store.value_regex);
free(store.value_regex);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/configure new/git-2.1.2/configure
--- old/git-2.1.1/configure 2014-09-19 23:45:28.000000000 +0200
+++ new/git-2.1.2/configure 2014-09-30 21:00:41.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for git 2.1.1.
+# Generated by GNU Autoconf 2.69 for git 2.1.2.
#
# Report bugs to .
#
@@ -580,8 +580,8 @@
# Identity of this package.
PACKAGE_NAME='git'
PACKAGE_TARNAME='git'
-PACKAGE_VERSION='2.1.1'
-PACKAGE_STRING='git 2.1.1'
+PACKAGE_VERSION='2.1.2'
+PACKAGE_STRING='git 2.1.2'
PACKAGE_BUGREPORT='git@vger.kernel.org'
PACKAGE_URL=''
@@ -1251,7 +1251,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures git 2.1.1 to adapt to many kinds of systems.
+\`configure' configures git 2.1.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1312,7 +1312,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of git 2.1.1:";;
+ short | recursive ) echo "Configuration of git 2.1.2:";;
esac
cat <<\_ACEOF
@@ -1451,7 +1451,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-git configure 2.1.1
+git configure 2.1.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1931,7 +1931,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by git $as_me 2.1.1, which was
+It was created by git $as_me 2.1.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -7734,7 +7734,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by git $as_me 2.1.1, which was
+This file was extended by git $as_me 2.1.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -7791,7 +7791,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-git config.status 2.1.1
+git config.status 2.1.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/fast-import.c new/git-2.1.2/fast-import.c
--- old/git-2.1.1/fast-import.c 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/fast-import.c 2014-09-30 21:00:40.000000000 +0200
@@ -1422,7 +1422,7 @@
static void store_tree(struct tree_entry *root)
{
- struct tree_content *t = root->tree;
+ struct tree_content *t;
unsigned int i, j, del;
struct last_object lo = { STRBUF_INIT, 0, 0, /* no_swap */ 1 };
struct object_entry *le = NULL;
@@ -1430,6 +1430,10 @@
if (!is_null_sha1(root->versions[1].sha1))
return;
+ if (!root->tree)
+ load_tree(root);
+ t = root->tree;
+
for (i = 0; i < t->entry_count; i++) {
if (t->entries[i]->tree)
store_tree(t->entries[i]);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/git.spec new/git-2.1.2/git.spec
--- old/git-2.1.1/git.spec 2014-09-19 23:45:28.000000000 +0200
+++ new/git-2.1.2/git.spec 2014-09-30 21:00:41.000000000 +0200
@@ -1,7 +1,7 @@
# Pass --without docs to rpmbuild if you don't want the documentation
Name: git
-Version: 2.1.1
+Version: 2.1.2
Release: 1%{?dist}
Summary: Core git tools
License: GPL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/po/TEAMS new/git-2.1.2/po/TEAMS
--- old/git-2.1.1/po/TEAMS 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/po/TEAMS 2014-09-30 21:00:40.000000000 +0200
@@ -17,6 +17,7 @@
Christian Stimming
Phillip Szelat
Matthias Rüster
+ Magnus Görlitz
Language: fr (French)
Repository: https://github.com/jnavila/git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/po/de.po new/git-2.1.2/po/de.po
--- old/git-2.1.1/po/de.po 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/po/de.po 2014-09-30 21:00:40.000000000 +0200
@@ -29,7 +29,7 @@
"'git commit -a'."
msgstr ""
"Korrigieren Sie dies im Arbeitsverzeichnis, und benutzen Sie\n"
-"dann 'git add/rm <Datei>' um die Auflösung entsprechend zu markieren\n"
+"dann 'git add/rm <Datei>', um die Auflösung entsprechend zu markieren\n"
"und zu committen, oder benutzen Sie 'git commit -a'."
#: archive.c:10
@@ -619,7 +619,7 @@
#: merge-recursive.c:703
#, c-format
msgid "Removing %s to make room for subdirectory\n"
-msgstr "Entferne %s um Platz für Unterverzeichnis zu schaffen\n"
+msgstr "Entferne %s, um Platz für Unterverzeichnis zu schaffen\n"
#: merge-recursive.c:717 merge-recursive.c:738
msgid ": perhaps a D/F conflict?"
@@ -1037,7 +1037,7 @@
#: remote.c:1960
msgid " (use \"git push\" to publish your local commits)\n"
-msgstr " (benutzen Sie \"git push\" um lokale Commits zu publizieren)\n"
+msgstr " (benutzen Sie \"git push\", um lokale Commits zu publizieren)\n"
#: remote.c:1963
#, c-format
@@ -1052,7 +1052,7 @@
#: remote.c:1971
msgid " (use \"git pull\" to update your local branch)\n"
msgstr ""
-" (benutzen Sie \"git pull\" um Ihren lokalen Branch zu aktualisieren)\n"
+" (benutzen Sie \"git pull\", um Ihren lokalen Branch zu aktualisieren)\n"
#: remote.c:1974
#, c-format
@@ -1072,7 +1072,7 @@
#: remote.c:1984
msgid " (use \"git pull\" to merge the remote branch into yours)\n"
msgstr ""
-" (benutzen Sie \"git pull\" um Ihren Branch mit dem Remote-Branch "
+" (benutzen Sie \"git pull\", um Ihren Branch mit dem Remote-Branch "
"zusammenzuführen)\n"
#: run-command.c:80
@@ -1136,7 +1136,7 @@
#: sequencer.c:233
msgid "Commit your changes or stash them to proceed."
msgstr ""
-"Tragen Sie Ihre Änderungen ein oder benutzen Sie \"stash\" um fortzufahren."
+"Tragen Sie Ihre Änderungen ein oder benutzen Sie \"stash\", um fortzufahren."
#: sequencer.c:250
msgid "Failed to lock HEAD during fast_forward_to"
@@ -1488,18 +1488,18 @@
#: wt-status.c:183
msgid " (use \"git add <file>...\" to mark resolution)"
msgstr ""
-" (benutzen Sie \"git add/rm <Datei>...\" um die Auflösung zu markieren)"
+" (benutzen Sie \"git add/rm <Datei>...\", um die Auflösung zu markieren)"
#: wt-status.c:185 wt-status.c:189
msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)"
msgstr ""
-" (benutzen Sie \"git add/rm <Datei>...\" um die Auflösung entsprechend zu "
+" (benutzen Sie \"git add/rm <Datei>...\", um die Auflösung entsprechend zu "
"markieren)"
#: wt-status.c:187
msgid " (use \"git rm <file>...\" to mark resolution)"
msgstr ""
-" (benutzen Sie \"git add/rm <Datei>...\" um die Auflösung zu markieren)"
+" (benutzen Sie \"git add/rm <Datei>...\", um die Auflösung zu markieren)"
#: wt-status.c:198
msgid "Changes to be committed:"
@@ -1512,20 +1512,20 @@
#: wt-status.c:220
msgid " (use \"git add <file>...\" to update what will be committed)"
msgstr ""
-" (benutzen Sie \"git add <Datei>...\" um die Änderungen zum Commit "
+" (benutzen Sie \"git add <Datei>...\", um die Änderungen zum Commit "
"vorzumerken)"
#: wt-status.c:222
msgid " (use \"git add/rm <file>...\" to update what will be committed)"
msgstr ""
-" (benutzen Sie \"git add/rm <Datei>...\" um die Änderungen zum Commit "
+" (benutzen Sie \"git add/rm <Datei>...\", um die Änderungen zum Commit "
"vorzumerken)"
#: wt-status.c:223
msgid ""
" (use \"git checkout -- <file>...\" to discard changes in working directory)"
msgstr ""
-" (benutzen Sie \"git checkout -- <Datei>...\" um die Änderungen im "
+" (benutzen Sie \"git checkout -- <Datei>...\", um die Änderungen im "
"Arbeitsverzeichnis zu verwerfen)"
#: wt-status.c:225
@@ -1538,7 +1538,7 @@
#, c-format
msgid " (use \"git %s <file>...\" to include in what will be committed)"
msgstr ""
-" (benutzen Sie \"git %s <Datei>...\" um die Änderungen zum Commit "
+" (benutzen Sie \"git %s <Datei>...\", um die Änderungen zum Commit "
"vorzumerken)"
#: wt-status.c:252
@@ -1653,7 +1653,7 @@
#: wt-status.c:945
msgid " (use \"git commit\" to conclude merge)"
-msgstr " (benutzen Sie \"git commit\" um den Merge abzuschließen)"
+msgstr " (benutzen Sie \"git commit\", um den Merge abzuschließen)"
#: wt-status.c:955
msgid "You are in the middle of an am session."
@@ -1670,12 +1670,12 @@
#: wt-status.c:964
msgid " (use \"git am --skip\" to skip this patch)"
-msgstr " (benutzen Sie \"git am --skip\" um diesen Patch auszulassen)"
+msgstr " (benutzen Sie \"git am --skip\", um diesen Patch auszulassen)"
#: wt-status.c:966
msgid " (use \"git am --abort\" to restore the original branch)"
msgstr ""
-" (benutzen Sie \"git am --abort\" um den ursprünglichen Branch "
+" (benutzen Sie \"git am --abort\", um den ursprünglichen Branch "
"wiederherzustellen)"
#: wt-status.c:1026 wt-status.c:1043
@@ -1695,12 +1695,12 @@
#: wt-status.c:1036
msgid " (use \"git rebase --skip\" to skip this patch)"
-msgstr " (benutzen Sie \"git rebase --skip\" um diesen Patch auszulassen)"
+msgstr " (benutzen Sie \"git rebase --skip\", um diesen Patch auszulassen)"
#: wt-status.c:1038
msgid " (use \"git rebase --abort\" to check out the original branch)"
msgstr ""
-" (benutzen Sie \"git rebase --abort\" um den ursprünglichen Branch "
+" (benutzen Sie \"git rebase --abort\", um den ursprünglichen Branch "
"auszuchecken)"
#: wt-status.c:1051
@@ -1739,7 +1739,7 @@
#: wt-status.c:1075
msgid " (use \"git commit --amend\" to amend the current commit)"
msgstr ""
-" (benutzen Sie \"git commit --amend\" um den aktuellen Commit nachzubessern)"
+" (benutzen Sie \"git commit --amend\", um den aktuellen Commit nachzubessern)"
#: wt-status.c:1077
msgid ""
@@ -1767,7 +1767,7 @@
#: wt-status.c:1097
msgid " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
msgstr ""
-" (benutzen Sie \"git cherry-pick --abort\" um die Cherry-Pick-Operation "
+" (benutzen Sie \"git cherry-pick --abort\", um die Cherry-Pick-Operation "
"abzubrechen)"
#: wt-status.c:1106
@@ -1788,7 +1788,7 @@
#: wt-status.c:1116
msgid " (use \"git revert --abort\" to cancel the revert operation)"
msgstr ""
-" (benutzen Sie \"git revert --abort\" um die Revert-Operation abzubrechen)"
+" (benutzen Sie \"git revert --abort\", um die Revert-Operation abzubrechen)"
#: wt-status.c:1127
#, c-format
@@ -1802,7 +1802,7 @@
#: wt-status.c:1134
msgid " (use \"git bisect reset\" to get back to the original branch)"
msgstr ""
-" (benutzen Sie \"git bisect reset\" um zum ursprünglichen Branch "
+" (benutzen Sie \"git bisect reset\", um zum ursprünglichen Branch "
"zurückzukehren)"
#: wt-status.c:1309
@@ -1855,7 +1855,7 @@
#: wt-status.c:1373
msgid " (use -u option to show untracked files)"
-msgstr " (benutzen Sie die Option -u um unbeobachteten Dateien anzuzeigen)"
+msgstr " (benutzen Sie die Option -u, um unbeobachteten Dateien anzuzeigen)"
#: wt-status.c:1379
msgid "No changes"
@@ -2235,7 +2235,7 @@
#: builtin/apply.c:2818
#, c-format
msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
-msgstr "Kontext reduziert zu (%ld/%ld) um Patch-Bereich bei %d anzuwenden"
+msgstr "Kontext reduziert zu (%ld/%ld), um Patch-Bereich bei %d anzuwenden"
#: builtin/apply.c:2824
#, c-format
@@ -2691,7 +2691,7 @@
#: builtin/blame.c:2514
msgid "Show author email instead of name (Default: off)"
-msgstr "Zeigt anstatt des Namens die Email-Adresse des Autors (Standard: aus)"
+msgstr "Zeigt anstatt des Namens die E-Mail-Adresse des Autors (Standard: aus)"
#: builtin/blame.c:2515
msgid "Ignore whitespace differences"
@@ -3085,7 +3085,7 @@
#: builtin/branch.c:952
msgid "too many branches to set new upstream"
-msgstr "zu viele Branches angegeben um Upstream-Branch zu setzen"
+msgstr "zu viele Branches angegeben, um Upstream-Branch zu setzen"
#: builtin/branch.c:956
#, c-format
@@ -3108,7 +3108,7 @@
#: builtin/branch.c:975
msgid "too many branches to unset upstream"
msgstr ""
-"zu viele Branches angegeben um Konfiguration zu Upstream-Branch zu entfernen"
+"zu viele Branches angegeben, um Konfiguration zu Upstream-Branch zu entfernen"
#: builtin/branch.c:979
msgid "could not unset upstream of HEAD when it does not point to any branch."
@@ -5071,7 +5071,7 @@
#: builtin/fast-export.c:718
msgid "Use the done feature to terminate the stream"
-msgstr "Benutzt die \"done\"-Funktion um den Strom abzuschließen"
+msgstr "Benutzt die \"done\"-Funktion, um den Strom abzuschließen"
#: builtin/fast-export.c:719
msgid "Skip output of blob data"
@@ -5268,7 +5268,7 @@
" 'git remote prune %s' to remove any old, conflicting branches"
msgstr ""
"Einige lokale Referenzen konnten nicht aktualisiert werden; versuchen Sie\n"
-"'git remote prune %s' um jeden älteren, widersprüchlichen Branch zu löschen."
+"'git remote prune %s', um jeden älteren, widersprüchlichen Branch zu löschen."
#: builtin/fetch.c:759
#, c-format
@@ -6535,7 +6535,7 @@
#: builtin/log.c:1217
msgid "Messaging"
-msgstr "Email-Einstellungen"
+msgstr "E-Mail-Einstellungen"
#: builtin/log.c:1218
msgid "header"
@@ -6543,11 +6543,11 @@
#: builtin/log.c:1219
msgid "add email header"
-msgstr "fügt Email-Header hinzu"
+msgstr "fügt E-Mail-Header hinzu"
#: builtin/log.c:1220 builtin/log.c:1222
msgid "email"
-msgstr "Email"
+msgstr "E-Mail"
#: builtin/log.c:1220
msgid "add To: header"
@@ -6573,7 +6573,7 @@
#: builtin/log.c:1228
msgid "make first mail a reply to <message-id>"
-msgstr "macht aus erster Email eine Antwort zu <message-id>"
+msgstr "macht aus erster E-Mail eine Antwort zu <message-id>"
#: builtin/log.c:1229 builtin/log.c:1232
msgid "boundary"
@@ -6978,7 +6978,7 @@
#, c-format
msgid "Not committing merge; use 'git commit' to complete the merge.\n"
msgstr ""
-"Merge wurde nicht committet; benutzen Sie 'git commit' um den Merge "
+"Merge wurde nicht committet; benutzen Sie 'git commit', um den Merge "
"abzuschließen.\n"
#: builtin/merge.c:809
@@ -6990,7 +6990,7 @@
"Lines starting with '%c' will be ignored, and an empty message aborts\n"
"the commit.\n"
msgstr ""
-"Bitte geben Sie eine Commit-Beschreibung ein um zu erklären, warum dieser\n"
+"Bitte geben Sie eine Commit-Beschreibung ein, um zu erklären, warum dieser\n"
"Merge erforderlich ist, insbesondere wenn es einen aktualisierten\n"
"Upstream-Branch mit einem Thema-Branch zusammenführt.\n"
"\n"
@@ -7156,7 +7156,7 @@
#: builtin/merge.c:1539
#, c-format
msgid "Using the %s to prepare resolving by hand.\n"
-msgstr "Benutzen Sie \"%s\" um die Auflösung per Hand vorzubereiten.\n"
+msgstr "Benutzen Sie \"%s\", um die Auflösung per Hand vorzubereiten.\n"
#: builtin/merge.c:1551
#, c-format
@@ -7299,7 +7299,7 @@
msgstr ""
"Bitte merken Sie Ihre Änderungen in .gitmodules zum Commit vor oder "
"benutzen\n"
-"Sie \"stash\" um fortzufahren."
+"Sie \"stash\", um fortzufahren."
#: builtin/mv.c:156
#, c-format
@@ -7368,7 +7368,7 @@
#: builtin/name-rev.c:310
msgid "only use tags to name the commits"
-msgstr "verwendet nur Tags um die Commits zu benennen"
+msgstr "verwendet nur Tags, um die Commits zu benennen"
#: builtin/name-rev.c:312
msgid "only use refs matching <pattern>"
@@ -7621,7 +7621,7 @@
"existing notes"
msgstr ""
"Konnte Notizen nicht hinzufügen. Existierende Notizen für Objekt %s "
-"gefunden. Verwenden Sie '-f' um die existierenden Notizen zu überschreiben."
+"gefunden. Verwenden Sie '-f', um die existierenden Notizen zu überschreiben."
#: builtin/notes.c:460 builtin/notes.c:537
#, c-format
@@ -7649,7 +7649,7 @@
"existing notes"
msgstr ""
"Kann Notizen nicht kopieren. Existierende Notizen für Objekt %s gefunden. "
-"Verwenden Sie '-f' um die existierenden Notizen zu überschreiben."
+"Verwenden Sie '-f', um die existierenden Notizen zu überschreiben."
#: builtin/notes.c:543
#, c-format
@@ -9359,7 +9359,7 @@
"(use -f to force removal)"
msgstr ""
"\n"
-"(benutzen Sie -f um die Löschung zu erzwingen)"
+"(benutzen Sie -f, um die Löschung zu erzwingen)"
#: builtin/rm.c:240
msgid "the following file has changes staged in the index:"
@@ -9373,7 +9373,7 @@
"(use --cached to keep the file, or -f to force removal)"
msgstr ""
"\n"
-"(benutzen Sie --cached um die Datei zu behalten, oder -f um die Entfernung "
+"(benutzen Sie --cached, um die Datei zu behalten, oder -f, um die Entfernung "
"zu erzwingen)"
#: builtin/rm.c:252
@@ -9431,7 +9431,7 @@
#: builtin/shortlog.c:234
msgid "Show the email address of each author"
-msgstr "Zeigt die Email-Adresse von jedem Autor"
+msgstr "Zeigt die E-Mail-Adresse von jedem Autor"
#: builtin/shortlog.c:235
msgid "w[,i1[,i2]]"
@@ -9751,7 +9751,7 @@
#: builtin/tag.c:605
msgid "use another key to sign the tag"
-msgstr "verwendet einen anderen Schlüssel um das Tag zu signieren"
+msgstr "verwendet einen anderen Schlüssel, um das Tag zu signieren"
#: builtin/tag.c:606
msgid "replace the tag if exists"
@@ -10046,7 +10046,7 @@
msgstr ""
"'git help -a' und 'git help -g' listet verfügbare Unterkommandos und\n"
"einige Anleitungen zu Git-Konzepten auf. Benutzen Sie 'git help <Kommando>'\n"
-"oder 'git help <Konzept>' um mehr über ein spezifisches Kommando oder\n"
+"oder 'git help <Konzept>', um mehr über ein spezifisches Kommando oder\n"
"Konzept zu erfahren."
#: parse-options.h:143
@@ -10200,7 +10200,7 @@
#: git-am.sh:141
msgid "Using index info to reconstruct a base tree..."
msgstr ""
-"Verwende Informationen aus der Staging-Area um einen Basisverzeichnis "
+"Verwende Informationen aus der Staging-Area, um einen Basisverzeichnis "
"nachzustellen"
#: git-am.sh:156
@@ -10257,7 +10257,7 @@
"Use \"git am --abort\" to remove it."
msgstr ""
"Stray $dotest Verzeichnis gefunden.\n"
-"Benutzen Sie \"git am --abort\" um es zu entfernen."
+"Benutzen Sie \"git am --abort\", um es zu entfernen."
#: git-am.sh:535
msgid "Resolve operation not in progress, we are not resuming."
@@ -10284,7 +10284,7 @@
#: git-am.sh:732
msgid "Patch does not have a valid e-mail address."
-msgstr "Patch enthält keine gültige Email-Adresse."
+msgstr "Patch enthält keine gültige E-Mail-Adresse."
#: git-am.sh:779
msgid "cannot be interactive without stdin connected to a terminal."
@@ -10515,7 +10515,7 @@
msgstr ""
"\"pull\" ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben.\n"
"Bitte korrigieren Sie dies im Arbeitsverzeichnis und benutzen Sie dann \n"
-"'git add/rm <Datei>' um die Auflösung entsprechend zu markieren, oder\n"
+"'git add/rm <Datei>', um die Auflösung entsprechend zu markieren, oder\n"
"benutzen Sie 'git commit -a'."
#: git-pull.sh:25
@@ -11014,7 +11014,7 @@
"discard them"
msgstr ""
"Arbeitsverzeichnis von Submodul in '$displaypath' enthält lokale Änderungen; "
-"verwenden Sie '-f' um diese zu verwerfen"
+"verwenden Sie '-f', um diese zu verwerfen"
#: git-submodule.sh:701
#, sh-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/reachable.c new/git-2.1.2/reachable.c
--- old/git-2.1.1/reachable.c 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/reachable.c 2014-09-30 21:00:40.000000000 +0200
@@ -229,6 +229,9 @@
/* Add all external refs */
for_each_ref(add_one_ref, revs);
+ /* detached HEAD is not included in the list above */
+ head_ref(add_one_ref, revs);
+
/* Add all reflog info */
if (mark_reflog)
for_each_reflog(add_one_reflog, revs);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/remote-curl.c new/git-2.1.2/remote-curl.c
--- old/git-2.1.1/remote-curl.c 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/remote-curl.c 2014-09-30 21:00:40.000000000 +0200
@@ -863,6 +863,7 @@
int i, err;
struct argv_array args;
struct string_list_item *cas_option;
+ struct strbuf preamble = STRBUF_INIT;
argv_array_init(&args);
argv_array_pushl(&args, "send-pack", "--stateless-rpc", "--helper-status",
@@ -880,17 +881,22 @@
for_each_string_list_item(cas_option, &cas_options)
argv_array_push(&args, cas_option->string);
argv_array_push(&args, url.buf);
+
+ argv_array_push(&args, "--stdin");
for (i = 0; i < nr_spec; i++)
- argv_array_push(&args, specs[i]);
+ packet_buf_write(&preamble, "%s\n", specs[i]);
+ packet_buf_flush(&preamble);
memset(&rpc, 0, sizeof(rpc));
rpc.service_name = "git-receive-pack",
rpc.argv = args.argv;
+ rpc.stdin_preamble = &preamble;
err = rpc_service(&rpc, heads);
if (rpc.result.len)
write_or_die(1, rpc.result.buf, rpc.result.len);
strbuf_release(&rpc.result);
+ strbuf_release(&preamble);
argv_array_clear(&args);
return err;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/t/t1303-wacky-config.sh new/git-2.1.2/t/t1303-wacky-config.sh
--- old/git-2.1.1/t/t1303-wacky-config.sh 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/t/t1303-wacky-config.sh 2014-09-30 21:00:40.000000000 +0200
@@ -111,4 +111,24 @@
test_must_fail git config section.key
'
+test_expect_success '--add appends new value after existing empty value' '
+ cat >expect <<-\EOF &&
+
+
+ fool
+ roll
+ EOF
+ cp .git/config .git/config.old &&
+ test_when_finished "mv .git/config.old .git/config" &&
+ cat >.git/config <<-\EOF &&
+ [foo]
+ baz
+ baz =
+ baz = fool
+ EOF
+ git config --add foo.baz roll &&
+ git config --get-all foo.baz >output &&
+ test_cmp expect output
+'
+
test_done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/t/t1450-fsck.sh new/git-2.1.2/t/t1450-fsck.sh
--- old/git-2.1.1/t/t1450-fsck.sh 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/t/t1450-fsck.sh 2014-09-30 21:00:40.000000000 +0200
@@ -69,7 +69,7 @@
git update-ref refs/heads/bogus $cmt &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
- test_might_fail git fsck 2>out &&
+ test_must_fail git fsck 2>out &&
cat out &&
grep "$sha.*corrupt" out
'
@@ -101,7 +101,7 @@
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
- git fsck 2>out &&
+ test_must_fail git fsck 2>out &&
cat out &&
grep "error in commit $new" out
'
@@ -113,7 +113,7 @@
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
- git fsck 2>out &&
+ test_must_fail git fsck 2>out &&
cat out &&
grep "error in commit $new.* - bad name" out
'
@@ -125,7 +125,7 @@
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
- git fsck 2>out &&
+ test_must_fail git fsck 2>out &&
cat out &&
grep "error in commit $new.* - missing email" out
'
@@ -137,7 +137,7 @@
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
- git fsck 2>out &&
+ test_must_fail git fsck 2>out &&
cat out &&
grep "error in commit $new" out
'
@@ -151,11 +151,31 @@
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
- git fsck 2>out &&
+ test_must_fail git fsck 2>out &&
cat out &&
grep "error in commit $new.*integer overflow" out
'
+test_expect_success 'malformatted tree object' '
+ test_when_finished "git update-ref -d refs/tags/wrong" &&
+ test_when_finished "remove_object \$T" &&
+ T=$(
+ GIT_INDEX_FILE=test-index &&
+ export GIT_INDEX_FILE &&
+ rm -f test-index &&
+ >x &&
+ git add x &&
+ T=$(git write-tree) &&
+ (
+ git cat-file tree $T &&
+ git cat-file tree $T
+ ) |
+ git hash-object -w -t tree --stdin
+ ) &&
+ test_must_fail git fsck 2>out &&
+ grep "error in tree .*contains duplicate file entries" out
+'
+
test_expect_success 'tag pointing to nonexistent' '
cat >invalid-tag <<-\EOF &&
object ffffffffffffffffffffffffffffffffffffffff
@@ -282,4 +302,60 @@
)
'
+# create a static test repo which is broken by omitting
+# one particular object ($1, which is looked up via rev-parse
+# in the new repository).
+create_repo_missing () {
+ rm -rf missing &&
+ git init missing &&
+ (
+ cd missing &&
+ git commit -m one --allow-empty &&
+ mkdir subdir &&
+ echo content >subdir/file &&
+ git add subdir/file &&
+ git commit -m two &&
+ unrelated=$(echo unrelated | git hash-object --stdin -w) &&
+ git tag -m foo tag $unrelated &&
+ sha1=$(git rev-parse --verify "$1") &&
+ path=$(echo $sha1 | sed 's|..|&/|') &&
+ rm .git/objects/$path
+ )
+}
+
+test_expect_success 'fsck notices missing blob' '
+ create_repo_missing HEAD:subdir/file &&
+ test_must_fail git -C missing fsck
+'
+
+test_expect_success 'fsck notices missing subtree' '
+ create_repo_missing HEAD:subdir &&
+ test_must_fail git -C missing fsck
+'
+
+test_expect_success 'fsck notices missing root tree' '
+ create_repo_missing HEAD^{tree} &&
+ test_must_fail git -C missing fsck
+'
+
+test_expect_success 'fsck notices missing parent' '
+ create_repo_missing HEAD^ &&
+ test_must_fail git -C missing fsck
+'
+
+test_expect_success 'fsck notices missing tagged object' '
+ create_repo_missing tag^{blob} &&
+ test_must_fail git -C missing fsck
+'
+
+test_expect_success 'fsck notices ref pointing to missing commit' '
+ create_repo_missing HEAD &&
+ test_must_fail git -C missing fsck
+'
+
+test_expect_success 'fsck notices ref pointing to missing tag' '
+ create_repo_missing tag &&
+ test_must_fail git -C missing fsck
+'
+
test_done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/t/t4212-log-corrupt.sh new/git-2.1.2/t/t4212-log-corrupt.sh
--- old/git-2.1.1/t/t4212-log-corrupt.sh 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/t/t4212-log-corrupt.sh 2014-09-30 21:00:40.000000000 +0200
@@ -14,7 +14,7 @@
'
test_expect_success 'fsck notices broken commit' '
- git fsck 2>actual &&
+ test_must_fail git fsck 2>actual &&
test_i18ngrep invalid.author actual
'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/t/t5304-prune.sh new/git-2.1.2/t/t5304-prune.sh
--- old/git-2.1.1/t/t5304-prune.sh 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/t/t5304-prune.sh 2014-09-30 21:00:40.000000000 +0200
@@ -104,6 +104,28 @@
'
+test_expect_success 'prune: do not prune detached HEAD with no reflog' '
+
+ git checkout --detach --quiet &&
+ git commit --allow-empty -m "detached commit" &&
+ # verify that there is no reflogs
+ # (should be removed and disabled by previous test)
+ test ! -e .git/logs &&
+ git prune -n >prune_actual &&
+ : >prune_expected &&
+ test_cmp prune_actual prune_expected
+
+'
+
+test_expect_success 'prune: prune former HEAD after checking out branch' '
+
+ head_sha1=$(git rev-parse HEAD) &&
+ git checkout --quiet master &&
+ git prune -v >prune_actual &&
+ grep "$head_sha1" prune_actual
+
+'
+
test_expect_success 'prune: do not prune heads listed as an argument' '
: > file2 &&
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/t/t5408-send-pack-stdin.sh new/git-2.1.2/t/t5408-send-pack-stdin.sh
--- old/git-2.1.1/t/t5408-send-pack-stdin.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/git-2.1.2/t/t5408-send-pack-stdin.sh 2014-09-30 21:00:40.000000000 +0200
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+test_description='send-pack --stdin tests'
+. ./test-lib.sh
+
+create_ref () {
+ tree=$(git write-tree) &&
+ test_tick &&
+ commit=$(echo "$1" | git commit-tree $tree) &&
+ git update-ref "$1" $commit
+}
+
+clear_remote () {
+ rm -rf remote.git &&
+ git init --bare remote.git
+}
+
+verify_push () {
+ git rev-parse "$1" >expect &&
+ git --git-dir=remote.git rev-parse "${2:-$1}" >actual &&
+ test_cmp expect actual
+}
+
+test_expect_success 'setup refs' '
+ cat >refs <<-\EOF &&
+ refs/heads/A
+ refs/heads/C
+ refs/tags/D
+ refs/heads/B
+ refs/tags/E
+ EOF
+ for i in $(cat refs); do
+ create_ref $i || return 1
+ done
+'
+
+# sanity check our setup
+test_expect_success 'refs on cmdline' '
+ clear_remote &&
+ git send-pack remote.git $(cat refs) &&
+ for i in $(cat refs); do
+ verify_push $i || return 1
+ done
+'
+
+test_expect_success 'refs over stdin' '
+ clear_remote &&
+ git send-pack remote.git --stdin input &&
+ git send-pack remote.git --stdin input &&
+ git send-pack remote.git --stdin B input &&
+ test_must_fail git send-pack remote.git --stdin B:foo .git/packed-refs &&
+ run_with_limited_cmdline git push --mirror
+'
+
stop_httpd
test_done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/t/t9300-fast-import.sh new/git-2.1.2/t/t9300-fast-import.sh
--- old/git-2.1.1/t/t9300-fast-import.sh 2014-09-19 23:45:27.000000000 +0200
+++ new/git-2.1.2/t/t9300-fast-import.sh 2014-09-30 21:00:40.000000000 +0200
@@ -3017,4 +3017,108 @@
git rev-parse --verify refs/heads/not-to-delete
'
+###
+### series U (filedelete)
+###
+
+cat >input < $GIT_COMMITTER_DATE
+data <input < $GIT_COMMITTER_DATE
+data <expect <actual
+
+test_expect_success 'U: validate file delete result' '
+ compare_diff_raw expect actual
+'
+
+cat >input < $GIT_COMMITTER_DATE
+data <expect <actual
+
+test_expect_success 'U: validate directory delete result' '
+ compare_diff_raw expect actual
+'
+
+cat >input < $GIT_COMMITTER_DATE
+data <expect <actual
+
+test_expect_success 'U: validate root delete result' '
+ compare_diff_raw expect actual
+'
+
test_done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.1.1/version new/git-2.1.2/version
--- old/git-2.1.1/version 2014-09-19 23:45:28.000000000 +0200
+++ new/git-2.1.2/version 2014-09-30 21:00:41.000000000 +0200
@@ -1 +1 @@
-2.1.1
+2.1.2
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org