Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
cd2ed9f0
Commit
cd2ed9f0
authored
Apr 30, 2013
by
Vicent Martí
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1518 from arrbee/export-oid-comparison
Remove most inlines from the public API
parents
d76fb20e
203d5b0e
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
199 additions
and
120 deletions
+199
-120
include/git2/blob.h
+11
-17
include/git2/oid.h
+11
-13
include/git2/tag.h
+13
-18
include/git2/tree.h
+5
-15
src/attr.c
+1
-1
src/blob.c
+2
-0
src/checkout.c
+3
-3
src/clone.c
+3
-3
src/diff.c
+5
-5
src/diff_output.c
+2
-2
src/diff_tform.c
+1
-1
src/index.c
+1
-1
src/indexer.c
+2
-2
src/object.h
+12
-0
src/odb.c
+1
-1
src/oid.c
+32
-7
src/oid.h
+33
-0
src/pack.c
+3
-3
src/push.c
+1
-1
src/refs.c
+1
-1
src/refs.h
+1
-0
src/remote.c
+1
-1
src/tag.c
+2
-5
src/transports/local.c
+1
-1
src/tree.c
+2
-10
tests-clar/core/oid.c
+49
-9
No files found.
include/git2/blob.h
View file @
cd2ed9f0
...
@@ -29,10 +29,7 @@ GIT_BEGIN_DECL
...
@@ -29,10 +29,7 @@ GIT_BEGIN_DECL
* @param id identity of the blob to locate.
* @param id identity of the blob to locate.
* @return 0 or an error code
* @return 0 or an error code
*/
*/
GIT_INLINE
(
int
)
git_blob_lookup
(
git_blob
**
blob
,
git_repository
*
repo
,
const
git_oid
*
id
)
GIT_EXTERN
(
int
)
git_blob_lookup
(
git_blob
**
blob
,
git_repository
*
repo
,
const
git_oid
*
id
);
{
return
git_object_lookup
((
git_object
**
)
blob
,
repo
,
id
,
GIT_OBJ_BLOB
);
}
/**
/**
* Lookup a blob object from a repository,
* Lookup a blob object from a repository,
...
@@ -46,10 +43,7 @@ GIT_INLINE(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git
...
@@ -46,10 +43,7 @@ GIT_INLINE(int) git_blob_lookup(git_blob **blob, git_repository *repo, const git
* @param len the length of the short identifier
* @param len the length of the short identifier
* @return 0 or an error code
* @return 0 or an error code
*/
*/
GIT_INLINE
(
int
)
git_blob_lookup_prefix
(
git_blob
**
blob
,
git_repository
*
repo
,
const
git_oid
*
id
,
size_t
len
)
GIT_EXTERN
(
int
)
git_blob_lookup_prefix
(
git_blob
**
blob
,
git_repository
*
repo
,
const
git_oid
*
id
,
size_t
len
);
{
return
git_object_lookup_prefix
((
git_object
**
)
blob
,
repo
,
id
,
len
,
GIT_OBJ_BLOB
);
}
/**
/**
* Close an open blob
* Close an open blob
...
@@ -62,11 +56,7 @@ GIT_INLINE(int) git_blob_lookup_prefix(git_blob **blob, git_repository *repo, co
...
@@ -62,11 +56,7 @@ GIT_INLINE(int) git_blob_lookup_prefix(git_blob **blob, git_repository *repo, co
*
*
* @param blob the blob to close
* @param blob the blob to close
*/
*/
GIT_EXTERN
(
void
)
git_blob_free
(
git_blob
*
blob
);
GIT_INLINE
(
void
)
git_blob_free
(
git_blob
*
blob
)
{
git_object_free
((
git_object
*
)
blob
);
}
/**
/**
* Get the id of a blob.
* Get the id of a blob.
...
@@ -74,11 +64,15 @@ GIT_INLINE(void) git_blob_free(git_blob *blob)
...
@@ -74,11 +64,15 @@ GIT_INLINE(void) git_blob_free(git_blob *blob)
* @param blob a previously loaded blob.
* @param blob a previously loaded blob.
* @return SHA1 hash for this blob.
* @return SHA1 hash for this blob.
*/
*/
GIT_INLINE
(
const
git_oid
*
)
git_blob_id
(
const
git_blob
*
blob
)
GIT_EXTERN
(
const
git_oid
*
)
git_blob_id
(
const
git_blob
*
blob
);
{
return
git_object_id
((
const
git_object
*
)
blob
);
}
/**
* Get the repository that contains the blob.
*
* @param blob A previously loaded blob.
* @return Repository that contains this blob.
*/
GIT_EXTERN
(
git_repository
*
)
git_blob_owner
(
const
git_blob
*
blob
);
/**
/**
* Get a read-only buffer with the raw content of a blob.
* Get a read-only buffer with the raw content of a blob.
...
...
include/git2/oid.h
View file @
cd2ed9f0
...
@@ -145,19 +145,7 @@ GIT_EXTERN(void) git_oid_cpy(git_oid *out, const git_oid *src);
...
@@ -145,19 +145,7 @@ GIT_EXTERN(void) git_oid_cpy(git_oid *out, const git_oid *src);
* @param b second oid structure.
* @param b second oid structure.
* @return <0, 0, >0 if a < b, a == b, a > b.
* @return <0, 0, >0 if a < b, a == b, a > b.
*/
*/
GIT_INLINE
(
int
)
git_oid_cmp
(
const
git_oid
*
a
,
const
git_oid
*
b
)
GIT_EXTERN
(
int
)
git_oid_cmp
(
const
git_oid
*
a
,
const
git_oid
*
b
);
{
const
unsigned
char
*
sha1
=
a
->
id
;
const
unsigned
char
*
sha2
=
b
->
id
;
int
i
;
for
(
i
=
0
;
i
<
GIT_OID_RAWSZ
;
i
++
,
sha1
++
,
sha2
++
)
{
if
(
*
sha1
!=
*
sha2
)
return
*
sha1
-
*
sha2
;
}
return
0
;
}
/**
/**
* Compare two oid structures for equality
* Compare two oid structures for equality
...
@@ -193,6 +181,16 @@ GIT_EXTERN(int) git_oid_ncmp(const git_oid *a, const git_oid *b, size_t len);
...
@@ -193,6 +181,16 @@ GIT_EXTERN(int) git_oid_ncmp(const git_oid *a, const git_oid *b, size_t len);
GIT_EXTERN
(
int
)
git_oid_streq
(
const
git_oid
*
id
,
const
char
*
str
);
GIT_EXTERN
(
int
)
git_oid_streq
(
const
git_oid
*
id
,
const
char
*
str
);
/**
/**
* Compare an oid to an hex formatted object id.
*
* @param id oid structure.
* @param str input hex string of an object id.
* @return -1 if str is not valid, <0 if id sorts before str,
* 0 if id matches str, >0 if id sorts after str.
*/
GIT_EXTERN
(
int
)
git_oid_strcmp
(
const
git_oid
*
id
,
const
char
*
str
);
/**
* Check is an oid is all zeros.
* Check is an oid is all zeros.
*
*
* @return 1 if all zeros, 0 otherwise.
* @return 1 if all zeros, 0 otherwise.
...
...
include/git2/tag.h
View file @
cd2ed9f0
...
@@ -30,12 +30,8 @@ GIT_BEGIN_DECL
...
@@ -30,12 +30,8 @@ GIT_BEGIN_DECL
* @param id identity of the tag to locate.
* @param id identity of the tag to locate.
* @return 0 or an error code
* @return 0 or an error code
*/
*/
GIT_INLINE
(
int
)
git_tag_lookup
(
GIT_EXTERN
(
int
)
git_tag_lookup
(
git_tag
**
out
,
git_repository
*
repo
,
const
git_oid
*
id
)
git_tag
**
out
,
git_repository
*
repo
,
const
git_oid
*
id
);
{
return
git_object_lookup
(
(
git_object
**
)
out
,
repo
,
id
,
(
git_otype
)
GIT_OBJ_TAG
);
}
/**
/**
* Lookup a tag object from the repository,
* Lookup a tag object from the repository,
...
@@ -49,12 +45,8 @@ GIT_INLINE(int) git_tag_lookup(
...
@@ -49,12 +45,8 @@ GIT_INLINE(int) git_tag_lookup(
* @param len the length of the short identifier
* @param len the length of the short identifier
* @return 0 or an error code
* @return 0 or an error code
*/
*/
GIT_INLINE
(
int
)
git_tag_lookup_prefix
(
GIT_EXTERN
(
int
)
git_tag_lookup_prefix
(
git_tag
**
out
,
git_repository
*
repo
,
const
git_oid
*
id
,
size_t
len
)
git_tag
**
out
,
git_repository
*
repo
,
const
git_oid
*
id
,
size_t
len
);
{
return
git_object_lookup_prefix
(
(
git_object
**
)
out
,
repo
,
id
,
len
,
(
git_otype
)
GIT_OBJ_TAG
);
}
/**
/**
* Close an open tag
* Close an open tag
...
@@ -66,12 +58,7 @@ GIT_INLINE(int) git_tag_lookup_prefix(
...
@@ -66,12 +58,7 @@ GIT_INLINE(int) git_tag_lookup_prefix(
*
*
* @param tag the tag to close
* @param tag the tag to close
*/
*/
GIT_EXTERN
(
void
)
git_tag_free
(
git_tag
*
tag
);
GIT_INLINE
(
void
)
git_tag_free
(
git_tag
*
tag
)
{
git_object_free
((
git_object
*
)
tag
);
}
/**
/**
* Get the id of a tag.
* Get the id of a tag.
...
@@ -82,6 +69,14 @@ GIT_INLINE(void) git_tag_free(git_tag *tag)
...
@@ -82,6 +69,14 @@ GIT_INLINE(void) git_tag_free(git_tag *tag)
GIT_EXTERN
(
const
git_oid
*
)
git_tag_id
(
const
git_tag
*
tag
);
GIT_EXTERN
(
const
git_oid
*
)
git_tag_id
(
const
git_tag
*
tag
);
/**
/**
* Get the repository that contains the tag.
*
* @param tag A previously loaded tag.
* @return Repository that contains this tag.
*/
GIT_EXTERN
(
git_repository
*
)
git_tag_owner
(
const
git_tag
*
tag
);
/**
* Get the tagged object of a tag
* Get the tagged object of a tag
*
*
* This method performs a repository lookup for the
* This method performs a repository lookup for the
...
...
include/git2/tree.h
View file @
cd2ed9f0
...
@@ -29,11 +29,8 @@ GIT_BEGIN_DECL
...
@@ -29,11 +29,8 @@ GIT_BEGIN_DECL
* @param id Identity of the tree to locate.
* @param id Identity of the tree to locate.
* @return 0 or an error code
* @return 0 or an error code
*/
*/
GIT_INLINE
(
int
)
git_tree_lookup
(
GIT_EXTERN
(
int
)
git_tree_lookup
(
git_tree
**
out
,
git_repository
*
repo
,
const
git_oid
*
id
)
git_tree
**
out
,
git_repository
*
repo
,
const
git_oid
*
id
);
{
return
git_object_lookup
((
git_object
**
)
out
,
repo
,
id
,
GIT_OBJ_TREE
);
}
/**
/**
* Lookup a tree object from the repository,
* Lookup a tree object from the repository,
...
@@ -47,15 +44,11 @@ GIT_INLINE(int) git_tree_lookup(
...
@@ -47,15 +44,11 @@ GIT_INLINE(int) git_tree_lookup(
* @param len the length of the short identifier
* @param len the length of the short identifier
* @return 0 or an error code
* @return 0 or an error code
*/
*/
GIT_
INLINE
(
int
)
git_tree_lookup_prefix
(
GIT_
EXTERN
(
int
)
git_tree_lookup_prefix
(
git_tree
**
out
,
git_tree
**
out
,
git_repository
*
repo
,
git_repository
*
repo
,
const
git_oid
*
id
,
const
git_oid
*
id
,
size_t
len
)
size_t
len
);
{
return
git_object_lookup_prefix
(
(
git_object
**
)
out
,
repo
,
id
,
len
,
GIT_OBJ_TREE
);
}
/**
/**
* Close an open tree
* Close an open tree
...
@@ -67,10 +60,7 @@ GIT_INLINE(int) git_tree_lookup_prefix(
...
@@ -67,10 +60,7 @@ GIT_INLINE(int) git_tree_lookup_prefix(
*
*
* @param tree The tree to close
* @param tree The tree to close
*/
*/
GIT_INLINE
(
void
)
git_tree_free
(
git_tree
*
tree
)
GIT_EXTERN
(
void
)
git_tree_free
(
git_tree
*
tree
);
{
git_object_free
((
git_object
*
)
tree
);
}
/**
/**
* Get the id of a tree.
* Get the id of a tree.
...
...
src/attr.c
View file @
cd2ed9f0
...
@@ -312,7 +312,7 @@ static int load_attr_blob_from_index(
...
@@ -312,7 +312,7 @@ static int load_attr_blob_from_index(
entry
=
git_index_get_byindex
(
index
,
pos
);
entry
=
git_index_get_byindex
(
index
,
pos
);
if
(
old_oid
&&
git_oid_cmp
(
old_oid
,
&
entry
->
oid
)
==
0
)
if
(
old_oid
&&
git_oid_
_
cmp
(
old_oid
,
&
entry
->
oid
)
==
0
)
return
GIT_ENOTFOUND
;
return
GIT_ENOTFOUND
;
if
((
error
=
git_blob_lookup
(
blob
,
repo
,
&
entry
->
oid
))
<
0
)
if
((
error
=
git_blob_lookup
(
blob
,
repo
,
&
entry
->
oid
))
<
0
)
...
...
src/blob.c
View file @
cd2ed9f0
...
@@ -15,6 +15,8 @@
...
@@ -15,6 +15,8 @@
#include "filter.h"
#include "filter.h"
#include "buf_text.h"
#include "buf_text.h"
GIT_OBJECT__TYPED_FUNCTIONS
(
git_blob
,
GIT_OBJ_BLOB
)
const
void
*
git_blob_rawcontent
(
const
git_blob
*
blob
)
const
void
*
git_blob_rawcontent
(
const
git_blob
*
blob
)
{
{
assert
(
blob
);
assert
(
blob
);
...
...
src/checkout.c
View file @
cd2ed9f0
...
@@ -138,7 +138,7 @@ static bool checkout_is_workdir_modified(
...
@@ -138,7 +138,7 @@ static bool checkout_is_workdir_modified(
if
(
!
sm_oid
)
if
(
!
sm_oid
)
return
false
;
return
false
;
return
(
git_oid_cmp
(
&
baseitem
->
oid
,
sm_oid
)
!=
0
);
return
(
git_oid_
_
cmp
(
&
baseitem
->
oid
,
sm_oid
)
!=
0
);
}
}
/* Look at the cache to decide if the workdir is modified. If not,
/* Look at the cache to decide if the workdir is modified. If not,
...
@@ -149,7 +149,7 @@ static bool checkout_is_workdir_modified(
...
@@ -149,7 +149,7 @@ static bool checkout_is_workdir_modified(
if
(
wditem
->
mtime
.
seconds
==
ie
->
mtime
.
seconds
&&
if
(
wditem
->
mtime
.
seconds
==
ie
->
mtime
.
seconds
&&
wditem
->
mtime
.
nanoseconds
==
ie
->
mtime
.
nanoseconds
&&
wditem
->
mtime
.
nanoseconds
==
ie
->
mtime
.
nanoseconds
&&
wditem
->
file_size
==
ie
->
file_size
)
wditem
->
file_size
==
ie
->
file_size
)
return
(
git_oid_cmp
(
&
baseitem
->
oid
,
&
ie
->
oid
)
!=
0
);
return
(
git_oid_
_
cmp
(
&
baseitem
->
oid
,
&
ie
->
oid
)
!=
0
);
}
}
/* depending on where base is coming from, we may or may not know
/* depending on where base is coming from, we may or may not know
...
@@ -163,7 +163,7 @@ static bool checkout_is_workdir_modified(
...
@@ -163,7 +163,7 @@ static bool checkout_is_workdir_modified(
wditem
->
file_size
,
&
oid
)
<
0
)
wditem
->
file_size
,
&
oid
)
<
0
)
return
false
;
return
false
;
return
(
git_oid_cmp
(
&
baseitem
->
oid
,
&
oid
)
!=
0
);
return
(
git_oid_
_
cmp
(
&
baseitem
->
oid
,
&
oid
)
!=
0
);
}
}
#define CHECKOUT_ACTION_IF(FLAG,YES,NO) \
#define CHECKOUT_ACTION_IF(FLAG,YES,NO) \
...
...
src/clone.c
View file @
cd2ed9f0
...
@@ -132,14 +132,14 @@ static int reference_matches_remote_head(
...
@@ -132,14 +132,14 @@ static int reference_matches_remote_head(
return
0
;
return
0
;
}
}
if
(
git_oid_cmp
(
&
head_info
->
remote_head_oid
,
&
oid
)
==
0
)
{
if
(
git_oid_
_
cmp
(
&
head_info
->
remote_head_oid
,
&
oid
)
==
0
)
{
/* Determine the local reference name from the remote tracking one */
/* Determine the local reference name from the remote tracking one */
if
(
git_refspec_transform_l
(
if
(
git_refspec_transform_l
(
&
head_info
->
branchname
,
&
head_info
->
branchname
,
head_info
->
refspec
,
head_info
->
refspec
,
reference_name
)
<
0
)
reference_name
)
<
0
)
return
-
1
;
return
-
1
;
if
(
git_buf_len
(
&
head_info
->
branchname
)
>
0
)
{
if
(
git_buf_len
(
&
head_info
->
branchname
)
>
0
)
{
if
(
git_buf_sets
(
if
(
git_buf_sets
(
&
head_info
->
branchname
,
&
head_info
->
branchname
,
...
...
src/diff.c
View file @
cd2ed9f0
...
@@ -196,21 +196,21 @@ static git_diff_delta *diff_delta__last_for_item(
...
@@ -196,21 +196,21 @@ static git_diff_delta *diff_delta__last_for_item(
switch
(
delta
->
status
)
{
switch
(
delta
->
status
)
{
case
GIT_DELTA_UNMODIFIED
:
case
GIT_DELTA_UNMODIFIED
:
case
GIT_DELTA_DELETED
:
case
GIT_DELTA_DELETED
:
if
(
git_oid_cmp
(
&
delta
->
old_file
.
oid
,
&
item
->
oid
)
==
0
)
if
(
git_oid_
_
cmp
(
&
delta
->
old_file
.
oid
,
&
item
->
oid
)
==
0
)
return
delta
;
return
delta
;
break
;
break
;
case
GIT_DELTA_ADDED
:
case
GIT_DELTA_ADDED
:
if
(
git_oid_cmp
(
&
delta
->
new_file
.
oid
,
&
item
->
oid
)
==
0
)
if
(
git_oid_
_
cmp
(
&
delta
->
new_file
.
oid
,
&
item
->
oid
)
==
0
)
return
delta
;
return
delta
;
break
;
break
;
case
GIT_DELTA_UNTRACKED
:
case
GIT_DELTA_UNTRACKED
:
if
(
diff
->
strcomp
(
delta
->
new_file
.
path
,
item
->
path
)
==
0
&&
if
(
diff
->
strcomp
(
delta
->
new_file
.
path
,
item
->
path
)
==
0
&&
git_oid_cmp
(
&
delta
->
new_file
.
oid
,
&
item
->
oid
)
==
0
)
git_oid_
_
cmp
(
&
delta
->
new_file
.
oid
,
&
item
->
oid
)
==
0
)
return
delta
;
return
delta
;
break
;
break
;
case
GIT_DELTA_MODIFIED
:
case
GIT_DELTA_MODIFIED
:
if
(
git_oid_cmp
(
&
delta
->
old_file
.
oid
,
&
item
->
oid
)
==
0
||
if
(
git_oid_
_
cmp
(
&
delta
->
old_file
.
oid
,
&
item
->
oid
)
==
0
||
git_oid_cmp
(
&
delta
->
new_file
.
oid
,
&
item
->
oid
)
==
0
)
git_oid_
_
cmp
(
&
delta
->
new_file
.
oid
,
&
item
->
oid
)
==
0
)
return
delta
;
return
delta
;
break
;
break
;
default:
default:
...
...
src/diff_output.c
View file @
cd2ed9f0
...
@@ -660,7 +660,7 @@ static int diff_patch_load(
...
@@ -660,7 +660,7 @@ static int diff_patch_load(
*/
*/
if
(
check_if_unmodified
&&
if
(
check_if_unmodified
&&
delta
->
old_file
.
mode
==
delta
->
new_file
.
mode
&&
delta
->
old_file
.
mode
==
delta
->
new_file
.
mode
&&
!
git_oid_cmp
(
&
delta
->
old_file
.
oid
,
&
delta
->
new_file
.
oid
))
!
git_oid_
_
cmp
(
&
delta
->
old_file
.
oid
,
&
delta
->
new_file
.
oid
))
{
{
delta
->
status
=
GIT_DELTA_UNMODIFIED
;
delta
->
status
=
GIT_DELTA_UNMODIFIED
;
...
@@ -1388,7 +1388,7 @@ static int diff_single_apply(diff_single_data *data)
...
@@ -1388,7 +1388,7 @@ static int diff_single_apply(diff_single_data *data)
(
has_old
?
GIT_DELTA_MODIFIED
:
GIT_DELTA_ADDED
)
:
(
has_old
?
GIT_DELTA_MODIFIED
:
GIT_DELTA_ADDED
)
:
(
has_old
?
GIT_DELTA_DELETED
:
GIT_DELTA_UNTRACKED
);
(
has_old
?
GIT_DELTA_DELETED
:
GIT_DELTA_UNTRACKED
);
if
(
git_oid_cmp
(
&
delta
->
new_file
.
oid
,
&
delta
->
old_file
.
oid
)
==
0
)
if
(
git_oid_
_
cmp
(
&
delta
->
new_file
.
oid
,
&
delta
->
old_file
.
oid
)
==
0
)
delta
->
status
=
GIT_DELTA_UNMODIFIED
;
delta
->
status
=
GIT_DELTA_UNMODIFIED
;
if
((
error
=
diff_delta_is_binary_by_content
(
if
((
error
=
diff_delta_is_binary_by_content
(
...
...
src/diff_tform.c
View file @
cd2ed9f0
...
@@ -429,7 +429,7 @@ static int similarity_measure(
...
@@ -429,7 +429,7 @@ static int similarity_measure(
if
(
GIT_MODE_TYPE
(
a_file
->
mode
)
!=
GIT_MODE_TYPE
(
b_file
->
mode
))
if
(
GIT_MODE_TYPE
(
a_file
->
mode
)
!=
GIT_MODE_TYPE
(
b_file
->
mode
))
return
0
;
return
0
;
if
(
git_oid_cmp
(
&
a_file
->
oid
,
&
b_file
->
oid
)
==
0
)
if
(
git_oid_
_
cmp
(
&
a_file
->
oid
,
&
b_file
->
oid
)
==
0
)
return
100
;
return
100
;
/* update signature cache if needed */
/* update signature cache if needed */
...
...
src/index.c
View file @
cd2ed9f0
...
@@ -1411,7 +1411,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
...
@@ -1411,7 +1411,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
/* 160-bit SHA-1 over the content of the index file before this checksum. */
/* 160-bit SHA-1 over the content of the index file before this checksum. */
git_oid_fromraw
(
&
checksum_expected
,
(
const
unsigned
char
*
)
buffer
);
git_oid_fromraw
(
&
checksum_expected
,
(
const
unsigned
char
*
)
buffer
);
if
(
git_oid_cmp
(
&
checksum_calculated
,
&
checksum_expected
)
!=
0
)
if
(
git_oid_
_
cmp
(
&
checksum_calculated
,
&
checksum_expected
)
!=
0
)
return
index_error_invalid
(
"calculated checksum does not match expected"
);
return
index_error_invalid
(
"calculated checksum does not match expected"
);
#undef seek_forward
#undef seek_forward
...
...
src/indexer.c
View file @
cd2ed9f0
...
@@ -9,7 +9,6 @@
...
@@ -9,7 +9,6 @@
#include "git2/indexer.h"
#include "git2/indexer.h"
#include "git2/object.h"
#include "git2/object.h"
#include "git2/oid.h"
#include "common.h"
#include "common.h"
#include "pack.h"
#include "pack.h"
...
@@ -17,6 +16,7 @@
...
@@ -17,6 +16,7 @@
#include "posix.h"
#include "posix.h"
#include "pack.h"
#include "pack.h"
#include "filebuf.h"
#include "filebuf.h"
#include "oid.h"
#include "oidmap.h"
#include "oidmap.h"
#define UINT31_MAX (0x7FFFFFFF)
#define UINT31_MAX (0x7FFFFFFF)
...
@@ -103,7 +103,7 @@ static int objects_cmp(const void *a, const void *b)
...
@@ -103,7 +103,7 @@ static int objects_cmp(const void *a, const void *b)
const
struct
entry
*
entrya
=
a
;
const
struct
entry
*
entrya
=
a
;
const
struct
entry
*
entryb
=
b
;
const
struct
entry
*
entryb
=
b
;
return
git_oid_cmp
(
&
entrya
->
oid
,
&
entryb
->
oid
);
return
git_oid_
_
cmp
(
&
entrya
->
oid
,
&
entryb
->
oid
);
}
}
int
git_indexer_stream_new
(
int
git_indexer_stream_new
(
...
...
src/object.h
View file @
cd2ed9f0
...
@@ -28,4 +28,16 @@ int git_oid__parse(git_oid *oid, const char **buffer_out, const char *buffer_end
...
@@ -28,4 +28,16 @@ int git_oid__parse(git_oid *oid, const char **buffer_out, const char *buffer_end
void
git_oid__writebuf
(
git_buf
*
buf
,
const
char
*
header
,
const
git_oid
*
oid
);
void
git_oid__writebuf
(
git_buf
*
buf
,
const
char
*
header
,
const
git_oid
*
oid
);
#define GIT_OBJECT__TYPED_FUNCTIONS(TYPE,OBJTYPE) \
int TYPE##_lookup(TYPE **out, git_repository *repo, const git_oid *id) { \
return git_object_lookup((git_object **)out, repo, id, OBJTYPE); } \
int TYPE##_lookup_prefix(TYPE **out, git_repository *repo, const git_oid *id, size_t len) { \
return git_object_lookup_prefix((git_object **)out, repo, id, len, OBJTYPE); } \
void TYPE##_free(TYPE *obj) { \
git_object_free((git_object *)obj); } \
const git_oid *TYPE##_id(const TYPE *obj) { \
return git_object_id((const git_object *)obj); } \
git_repository *TYPE##_owner(const TYPE *obj) { \
return git_object_owner((const git_object *)obj); }
#endif
#endif
src/odb.c
View file @
cd2ed9f0
...
@@ -772,7 +772,7 @@ attempt_lookup:
...
@@ -772,7 +772,7 @@ attempt_lookup:
git__free
(
data
);
git__free
(
data
);
data
=
raw
.
data
;
data
=
raw
.
data
;
if
(
found
&&
git_oid_cmp
(
&
full_oid
,
&
found_full_oid
))
if
(
found
&&
git_oid_
_
cmp
(
&
full_oid
,
&
found_full_oid
))
return
git_odb__error_ambiguous
(
"multiple matches for prefix"
);
return
git_odb__error_ambiguous
(
"multiple matches for prefix"
);
found_full_oid
=
full_oid
;
found_full_oid
=
full_oid
;
...
...
src/oid.c
View file @
cd2ed9f0
...
@@ -166,18 +166,26 @@ void git_oid_cpy(git_oid *out, const git_oid *src)
...
@@ -166,18 +166,26 @@ void git_oid_cpy(git_oid *out, const git_oid *src)
memcpy
(
out
->
id
,
src
->
id
,
sizeof
(
out
->
id
));
memcpy
(
out
->
id
,
src
->
id
,
sizeof
(
out
->
id
));
}
}
int
git_oid_cmp
(
const
git_oid
*
a
,
const
git_oid
*
b
)
{
return
git_oid__cmp
(
a
,
b
);
}
int
git_oid_ncmp
(
const
git_oid
*
oid_a
,
const
git_oid
*
oid_b
,
size_t
len
)
int
git_oid_ncmp
(
const
git_oid
*
oid_a
,
const
git_oid
*
oid_b
,
size_t
len
)
{
{
const
unsigned
char
*
a
=
oid_a
->
id
;
const
unsigned
char
*
a
=
oid_a
->
id
;
const
unsigned
char
*
b
=
oid_b
->
id
;
const
unsigned
char
*
b
=
oid_b
->
id
;
do
{
if
(
len
>
GIT_OID_HEXSZ
)
len
=
GIT_OID_HEXSZ
;
while
(
len
>
1
)
{
if
(
*
a
!=
*
b
)
if
(
*
a
!=
*
b
)
return
1
;
return
1
;
a
++
;
a
++
;
b
++
;
b
++
;
len
-=
2
;
len
-=
2
;
}
while
(
len
>
1
)
;
};
if
(
len
)
if
(
len
)
if
((
*
a
^
*
b
)
&
0xf0
)
if
((
*
a
^
*
b
)
&
0xf0
)
...
@@ -186,14 +194,31 @@ int git_oid_ncmp(const git_oid *oid_a, const git_oid *oid_b, size_t len)
...
@@ -186,14 +194,31 @@ int git_oid_ncmp(const git_oid *oid_a, const git_oid *oid_b, size_t len)
return
0
;
return
0
;
}
}
int
git_oid_str
eq
(
const
git_oid
*
a
,
const
char
*
str
)
int
git_oid_str
cmp
(
const
git_oid
*
oid_
a
,
const
char
*
str
)
{
{
git_oid
id
;
const
unsigned
char
*
a
=
oid_a
->
id
;
unsigned
char
strval
;
int
hexval
;
if
(
git_oid_fromstr
(
&
id
,
str
)
<
0
)
for
(
a
=
oid_a
->
id
;
*
str
&&
(
a
-
oid_a
->
id
)
<
GIT_OID_RAWSZ
;
++
a
)
{
return
-
1
;
if
((
hexval
=
git__fromhex
(
*
str
++
))
<
0
)
return
-
1
;
strval
=
hexval
<<
4
;
if
(
*
str
)
{
if
((
hexval
=
git__fromhex
(
*
str
++
))
<
0
)
return
-
1
;
strval
|=
hexval
;
}
if
(
*
a
!=
strval
)
return
(
*
a
-
strval
);
}
return
git_oid_cmp
(
a
,
&
id
)
==
0
?
0
:
-
1
;
return
0
;
}
int
git_oid_streq
(
const
git_oid
*
oid_a
,
const
char
*
str
)
{
return
git_oid_strcmp
(
oid_a
,
str
)
==
0
?
0
:
-
1
;
}
}
int
git_oid_iszero
(
const
git_oid
*
oid_a
)
int
git_oid_iszero
(
const
git_oid
*
oid_a
)
...
...
src/oid.h
0 → 100644
View file @
cd2ed9f0
/*
* Copyright (C) the libgit2 contributors. All rights reserved.
*
* This file is part of libgit2, distributed under the GNU GPL v2 with
* a Linking Exception. For full terms see the included COPYING file.
*/
#ifndef INCLUDE_oid_h__
#define INCLUDE_oid_h__
#include "git2/oid.h"
/*
* Compare two oid structures.
*
* @param a first oid structure.
* @param b second oid structure.
* @return <0, 0, >0 if a < b, a == b, a > b.
*/
GIT_INLINE
(
int
)
git_oid__cmp
(
const
git_oid
*
a
,
const
git_oid
*
b
)
{
const
unsigned
char
*
sha1
=
a
->
id
;
const
unsigned
char
*
sha2
=
b
->
id
;
int
i
;
for
(
i
=
0
;
i
<
GIT_OID_RAWSZ
;
i
++
,
sha1
++
,
sha2
++
)
{
if
(
*
sha1
!=
*
sha2
)
return
*
sha1
-
*
sha2
;
}
return
0
;
}
#endif
src/pack.c
View file @
cd2ed9f0
...
@@ -12,8 +12,8 @@
...
@@ -12,8 +12,8 @@
#include "sha1_lookup.h"
#include "sha1_lookup.h"
#include "mwindow.h"
#include "mwindow.h"
#include "fileops.h"
#include "fileops.h"
#include "oid.h"
#include "git2/oid.h"
#include <zlib.h>
#include <zlib.h>
static
int
packfile_open
(
struct
git_pack_file
*
p
);
static
int
packfile_open
(
struct
git_pack_file
*
p
);
...
@@ -875,7 +875,7 @@ static int packfile_open(struct git_pack_file *p)
...
@@ -875,7 +875,7 @@ static int packfile_open(struct git_pack_file *p)
idx_sha1
=
((
unsigned
char
*
)
p
->
index_map
.
data
)
+
p
->
index_map
.
len
-
40
;
idx_sha1
=
((
unsigned
char
*
)
p
->
index_map
.
data
)
+
p
->
index_map
.
len
-
40
;
if
(
git_oid_cmp
(
&
sha1
,
(
git_oid
*
)
idx_sha1
)
==
0
)
if
(
git_oid_
_
cmp
(
&
sha1
,
(
git_oid
*
)
idx_sha1
)
==
0
)
return
0
;
return
0
;
cleanup:
cleanup:
...
@@ -1139,7 +1139,7 @@ int git_pack_entry_find(
...
@@ -1139,7 +1139,7 @@ int git_pack_entry_find(
if
(
len
==
GIT_OID_HEXSZ
&&
p
->
num_bad_objects
)
{
if
(
len
==
GIT_OID_HEXSZ
&&
p
->
num_bad_objects
)
{
unsigned
i
;
unsigned
i
;
for
(
i
=
0
;
i
<
p
->
num_bad_objects
;
i
++
)
for
(
i
=
0
;
i
<
p
->
num_bad_objects
;
i
++
)
if
(
git_oid_cmp
(
short_oid
,
&
p
->
bad_object_sha1
[
i
])
==
0
)
if
(
git_oid_
_
cmp
(
short_oid
,
&
p
->
bad_object_sha1
[
i
])
==
0
)
return
packfile_error
(
"bad object found in packfile"
);
return
packfile_error
(
"bad object found in packfile"
);
}
}
...
...
src/push.c
View file @
cd2ed9f0
...
@@ -376,7 +376,7 @@ static int queue_differences(
...
@@ -376,7 +376,7 @@ static int queue_differences(
const
git_tree_entry
*
d_entry
=
git_tree_entry_byindex
(
delta
,
j
);
const
git_tree_entry
*
d_entry
=
git_tree_entry_byindex
(
delta
,
j
);
int
cmp
=
0
;
int
cmp
=
0
;
if
(
!
git_oid_cmp
(
&
b_entry
->
oid
,
&
d_entry
->
oid
))
if
(
!
git_oid_
_
cmp
(
&
b_entry
->
oid
,
&
d_entry
->
oid
))
goto
loop
;
goto
loop
;
cmp
=
strcmp
(
b_entry
->
filename
,
d_entry
->
filename
);
cmp
=
strcmp
(
b_entry
->
filename
,
d_entry
->
filename
);
...
...
src/refs.c
View file @
cd2ed9f0
...
@@ -832,7 +832,7 @@ int git_reference_cmp(git_reference *ref1, git_reference *ref2)
...
@@ -832,7 +832,7 @@ int git_reference_cmp(git_reference *ref1, git_reference *ref2)
if
(
type1
==
GIT_REF_SYMBOLIC
)
if
(
type1
==
GIT_REF_SYMBOLIC
)
return
strcmp
(
ref1
->
target
.
symbolic
,
ref2
->
target
.
symbolic
);
return
strcmp
(
ref1
->
target
.
symbolic
,
ref2
->
target
.
symbolic
);
return
git_oid_cmp
(
&
ref1
->
target
.
oid
,
&
ref2
->
target
.
oid
);
return
git_oid_
_
cmp
(
&
ref1
->
target
.
oid
,
&
ref2
->
target
.
oid
);
}
}
static
int
reference__update_terminal
(
static
int
reference__update_terminal
(
...
...
src/refs.h
View file @
cd2ed9f0
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
#include "git2/refdb.h"
#include "git2/refdb.h"
#include "strmap.h"
#include "strmap.h"
#include "buffer.h"
#include "buffer.h"
#include "oid.h"
#define GIT_REFS_DIR "refs/"
#define GIT_REFS_DIR "refs/"
#define GIT_REFS_HEADS_DIR GIT_REFS_DIR "heads/"
#define GIT_REFS_HEADS_DIR GIT_REFS_DIR "heads/"
...
...
src/remote.c
View file @
cd2ed9f0
...
@@ -923,7 +923,7 @@ static int update_tips_for_spec(git_remote *remote, git_refspec *spec, git_vecto
...
@@ -923,7 +923,7 @@ static int update_tips_for_spec(git_remote *remote, git_refspec *spec, git_vecto
if
(
error
==
GIT_ENOTFOUND
)
if
(
error
==
GIT_ENOTFOUND
)
memset
(
&
old
,
0
,
GIT_OID_RAWSZ
);
memset
(
&
old
,
0
,
GIT_OID_RAWSZ
);
if
(
!
git_oid_cmp
(
&
old
,
&
head
->
oid
))
if
(
!
git_oid_
_
cmp
(
&
old
,
&
head
->
oid
))
continue
;
continue
;
/* In autotag mode, don't overwrite any locally-existing tags */
/* In autotag mode, don't overwrite any locally-existing tags */
...
...
src/tag.c
View file @
cd2ed9f0
...
@@ -15,6 +15,8 @@
...
@@ -15,6 +15,8 @@
#include "git2/signature.h"
#include "git2/signature.h"
#include "git2/odb_backend.h"
#include "git2/odb_backend.h"
GIT_OBJECT__TYPED_FUNCTIONS
(
git_tag
,
GIT_OBJ_TAG
)
void
git_tag__free
(
void
*
_tag
)
void
git_tag__free
(
void
*
_tag
)
{
{
git_tag
*
tag
=
_tag
;
git_tag
*
tag
=
_tag
;
...
@@ -24,11 +26,6 @@ void git_tag__free(void *_tag)
...
@@ -24,11 +26,6 @@ void git_tag__free(void *_tag)
git__free
(
tag
);
git__free
(
tag
);
}
}
const
git_oid
*
git_tag_id
(
const
git_tag
*
c
)
{
return
git_object_id
((
const
git_object
*
)
c
);
}
int
git_tag_target
(
git_object
**
target
,
const
git_tag
*
t
)
int
git_tag_target
(
git_object
**
target
,
const
git_tag
*
t
)
{
{
assert
(
t
);
assert
(
t
);
...
...
src/transports/local.c
View file @
cd2ed9f0
...
@@ -282,7 +282,7 @@ static int local_push_copy_object(
...
@@ -282,7 +282,7 @@ static int local_push_copy_object(
odb_obj_size
)
<
0
||
odb_obj_size
)
<
0
||
odb_stream
->
finalize_write
(
&
remote_odb_obj_oid
,
odb_stream
)
<
0
)
{
odb_stream
->
finalize_write
(
&
remote_odb_obj_oid
,
odb_stream
)
<
0
)
{
error
=
-
1
;
error
=
-
1
;
}
else
if
(
git_oid_cmp
(
&
obj
->
id
,
&
remote_odb_obj_oid
)
!=
0
)
{
}
else
if
(
git_oid_
_
cmp
(
&
obj
->
id
,
&
remote_odb_obj_oid
)
!=
0
)
{
giterr_set
(
GITERR_ODB
,
"Error when writing object to remote odb "
giterr_set
(
GITERR_ODB
,
"Error when writing object to remote odb "
"during local push operation. Remote odb object oid does not "
"during local push operation. Remote odb object oid does not "
"match local oid."
);
"match local oid."
);
...
...
src/tree.c
View file @
cd2ed9f0
...
@@ -11,6 +11,8 @@
...
@@ -11,6 +11,8 @@
#include "git2/repository.h"
#include "git2/repository.h"
#include "git2/object.h"
#include "git2/object.h"
GIT_OBJECT__TYPED_FUNCTIONS
(
git_tree
,
GIT_OBJ_TREE
)
#define DEFAULT_TREE_SIZE 16
#define DEFAULT_TREE_SIZE 16
#define MAX_FILEMODE_BYTES 6
#define MAX_FILEMODE_BYTES 6
...
@@ -232,16 +234,6 @@ void git_tree__free(void *_tree)
...
@@ -232,16 +234,6 @@ void git_tree__free(void *_tree)
git__free
(
tree
);
git__free
(
tree
);
}
}
const
git_oid
*
git_tree_id
(
const
git_tree
*
t
)
{
return
git_object_id
((
const
git_object
*
)
t
);
}
git_repository
*
git_tree_owner
(
const
git_tree
*
t
)
{
return
git_object_owner
((
const
git_object
*
)
t
);
}
git_filemode_t
git_tree_entry_filemode
(
const
git_tree_entry
*
entry
)
git_filemode_t
git_tree_entry_filemode
(
const
git_tree_entry
*
entry
)
{
{
return
(
git_filemode_t
)
entry
->
attr
;
return
(
git_filemode_t
)
entry
->
attr
;
...
...
tests-clar/core/oid.c
View file @
cd2ed9f0
...
@@ -16,15 +16,55 @@ void test_core_oid__initialize(void)
...
@@ -16,15 +16,55 @@ void test_core_oid__initialize(void)
void
test_core_oid__streq
(
void
)
void
test_core_oid__streq
(
void
)
{
{
cl_assert
(
git_oid_streq
(
&
id
,
str_oid
)
==
0
);
cl_assert
_equal_i
(
0
,
git_oid_streq
(
&
id
,
str_oid
)
);
cl_assert
(
git_oid_streq
(
&
id
,
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
)
==
-
1
);
cl_assert
_equal_i
(
-
1
,
git_oid_streq
(
&
id
,
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
)
);
cl_assert
(
git_oid_streq
(
&
id
,
"deadbeef"
)
==
-
1
);
cl_assert_equal_i
(
-
1
,
git_oid_streq
(
&
id
,
"deadbeef"
));
cl_assert
(
git_oid_streq
(
&
id
,
"I'm not an oid.... :)"
)
==
-
1
);
cl_assert_equal_i
(
-
1
,
git_oid_streq
(
&
id
,
"I'm not an oid.... :)"
));
cl_assert
(
git_oid_streq
(
&
idp
,
"ae90f12eea699729ed0000000000000000000000"
)
==
0
);
cl_assert
(
git_oid_streq
(
&
idp
,
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
)
==
-
1
);
cl_assert
(
git_oid_streq
(
&
idp
,
"deadbeef"
)
==
-
1
);
cl_assert_equal_i
(
0
,
git_oid_streq
(
&
idp
,
"ae90f12eea699729ed0000000000000000000000"
));
cl_assert
(
git_oid_streq
(
&
idp
,
"I'm not an oid.... :)"
)
==
-
1
);
cl_assert_equal_i
(
0
,
git_oid_streq
(
&
idp
,
"ae90f12eea699729ed"
));
cl_assert_equal_i
(
-
1
,
git_oid_streq
(
&
idp
,
"ae90f12eea699729ed1"
));
cl_assert_equal_i
(
-
1
,
git_oid_streq
(
&
idp
,
"ae90f12eea699729ec"
));
cl_assert_equal_i
(
-
1
,
git_oid_streq
(
&
idp
,
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
));
cl_assert_equal_i
(
-
1
,
git_oid_streq
(
&
idp
,
"deadbeef"
));
cl_assert_equal_i
(
-
1
,
git_oid_streq
(
&
idp
,
"I'm not an oid.... :)"
));
}
void
test_core_oid__strcmp
(
void
)
{
cl_assert_equal_i
(
0
,
git_oid_strcmp
(
&
id
,
str_oid
));
cl_assert
(
git_oid_strcmp
(
&
id
,
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
)
<
0
);
cl_assert
(
git_oid_strcmp
(
&
id
,
"deadbeef"
)
<
0
);
cl_assert_equal_i
(
-
1
,
git_oid_strcmp
(
&
id
,
"I'm not an oid.... :)"
));
cl_assert_equal_i
(
0
,
git_oid_strcmp
(
&
idp
,
"ae90f12eea699729ed0000000000000000000000"
));
cl_assert_equal_i
(
0
,
git_oid_strcmp
(
&
idp
,
"ae90f12eea699729ed"
));
cl_assert
(
git_oid_strcmp
(
&
idp
,
"ae90f12eea699729ed1"
)
<
0
);
cl_assert
(
git_oid_strcmp
(
&
idp
,
"ae90f12eea699729ec"
)
>
0
);
cl_assert
(
git_oid_strcmp
(
&
idp
,
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
)
<
0
);
cl_assert
(
git_oid_strcmp
(
&
idp
,
"deadbeef"
)
<
0
);
cl_assert_equal_i
(
-
1
,
git_oid_strcmp
(
&
idp
,
"I'm not an oid.... :)"
));
}
void
test_core_oid__ncmp
(
void
)
{
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
idp
,
0
));
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
idp
,
1
));
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
idp
,
2
));
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
idp
,
17
));
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
idp
,
18
));
cl_assert
(
git_oid_ncmp
(
&
id
,
&
idp
,
19
));
cl_assert
(
git_oid_ncmp
(
&
id
,
&
idp
,
40
));
cl_assert
(
git_oid_ncmp
(
&
id
,
&
idp
,
41
));
cl_assert
(
git_oid_ncmp
(
&
id
,
&
idp
,
42
));
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
id
,
0
));
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
id
,
1
));
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
id
,
39
));
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
id
,
40
));
cl_assert
(
!
git_oid_ncmp
(
&
id
,
&
id
,
41
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment