From 1bc9a8a798f5c09c39e912128ab27a1d7d4bdf78 Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Tue, 16 Feb 2016 19:57:04 -0500 Subject: [PATCH] add git-vendor remove command --- bin/git-vendor | 37 +++++++++++++++++++++++++++++++++++-- man/git-vendor.md | 14 ++++++++++++-- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/bin/git-vendor b/bin/git-vendor index 915d92b..4bdc9f6 100755 --- a/bin/git-vendor +++ b/bin/git-vendor @@ -11,6 +11,7 @@ Usage: git vendor --help git vendor add [--prefix ] [] git vendor list [] + git vendor remove git vendor update [] EOF } @@ -26,7 +27,7 @@ esac command="$1" shift case "$command" in - "add"|"list"|"update") ;; + "add"|"list"|"remove"|"update") ;; *) >&2 echo "error: unknown command \"$command\"" && _usage && exit 1 ;; esac @@ -51,7 +52,13 @@ vendor_names_from_log() name= ;; esac - done + done | sort -u +} + +vendor_git_log_first() +{ + name="$1" + git log -1 --grep="^git-vendor-name: $name\$" --pretty=format:'START %H%n%s%n%n%b%nEND%n' HEAD } cmd_add() @@ -156,4 +163,30 @@ git-vendor-ref: $ref done } +cmd_remove() +{ + require_clean_work_tree + name="$1" + if [ $# -lt 1 ]; then + die "Incorrect options provided: git vendor remove " + fi + vendor_git_log_first "$name" | + while read a b junk; do + case "$a" in + START) ;; + git-vendor-dir:) dir="$b" ;; + END) + # Make sure the dependency exists + if [ ! -d "$dir" ]; then + die "Dependency \"$1\" is missing from \"$dir\"" + fi + git rm -rf "$dir" + git commit --message "Removing \"$name\" from \"$dir\"" + break + ;; + esac + done +} + +# Run the command "cmd_$command" "$@" diff --git a/man/git-vendor.md b/man/git-vendor.md index 4ecd473..74c319e 100644 --- a/man/git-vendor.md +++ b/man/git-vendor.md @@ -7,6 +7,8 @@ git-vendor(1) -- manage vendored dependency subtrees `git-vendor list []` +`git-vendor remove ` + `git-vendor update []` ## DESCRIPTION @@ -23,13 +25,17 @@ git-vendor(1) -- manage vendored dependency subtrees Add a new vendored dependency - list [] + list [<name>] List all existing vendored dependencies and their current version. Limit show dependency to `` if provided. + remove <name> + + Remove the named vendored dependency. + update <dir> <ref> - Update the vendored dependency to a different version + Update the vendored dependency to a different version. ## OPTIONS @@ -68,6 +74,10 @@ git-vendor(1) -- manage vendored dependency subtrees $ git vendor update forge + Removing a dependency: + + $ git vendor remove forge + List all existing dependencies: $ git vendor list