mirror of
https://github.com/ostreedev/ostree.git
synced 2024-12-22 17:35:55 +03:00
src/ostree: Don't delete refs having aliases
Deleting a ref with aliases makes them dangling. In such cases, display an error message to the user. Fixes #1597 Signed-off-by: Sinny Kumari <sinny@redhat.com> Closes: #1749 Approved by: cgwalters
This commit is contained in:
parent
05e99da7a7
commit
c70526841e
@ -146,8 +146,10 @@ static gboolean do_ref (OstreeRepo *repo, const char *refspec_prefix, GCancellab
|
||||
|
||||
/* If we're doing aliasing, we need the full list of aliases mostly to allow
|
||||
* replacing existing aliases.
|
||||
* If we are deleting a ref, we want to make sure that it doesn't have
|
||||
* any corresponding aliases.
|
||||
*/
|
||||
if (opt_alias)
|
||||
if (opt_alias || opt_delete)
|
||||
{
|
||||
if (!ostree_repo_list_refs_ext (repo, NULL, &ref_aliases,
|
||||
OSTREE_REPO_LIST_REFS_EXT_ALIASES,
|
||||
@ -246,6 +248,17 @@ static gboolean do_ref (OstreeRepo *repo, const char *refspec_prefix, GCancellab
|
||||
if (!ostree_parse_refspec (refspec, &remote, &ref, error))
|
||||
goto out;
|
||||
|
||||
/* Look for alias if it exists for a ref we want to delete */
|
||||
GLNX_HASH_TABLE_FOREACH_KV (ref_aliases, const char *,
|
||||
ref_alias, const char *, value)
|
||||
{
|
||||
if (!strcmp (ref, value))
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||
"Ref '%s' has an active alias: '%s'", ref, ref_alias);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
if (!ostree_repo_set_ref_immediate (repo, remote, ref, NULL,
|
||||
cancellable, error))
|
||||
goto out;
|
||||
|
@ -192,6 +192,11 @@ done
|
||||
${CMD_PREFIX} ostree --repo=repo refs -A > refs.txt
|
||||
assert_file_has_content_literal refs.txt 'exampleos/x86_64/stable/server -> exampleos/x86_64/27/server'
|
||||
|
||||
# Test that we don't delete a ref having aliases
|
||||
if ${CMD_PREFIX} ostree --repo=repo refs --delete exampleos/x86_64/27/server; then
|
||||
assert_not_reached "refs --delete unexpectedly succeeded in deleting a ref containing alias!"
|
||||
fi
|
||||
|
||||
${CMD_PREFIX} ostree --repo=repo summary -u
|
||||
|
||||
echo "ok ref symlink"
|
||||
|
Loading…
Reference in New Issue
Block a user