diff options
-rw-r--r-- | asp.in | 12 | ||||
-rw-r--r-- | man/asp.1.txt | 5 | ||||
-rw-r--r-- | remote.inc.sh | 6 |
3 files changed, 23 insertions, 0 deletions
@@ -63,6 +63,7 @@ Commands: log NAME Show revision history shortlog NAME Show revision history in short form update [NAME...] Update packages (update all tracked if none specified) + untrack NAME... Remove a package from the local repository EOF } @@ -156,6 +157,14 @@ gc() { git gc } +untrack() { + local pkgname=$1 remote + + package_init -n "$pkgname" remote || return 1 + + remote_untrack "$remote" "$pkgname" +} + disk_usage() { local usage read usage _ < <(du -sh "$ASPROOT/objects") @@ -235,6 +244,9 @@ case $action in gc) gc ;; + untrack) + map untrack "$@" + ;; help) usage exit 0 diff --git a/man/asp.1.txt b/man/asp.1.txt index 3a90780..f94fe8c 100644 --- a/man/asp.1.txt +++ b/man/asp.1.txt @@ -67,6 +67,11 @@ The following commands are understood: to the newest version. If no targets are provided, all locally known packages will be updated. +*untrack*:: + Remove a remote tracking branch from the local repository. Disk usage for + the removed package(s) may not be freed until garbage collection has taken + place. + Options ------- *-a* 'architecture':: diff --git a/remote.inc.sh b/remote.inc.sh index b125419..d2521bb 100644 --- a/remote.inc.sh +++ b/remote.inc.sh @@ -48,3 +48,9 @@ remote_get_url() { git ls-remote --get-url "$remote" } + +remote_untrack() { + local remote=$1 pkgname=$2 + + git branch -dr "$remote/packages/$pkgname" +} |