mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-06 17:20:22 +00:00
Merge pull request #1894 from libgit2/cmn/tree-raw
tree: allow retrieval of raw attributes
This commit is contained in:
commit
ca27ae4859
@ -198,6 +198,17 @@ GIT_EXTERN(git_otype) git_tree_entry_type(const git_tree_entry *entry);
|
|||||||
*/
|
*/
|
||||||
GIT_EXTERN(git_filemode_t) git_tree_entry_filemode(const git_tree_entry *entry);
|
GIT_EXTERN(git_filemode_t) git_tree_entry_filemode(const git_tree_entry *entry);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the raw UNIX file attributes of a tree entry
|
||||||
|
*
|
||||||
|
* This function does not perform any normalization and is only useful
|
||||||
|
* if you need to be able to recreate the original tree object.
|
||||||
|
*
|
||||||
|
* @param entry a tree entry
|
||||||
|
* @return filemode as an integer
|
||||||
|
*/
|
||||||
|
|
||||||
|
GIT_EXTERN(git_filemode_t) git_tree_entry_filemode_raw(const git_tree_entry *entry);
|
||||||
/**
|
/**
|
||||||
* Compare two tree entries
|
* Compare two tree entries
|
||||||
*
|
*
|
||||||
|
@ -237,7 +237,12 @@ void git_tree__free(void *_tree)
|
|||||||
|
|
||||||
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 normalize_filemode(entry->attr);
|
||||||
|
}
|
||||||
|
|
||||||
|
git_filemode_t git_tree_entry_filemode_raw(const git_tree_entry *entry)
|
||||||
|
{
|
||||||
|
return entry->attr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *git_tree_entry_name(const git_tree_entry *entry)
|
const char *git_tree_entry_name(const git_tree_entry *entry)
|
||||||
@ -386,8 +391,6 @@ int git_tree__parse(void *_tree, git_odb_object *odb_obj)
|
|||||||
if (git__strtol32(&attr, buffer, &buffer, 8) < 0 || !buffer)
|
if (git__strtol32(&attr, buffer, &buffer, 8) < 0 || !buffer)
|
||||||
return tree_error("Failed to parse tree. Can't parse filemode", NULL);
|
return tree_error("Failed to parse tree. Can't parse filemode", NULL);
|
||||||
|
|
||||||
attr = normalize_filemode(attr); /* make sure to normalize the filemode */
|
|
||||||
|
|
||||||
if (*buffer++ != ' ')
|
if (*buffer++ != ' ')
|
||||||
return tree_error("Failed to parse tree. Object is corrupted", NULL);
|
return tree_error("Failed to parse tree. Object is corrupted", NULL);
|
||||||
|
|
||||||
|
@ -107,7 +107,8 @@ void test_object_tree_attributes__normalize_600(void)
|
|||||||
cl_git_pass(git_tree_lookup(&tree, repo, &id));
|
cl_git_pass(git_tree_lookup(&tree, repo, &id));
|
||||||
|
|
||||||
entry = git_tree_entry_byname(tree, "ListaTeste.xml");
|
entry = git_tree_entry_byname(tree, "ListaTeste.xml");
|
||||||
cl_assert_equal_i(entry->attr, GIT_FILEMODE_BLOB);
|
cl_assert_equal_i(git_tree_entry_filemode(entry), GIT_FILEMODE_BLOB);
|
||||||
|
cl_assert_equal_i(git_tree_entry_filemode_raw(entry), 0100600);
|
||||||
|
|
||||||
git_tree_free(tree);
|
git_tree_free(tree);
|
||||||
cl_git_sandbox_cleanup();
|
cl_git_sandbox_cleanup();
|
||||||
|
Loading…
Reference in New Issue
Block a user