Hello community,
here is the log from the commit of package git for openSUSE:Factory checked in at 2014-08-05 21:10:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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-08-01 14:34:30.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.git.new/git.changes 2014-08-05 21:10:55.000000000 +0200
@@ -1,0 +2,6 @@
+Thu Jul 31 16:01:38 UTC 2014 - andreas.stieger@gmx.de
+
+- git 2.0.4:
+ * fix output of "git diff-tree" broken since 2.0.2
+
+-------------------------------------------------------------------
Old:
----
git-2.0.3.tar.xz
New:
----
git-2.0.4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ git.spec ++++++
--- /var/tmp/diff_new_pack.k7iK8U/_old 2014-08-05 21:10:57.000000000 +0200
+++ /var/tmp/diff_new_pack.k7iK8U/_new 2014-08-05 21:10:57.000000000 +0200
@@ -20,7 +20,7 @@
%define _fwdefdir /etc/sysconfig/SuSEfirewall2.d/services
Name: git
-Version: 2.0.3
+Version: 2.0.4
Release: 0
Summary: Fast, scalable, distributed revision control system
License: GPL-2.0
++++++ git-2.0.3.tar.xz -> git-2.0.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/Documentation/RelNotes/2.0.4.txt new/git-2.0.4/Documentation/RelNotes/2.0.4.txt
--- old/git-2.0.3/Documentation/RelNotes/2.0.4.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/git-2.0.4/Documentation/RelNotes/2.0.4.txt 2014-07-31 00:10:29.000000000 +0200
@@ -0,0 +1,5 @@
+Git v2.0.4 Release Notes
+========================
+
+ * An earlier update to v2.0.2 broken output from "git diff-tree",
+ which is fixed in this release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/Documentation/git.txt new/git-2.0.4/Documentation/git.txt
--- old/git-2.0.3/Documentation/git.txt 2014-07-24 19:25:27.000000000 +0200
+++ new/git-2.0.4/Documentation/git.txt 2014-07-31 00:10:29.000000000 +0200
@@ -43,9 +43,10 @@
branch of the `git.git` repository.
Documentation for older releases are available here:
-* link:v2.0.3/git.html[documentation for release 2.0.3]
+* link:v2.0.4/git.html[documentation for release 2.0.4]
* release notes for
+ link:RelNotes/2.0.4.txt[2.0.4],
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],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/GIT-VERSION-GEN new/git-2.0.4/GIT-VERSION-GEN
--- old/git-2.0.3/GIT-VERSION-GEN 2014-07-24 19:25:27.000000000 +0200
+++ new/git-2.0.4/GIT-VERSION-GEN 2014-07-31 00:10:29.000000000 +0200
@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
-DEF_VER=v2.0.3
+DEF_VER=v2.0.4
LF='
'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/RelNotes new/git-2.0.4/RelNotes
--- old/git-2.0.3/RelNotes 2014-08-05 21:10:58.000000000 +0200
+++ new/git-2.0.4/RelNotes 2014-08-05 21:10:58.000000000 +0200
@@ -1 +1 @@
-symbolic link to Documentation/RelNotes/2.0.3.txt
+symbolic link to Documentation/RelNotes/2.0.4.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/alloc.c new/git-2.0.4/alloc.c
--- old/git-2.0.3/alloc.c 2014-07-24 19:25:27.000000000 +0200
+++ new/git-2.0.4/alloc.c 2014-07-31 00:10:29.000000000 +0200
@@ -18,25 +18,6 @@
#define BLOCKING 1024
-#define DEFINE_ALLOCATOR(name, type) \
-static unsigned int name##_allocs; \
-void *alloc_##name##_node(void) \
-{ \
- static int nr; \
- static type *block; \
- void *ret; \
- \
- if (!nr) { \
- nr = BLOCKING; \
- block = xmalloc(BLOCKING * sizeof(type)); \
- } \
- nr--; \
- name##_allocs++; \
- ret = block++; \
- memset(ret, 0, sizeof(type)); \
- return ret; \
-}
-
union any_object {
struct object object;
struct blob blob;
@@ -45,17 +26,73 @@
struct tag tag;
};
-DEFINE_ALLOCATOR(blob, struct blob)
-DEFINE_ALLOCATOR(tree, struct tree)
-DEFINE_ALLOCATOR(raw_commit, struct commit)
-DEFINE_ALLOCATOR(tag, struct tag)
-DEFINE_ALLOCATOR(object, union any_object)
+struct alloc_state {
+ int count; /* total number of nodes allocated */
+ int nr; /* number of nodes left in current allocation */
+ void *p; /* first free node in current allocation */
+};
+
+static inline void *alloc_node(struct alloc_state *s, size_t node_size)
+{
+ void *ret;
+
+ if (!s->nr) {
+ s->nr = BLOCKING;
+ s->p = xmalloc(BLOCKING * node_size);
+ }
+ s->nr--;
+ s->count++;
+ ret = s->p;
+ s->p = (char *)s->p + node_size;
+ memset(ret, 0, node_size);
+ return ret;
+}
+
+static struct alloc_state blob_state;
+void *alloc_blob_node(void)
+{
+ struct blob *b = alloc_node(&blob_state, sizeof(struct blob));
+ b->object.type = OBJ_BLOB;
+ return b;
+}
+
+static struct alloc_state tree_state;
+void *alloc_tree_node(void)
+{
+ struct tree *t = alloc_node(&tree_state, sizeof(struct tree));
+ t->object.type = OBJ_TREE;
+ return t;
+}
+
+static struct alloc_state tag_state;
+void *alloc_tag_node(void)
+{
+ struct tag *t = alloc_node(&tag_state, sizeof(struct tag));
+ t->object.type = OBJ_TAG;
+ return t;
+}
+
+static struct alloc_state object_state;
+void *alloc_object_node(void)
+{
+ struct object *obj = alloc_node(&object_state, sizeof(union any_object));
+ obj->type = OBJ_NONE;
+ return obj;
+}
+
+static struct alloc_state commit_state;
+
+unsigned int alloc_commit_index(void)
+{
+ static unsigned int count;
+ return count++;
+}
void *alloc_commit_node(void)
{
- static int commit_count;
- struct commit *c = alloc_raw_commit_node();
- c->index = commit_count++;
+ struct commit *c = alloc_node(&commit_state, sizeof(struct commit));
+ c->object.type = OBJ_COMMIT;
+ c->index = alloc_commit_index();
return c;
}
@@ -66,13 +103,13 @@
}
#define REPORT(name, type) \
- report(#name, name##_allocs, name##_allocs * sizeof(type) >> 10)
+ report(#name, name##_state.count, name##_state.count * sizeof(type) >> 10)
void alloc_report(void)
{
REPORT(blob, struct blob);
REPORT(tree, struct tree);
- REPORT(raw_commit, struct commit);
+ REPORT(commit, struct commit);
REPORT(tag, struct tag);
REPORT(object, union any_object);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/blob.c new/git-2.0.4/blob.c
--- old/git-2.0.3/blob.c 2014-07-24 19:25:27.000000000 +0200
+++ new/git-2.0.4/blob.c 2014-07-31 00:10:29.000000000 +0200
@@ -7,15 +7,8 @@
{
struct object *obj = lookup_object(sha1);
if (!obj)
- return create_object(sha1, OBJ_BLOB, alloc_blob_node());
- if (!obj->type)
- obj->type = OBJ_BLOB;
- if (obj->type != OBJ_BLOB) {
- error("Object %s is a %s, not a blob",
- sha1_to_hex(sha1), typename(obj->type));
- return NULL;
- }
- return (struct blob *) obj;
+ return create_object(sha1, alloc_blob_node());
+ return object_as_type(obj, OBJ_BLOB, 0);
}
int parse_blob_buffer(struct blob *item, void *buffer, unsigned long size)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/builtin/blame.c new/git-2.0.4/builtin/blame.c
--- old/git-2.0.3/builtin/blame.c 2014-07-24 19:25:27.000000000 +0200
+++ new/git-2.0.4/builtin/blame.c 2014-07-31 00:10:29.000000000 +0200
@@ -2041,7 +2041,6 @@
commit = alloc_commit_node();
commit->object.parsed = 1;
commit->date = now;
- commit->object.type = OBJ_COMMIT;
parent_tail = &commit->parents;
if (!resolve_ref_unsafe("HEAD", head_sha1, 1, NULL))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/builtin/diff-tree.c new/git-2.0.4/builtin/diff-tree.c
--- old/git-2.0.3/builtin/diff-tree.c 2014-07-24 19:25:27.000000000 +0200
+++ new/git-2.0.4/builtin/diff-tree.c 2014-07-31 00:10:29.000000000 +0200
@@ -72,9 +72,7 @@
line[len-1] = 0;
if (get_sha1_hex(line, sha1))
return -1;
- obj = lookup_unknown_object(sha1);
- if (!obj || !obj->parsed)
- obj = parse_object(sha1);
+ obj = parse_object(sha1);
if (!obj)
return -1;
if (obj->type == OBJ_COMMIT)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/cache.h new/git-2.0.4/cache.h
--- old/git-2.0.3/cache.h 2014-07-24 19:25:27.000000000 +0200
+++ new/git-2.0.4/cache.h 2014-07-31 00:10:29.000000000 +0200
@@ -1354,6 +1354,7 @@
extern void *alloc_tag_node(void);
extern void *alloc_object_node(void);
extern void alloc_report(void);
+extern unsigned int alloc_commit_index(void);
/* trace.c */
__attribute__((format (printf, 1, 2)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/commit.c new/git-2.0.4/commit.c
--- old/git-2.0.3/commit.c 2014-07-24 19:25:27.000000000 +0200
+++ new/git-2.0.4/commit.c 2014-07-31 00:10:29.000000000 +0200
@@ -18,19 +18,6 @@
const char *commit_type = "commit";
-static struct commit *check_commit(struct object *obj,
- const unsigned char *sha1,
- int quiet)
-{
- if (obj->type != OBJ_COMMIT) {
- if (!quiet)
- error("Object %s is a %s, not a commit",
- sha1_to_hex(sha1), typename(obj->type));
- return NULL;
- }
- return (struct commit *) obj;
-}
-
struct commit *lookup_commit_reference_gently(const unsigned char *sha1,
int quiet)
{
@@ -38,7 +25,7 @@
if (!obj)
return NULL;
- return check_commit(obj, sha1, quiet);
+ return object_as_type(obj, OBJ_COMMIT, quiet);
}
struct commit *lookup_commit_reference(const unsigned char *sha1)
@@ -61,13 +48,9 @@
struct commit *lookup_commit(const unsigned char *sha1)
{
struct object *obj = lookup_object(sha1);
- if (!obj) {
- struct commit *c = alloc_commit_node();
- return create_object(sha1, OBJ_COMMIT, c);
- }
- if (!obj->type)
- obj->type = OBJ_COMMIT;
- return check_commit(obj, sha1, 0);
+ if (!obj)
+ return create_object(sha1, alloc_commit_node());
+ return object_as_type(obj, OBJ_COMMIT, 0);
}
struct commit *lookup_commit_reference_by_name(const char *name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-2.0.3/configure new/git-2.0.4/configure
--- old/git-2.0.3/configure 2014-07-24 19:25:27.000000000 +0200
+++ new/git-2.0.4/configure 2014-07-31 00:10:29.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for git 2.0.3.
+# Generated by GNU Autoconf 2.68 for git 2.0.4.
#
# Report bugs to