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
]