mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 10:03:43 +00:00
commit
5b78696334
@ -167,6 +167,23 @@ GIT_EXTERN(int) git_object_typeisloose(git_otype type);
|
|||||||
*/
|
*/
|
||||||
GIT_EXTERN(size_t) git_object__size(git_otype type);
|
GIT_EXTERN(size_t) git_object__size(git_otype type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recursively peel an object until an object of the specified
|
||||||
|
* type is met
|
||||||
|
*
|
||||||
|
* The retrieved `peeled` object is owned by the repository
|
||||||
|
* and should be closed with the `git_object_free` method.
|
||||||
|
*
|
||||||
|
* @param peeled Pointer to the peeled git_object
|
||||||
|
* @param object The object to be processed
|
||||||
|
* @param target_type The type of the requested object
|
||||||
|
* @return 0 or an error code
|
||||||
|
*/
|
||||||
|
GIT_EXTERN(int) git_object_peel(
|
||||||
|
git_object **peeled,
|
||||||
|
git_object *object,
|
||||||
|
git_otype target_type);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
GIT_END_DECL
|
GIT_END_DECL
|
||||||
|
|
||||||
|
69
src/object.c
69
src/object.c
@ -333,3 +333,72 @@ int git_object__resolve_to_type(git_object **obj, git_otype type)
|
|||||||
*obj = scan;
|
*obj = scan;
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int dereference_object(git_object **dereferenced, git_object *obj)
|
||||||
|
{
|
||||||
|
git_otype type = git_object_type(obj);
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case GIT_OBJ_COMMIT:
|
||||||
|
return git_commit_tree((git_tree **)dereferenced, (git_commit*)obj);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GIT_OBJ_TAG:
|
||||||
|
return git_tag_target(dereferenced, (git_tag*)obj);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return GIT_ENOTFOUND;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int peel_error(int error, const char* msg)
|
||||||
|
{
|
||||||
|
giterr_set(GITERR_INVALID, "The given object cannot be peeled - %s", msg);
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
int git_object_peel(
|
||||||
|
git_object **peeled,
|
||||||
|
git_object *object,
|
||||||
|
git_otype target_type)
|
||||||
|
{
|
||||||
|
git_object *source, *deref = NULL;
|
||||||
|
|
||||||
|
assert(object);
|
||||||
|
|
||||||
|
if (git_object_type(object) == target_type)
|
||||||
|
return git_object__dup(peeled, object);
|
||||||
|
|
||||||
|
if (target_type == GIT_OBJ_BLOB
|
||||||
|
|| target_type == GIT_OBJ_ANY)
|
||||||
|
return peel_error(GIT_EAMBIGUOUS, "Ambiguous target type");
|
||||||
|
|
||||||
|
if (git_object_type(object) == GIT_OBJ_BLOB)
|
||||||
|
return peel_error(GIT_ERROR, "A blob cannot be dereferenced");
|
||||||
|
|
||||||
|
source = object;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
if (dereference_object(&deref, source) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (source != object)
|
||||||
|
git_object_free(source);
|
||||||
|
|
||||||
|
if (git_object_type(deref) == target_type) {
|
||||||
|
*peeled = deref;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
source = deref;
|
||||||
|
deref = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if (source != object)
|
||||||
|
git_object_free(source);
|
||||||
|
git_object_free(deref);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
@ -98,6 +98,13 @@ struct git_repository {
|
|||||||
* export */
|
* export */
|
||||||
void git_object__free(void *object);
|
void git_object__free(void *object);
|
||||||
|
|
||||||
|
GIT_INLINE(int) git_object__dup(git_object **dest, git_object *source)
|
||||||
|
{
|
||||||
|
git_cached_obj_incref(source);
|
||||||
|
*dest = source;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int git_object__resolve_to_type(git_object **obj, git_otype type);
|
int git_object__resolve_to_type(git_object **obj, git_otype type);
|
||||||
|
|
||||||
int git_oid__parse(git_oid *oid, const char **buffer_out, const char *buffer_end, const char *header);
|
int git_oid__parse(git_oid *oid, const char **buffer_out, const char *buffer_end, const char *header);
|
||||||
|
1072
src/revparse.c
1072
src/revparse.c
File diff suppressed because it is too large
Load Diff
79
tests-clar/object/peel.c
Normal file
79
tests-clar/object/peel.c
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
#include "clar_libgit2.h"
|
||||||
|
|
||||||
|
static git_repository *g_repo;
|
||||||
|
|
||||||
|
void test_object_peel__initialize(void)
|
||||||
|
{
|
||||||
|
cl_git_pass(git_repository_open(&g_repo, cl_fixture("testrepo.git")));
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_object_peel__cleanup(void)
|
||||||
|
{
|
||||||
|
git_repository_free(g_repo);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void assert_peel(const char* expected_sha, const char *sha, git_otype requested_type)
|
||||||
|
{
|
||||||
|
git_oid oid, expected_oid;
|
||||||
|
git_object *obj;
|
||||||
|
git_object *peeled;
|
||||||
|
|
||||||
|
cl_git_pass(git_oid_fromstr(&oid, sha));
|
||||||
|
cl_git_pass(git_object_lookup(&obj, g_repo, &oid, GIT_OBJ_ANY));
|
||||||
|
|
||||||
|
cl_git_pass(git_object_peel(&peeled, obj, requested_type));
|
||||||
|
|
||||||
|
cl_git_pass(git_oid_fromstr(&expected_oid, expected_sha));
|
||||||
|
cl_assert_equal_i(0, git_oid_cmp(&expected_oid, git_object_id(peeled)));
|
||||||
|
|
||||||
|
git_object_free(peeled);
|
||||||
|
git_object_free(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void assert_peel_error(int error, const char *sha, git_otype requested_type)
|
||||||
|
{
|
||||||
|
git_oid oid;
|
||||||
|
git_object *obj;
|
||||||
|
git_object *peeled;
|
||||||
|
|
||||||
|
cl_git_pass(git_oid_fromstr(&oid, sha));
|
||||||
|
cl_git_pass(git_object_lookup(&obj, g_repo, &oid, GIT_OBJ_ANY));
|
||||||
|
|
||||||
|
cl_assert_equal_i(error, git_object_peel(&peeled, obj, requested_type));
|
||||||
|
|
||||||
|
git_object_free(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_object_peel__peeling_an_object_into_its_own_type_returns_another_instance_of_it(void)
|
||||||
|
{
|
||||||
|
assert_peel("e90810b8df3e80c413d903f631643c716887138d", "e90810b8df3e80c413d903f631643c716887138d", GIT_OBJ_COMMIT);
|
||||||
|
assert_peel("7b4384978d2493e851f9cca7858815fac9b10980", "7b4384978d2493e851f9cca7858815fac9b10980", GIT_OBJ_TAG);
|
||||||
|
assert_peel("53fc32d17276939fc79ed05badaef2db09990016", "53fc32d17276939fc79ed05badaef2db09990016", GIT_OBJ_TREE);
|
||||||
|
assert_peel("0266163a49e280c4f5ed1e08facd36a2bd716bcf", "0266163a49e280c4f5ed1e08facd36a2bd716bcf", GIT_OBJ_BLOB);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_object_peel__can_peel_a_tag(void)
|
||||||
|
{
|
||||||
|
assert_peel("e90810b8df3e80c413d903f631643c716887138d", "7b4384978d2493e851f9cca7858815fac9b10980", GIT_OBJ_COMMIT);
|
||||||
|
assert_peel("53fc32d17276939fc79ed05badaef2db09990016", "7b4384978d2493e851f9cca7858815fac9b10980", GIT_OBJ_TREE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_object_peel__can_peel_a_commit(void)
|
||||||
|
{
|
||||||
|
assert_peel("53fc32d17276939fc79ed05badaef2db09990016", "e90810b8df3e80c413d903f631643c716887138d", GIT_OBJ_TREE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_object_peel__cannot_peel_a_tree(void)
|
||||||
|
{
|
||||||
|
assert_peel_error(GIT_EAMBIGUOUS, "53fc32d17276939fc79ed05badaef2db09990016", GIT_OBJ_BLOB);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_object_peel__cannot_peel_a_blob(void)
|
||||||
|
{
|
||||||
|
assert_peel_error(GIT_ERROR, "0266163a49e280c4f5ed1e08facd36a2bd716bcf", GIT_OBJ_COMMIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_object_peel__cannot_target_any_object(void)
|
||||||
|
{
|
||||||
|
assert_peel_error(GIT_EAMBIGUOUS, "e90810b8df3e80c413d903f631643c716887138d", GIT_OBJ_ANY);
|
||||||
|
}
|
@ -74,7 +74,11 @@ void test_refs_revparse__shas(void)
|
|||||||
|
|
||||||
void test_refs_revparse__head(void)
|
void test_refs_revparse__head(void)
|
||||||
{
|
{
|
||||||
|
test_object("", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
test_object("HEAD", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
test_object("HEAD", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
|
test_object("HEAD^0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
|
test_object("HEAD~0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
|
test_object("master", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_refs_revparse__full_refs(void)
|
void test_refs_revparse__full_refs(void)
|
||||||
@ -99,12 +103,18 @@ void test_refs_revparse__describe_output(void)
|
|||||||
|
|
||||||
void test_refs_revparse__nth_parent(void)
|
void test_refs_revparse__nth_parent(void)
|
||||||
{
|
{
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "be3563a^-1"));
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "^"));
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "be3563a^{tree}^"));
|
||||||
|
|
||||||
test_object("be3563a^1", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
test_object("be3563a^1", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
||||||
test_object("be3563a^", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
test_object("be3563a^", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
||||||
test_object("be3563a^2", "c47800c7266a2be04c571c04d5a6614691ea99bd");
|
test_object("be3563a^2", "c47800c7266a2be04c571c04d5a6614691ea99bd");
|
||||||
test_object("be3563a^1^1", "4a202b346bb0fb0db7eff3cffeb3c70babbd2045");
|
test_object("be3563a^1^1", "4a202b346bb0fb0db7eff3cffeb3c70babbd2045");
|
||||||
|
test_object("be3563a^^", "4a202b346bb0fb0db7eff3cffeb3c70babbd2045");
|
||||||
test_object("be3563a^2^1", "5b5b025afb0b4c913b4c338a42934a3863bf3644");
|
test_object("be3563a^2^1", "5b5b025afb0b4c913b4c338a42934a3863bf3644");
|
||||||
test_object("be3563a^0", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
|
test_object("be3563a^0", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
|
||||||
|
test_object("be3563a^{commit}^", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
||||||
|
|
||||||
test_object("be3563a^42", NULL);
|
test_object("be3563a^42", NULL);
|
||||||
}
|
}
|
||||||
@ -113,34 +123,56 @@ void test_refs_revparse__not_tag(void)
|
|||||||
{
|
{
|
||||||
test_object("point_to_blob^{}", "1385f264afb75a56a5bec74243be9b367ba4ca08");
|
test_object("point_to_blob^{}", "1385f264afb75a56a5bec74243be9b367ba4ca08");
|
||||||
test_object("wrapped_tag^{}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
test_object("wrapped_tag^{}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
|
test_object("master^{}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
|
test_object("master^{tree}^{}", "944c0f6e4dfa41595e6eb3ceecdb14f50fe18162");
|
||||||
|
test_object("e90810b^{}", "e90810b8df3e80c413d903f631643c716887138d");
|
||||||
|
test_object("tags/e90810b^{}", "e90810b8df3e80c413d903f631643c716887138d");
|
||||||
|
test_object("e908^{}", "e90810b8df3e80c413d903f631643c716887138d");
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_refs_revparse__to_type(void)
|
void test_refs_revparse__to_type(void)
|
||||||
{
|
{
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "wrapped_tag^{blob}"));
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "wrapped_tag^{trip}"));
|
||||||
|
|
||||||
test_object("wrapped_tag^{commit}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
test_object("wrapped_tag^{commit}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
test_object("wrapped_tag^{tree}", "944c0f6e4dfa41595e6eb3ceecdb14f50fe18162");
|
test_object("wrapped_tag^{tree}", "944c0f6e4dfa41595e6eb3ceecdb14f50fe18162");
|
||||||
test_object("point_to_blob^{blob}", "1385f264afb75a56a5bec74243be9b367ba4ca08");
|
test_object("point_to_blob^{blob}", "1385f264afb75a56a5bec74243be9b367ba4ca08");
|
||||||
|
test_object("master^{commit}^{commit}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
cl_git_fail(git_revparse_single(&g_obj, g_repo, "wrapped_tag^{blob}"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_refs_revparse__linear_history(void)
|
void test_refs_revparse__linear_history(void)
|
||||||
{
|
{
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "~"));
|
||||||
cl_git_fail(git_revparse_single(&g_obj, g_repo, "foo~bar"));
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "foo~bar"));
|
||||||
cl_git_fail(git_revparse_single(&g_obj, g_repo, "master~bar"));
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "master~bar"));
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "master~-1"));
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "master~0bar"));
|
||||||
|
|
||||||
test_object("master~0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
test_object("master~0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
|
||||||
test_object("master~1", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
|
test_object("master~1", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
|
||||||
test_object("master~2", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
test_object("master~2", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
||||||
test_object("master~1~1", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
test_object("master~1~1", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
||||||
|
test_object("master~~", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_refs_revparse__chaining(void)
|
void test_refs_revparse__chaining(void)
|
||||||
{
|
{
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "master@{0}@{0}"));
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "@{u}@{-1}"));
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "@{-1}@{-1}"));
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "@{-3}@{0}"));
|
||||||
|
|
||||||
|
test_object("master@{0}~1^1", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
||||||
|
test_object("@{u}@{0}", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
|
||||||
|
test_object("@{-1}@{0}", "a4a7dce85cf63874e984719f4fdd239f5145052f");
|
||||||
|
test_object("@{-4}@{1}", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
|
||||||
test_object("master~1^1", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
test_object("master~1^1", "9fd738e8f7967c078dceed8190330fc8648ee56a");
|
||||||
test_object("master~1^2", "c47800c7266a2be04c571c04d5a6614691ea99bd");
|
test_object("master~1^2", "c47800c7266a2be04c571c04d5a6614691ea99bd");
|
||||||
test_object("master^1^2~1", "5b5b025afb0b4c913b4c338a42934a3863bf3644");
|
test_object("master^1^2~1", "5b5b025afb0b4c913b4c338a42934a3863bf3644");
|
||||||
|
test_object("master^^2^", "5b5b025afb0b4c913b4c338a42934a3863bf3644");
|
||||||
test_object("master^1^1^1^1^1", "8496071c1b46c854b31185ea97743be6a8774479");
|
test_object("master^1^1^1^1^1", "8496071c1b46c854b31185ea97743be6a8774479");
|
||||||
|
test_object("master^^1^2^1", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_refs_revparse__upstream(void)
|
void test_refs_revparse__upstream(void)
|
||||||
@ -158,6 +190,10 @@ void test_refs_revparse__upstream(void)
|
|||||||
void test_refs_revparse__ordinal(void)
|
void test_refs_revparse__ordinal(void)
|
||||||
{
|
{
|
||||||
cl_git_fail(git_revparse_single(&g_obj, g_repo, "master@{-2}"));
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "master@{-2}"));
|
||||||
|
|
||||||
|
/* TODO: make the test below actually fail
|
||||||
|
* cl_git_fail(git_revparse_single(&g_obj, g_repo, "master@{1a}"));
|
||||||
|
*/
|
||||||
|
|
||||||
test_object("nope@{0}", NULL);
|
test_object("nope@{0}", NULL);
|
||||||
test_object("master@{31415}", NULL);
|
test_object("master@{31415}", NULL);
|
||||||
@ -177,6 +213,7 @@ void test_refs_revparse__previous_head(void)
|
|||||||
{
|
{
|
||||||
cl_git_fail(git_revparse_single(&g_obj, g_repo, "@{-xyz}"));
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "@{-xyz}"));
|
||||||
cl_git_fail(git_revparse_single(&g_obj, g_repo, "@{-0}"));
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "@{-0}"));
|
||||||
|
cl_git_fail(git_revparse_single(&g_obj, g_repo, "@{-1b}"));
|
||||||
|
|
||||||
test_object("@{-42}", NULL);
|
test_object("@{-42}", NULL);
|
||||||
|
|
||||||
@ -353,6 +390,7 @@ void test_refs_revparse__colon(void)
|
|||||||
test_object(":/one", "c47800c7266a2be04c571c04d5a6614691ea99bd");
|
test_object(":/one", "c47800c7266a2be04c571c04d5a6614691ea99bd");
|
||||||
test_object(":/packed commit t", "41bc8c69075bbdb46c5c6f0566cc8cc5b46e8bd9");
|
test_object(":/packed commit t", "41bc8c69075bbdb46c5c6f0566cc8cc5b46e8bd9");
|
||||||
test_object("test/master^2:branch_file.txt", "45b983be36b73c0788dc9cbcb76cbb80fc7bb057");
|
test_object("test/master^2:branch_file.txt", "45b983be36b73c0788dc9cbcb76cbb80fc7bb057");
|
||||||
|
test_object("test/master@{1}:branch_file.txt", "3697d64be941a53d4ae8f6a271e4e3fa56b022cc");
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_refs_revparse__disambiguation(void)
|
void test_refs_revparse__disambiguation(void)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
0000000000000000000000000000000000000000 be3563ae3f795b2b4353bcce3a527ad0a4f7f644 Ben Straub <bstraub@github.com> 1335806563 -0700 clone: from /Users/ben/src/libgit2/tests/resources/testrepo.git
|
0000000000000000000000000000000000000000 be3563ae3f795b2b4353bcce3a527ad0a4f7f644 Ben Straub <bstraub@github.com> 1335806563 -0700 clone: from /Users/ben/src/libgit2/tests/resources/testrepo.git
|
||||||
be3563ae3f795b2b4353bcce3a527ad0a4f7f644 a65fedf39aefe402d3bb6e24df4d4f5fe4547750 Ben Straub <bstraub@github.com> 1335806603 -0900 commit:
|
be3563ae3f795b2b4353bcce3a527ad0a4f7f644 a65fedf39aefe402d3bb6e24df4d4f5fe4547750 Ben Straub <bstraub@github.com> 1335806603 -0900 commit:
|
||||||
|
a65fedf39aefe402d3bb6e24df4d4f5fe4547750 5b5b025afb0b4c913b4c338a42934a3863bf3644 Ben Straub <bstraub@github.com> 1335806604 -0900 checkout: moving from master to 5b5b025
|
||||||
|
5b5b025afb0b4c913b4c338a42934a3863bf3644 a65fedf39aefe402d3bb6e24df4d4f5fe4547750 Ben Straub <bstraub@github.com> 1335806605 -0900 checkout: moving from 5b5b025 to master
|
||||||
a65fedf39aefe402d3bb6e24df4d4f5fe4547750 c47800c7266a2be04c571c04d5a6614691ea99bd Ben Straub <bstraub@github.com> 1335806608 -0900 checkout: moving from master to br2
|
a65fedf39aefe402d3bb6e24df4d4f5fe4547750 c47800c7266a2be04c571c04d5a6614691ea99bd Ben Straub <bstraub@github.com> 1335806608 -0900 checkout: moving from master to br2
|
||||||
c47800c7266a2be04c571c04d5a6614691ea99bd a4a7dce85cf63874e984719f4fdd239f5145052f Ben Straub <bstraub@github.com> 1335806617 -0900 commit: checking in
|
c47800c7266a2be04c571c04d5a6614691ea99bd a4a7dce85cf63874e984719f4fdd239f5145052f Ben Straub <bstraub@github.com> 1335806617 -0900 commit: checking in
|
||||||
a4a7dce85cf63874e984719f4fdd239f5145052f a65fedf39aefe402d3bb6e24df4d4f5fe4547750 Ben Straub <bstraub@github.com> 1335806621 -0900 checkout: moving from br2 to master
|
a4a7dce85cf63874e984719f4fdd239f5145052f a65fedf39aefe402d3bb6e24df4d4f5fe4547750 Ben Straub <bstraub@github.com> 1335806621 -0900 checkout: moving from br2 to master
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
0000000000000000000000000000000000000000 a65fedf39aefe402d3bb6e24df4d4f5fe4547750 Ben Straub <bstraub@github.com> 1335806565 -0800 update by push
|
||||||
|
a65fedf39aefe402d3bb6e24df4d4f5fe4547750 be3563ae3f795b2b4353bcce3a527ad0a4f7f644 Ben Straub <bstraub@github.com> 1335806688 -0800 update by push
|
Loading…
Reference in New Issue
Block a user