mirror of
https://github.com/ostreedev/ostree.git
synced 2025-01-10 05:18:30 +03:00
Support pathnames for --subpath=...
This allows you to pull a single file, rather than just a directory. Closes: #244 Approved by: cgwalters
This commit is contained in:
parent
984bf91826
commit
91734a8a18
@ -448,12 +448,7 @@ scan_dirtree_object (OtPullData *pull_data,
|
||||
files_variant = g_variant_get_child_value (tree, 0);
|
||||
dirs_variant = g_variant_get_child_value (tree, 1);
|
||||
|
||||
/* Skip files if we're traversing a request only directory */
|
||||
if (pull_data->dir)
|
||||
n = 0;
|
||||
else
|
||||
n = g_variant_n_children (files_variant);
|
||||
|
||||
n = g_variant_n_children (files_variant);
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
const char *filename;
|
||||
@ -466,6 +461,14 @@ scan_dirtree_object (OtPullData *pull_data,
|
||||
if (!ot_util_filename_validate (filename, error))
|
||||
goto out;
|
||||
|
||||
/* Skip files if we're traversing a request only directory, unless it exactly
|
||||
* matches the path */
|
||||
if (pull_data->dir &&
|
||||
/* Should always an initial slash, we assert it in scan_dirtree_object */
|
||||
pull_data->dir[0] == '/' &&
|
||||
strcmp (pull_data->dir+1, filename) != 0)
|
||||
continue;
|
||||
|
||||
file_checksum = ostree_checksum_from_bytes_v (csum);
|
||||
|
||||
if (!ostree_repo_has_object (pull_data->repo, OSTREE_OBJECT_TYPE_FILE, file_checksum,
|
||||
|
@ -44,6 +44,10 @@ assert_file_has_content err.txt "Couldn't find file object"
|
||||
rev=$(${CMD_PREFIX} ostree --repo=repo rev-parse origin:main)
|
||||
assert_has_file repo/state/${rev}.commitpartial
|
||||
|
||||
# Test pulling a file, not a dir
|
||||
${CMD_PREFIX} ostree --repo=repo pull --subpath=/firstfile origin main
|
||||
${CMD_PREFIX} ostree --repo=repo ls origin:main /firstfile
|
||||
|
||||
${CMD_PREFIX} ostree --repo=repo pull origin main
|
||||
assert_not_has_file repo/state/${rev}.commitpartial
|
||||
${CMD_PREFIX} ostree --repo=repo fsck
|
||||
|
Loading…
Reference in New Issue
Block a user