diff --git a/README.md b/README.md
index 418e46d..78c8b24 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@ See https://brettlangdon.github.io/git-vendor for the current MAN page documenta
* `git vendor add [--prefix
] [[]` - add a new vendored dependency.
* `git vendor list []` - list current vendored dependencies, their source, and current vendored ref.
* `git vendor update [][]` - update a vendored dependency.
-* `git vendor push [][]` - push vendored dependency.
+* `git vendor upstream [][] [--repo ]` - share with the upstream vendored dependency.
## Installation
Manually:
diff --git a/bin/git-vendor b/bin/git-vendor
index bbda812..04373b5 100755
--- a/bin/git-vendor
+++ b/bin/git-vendor
@@ -13,7 +13,7 @@ Usage:
git vendor list []
git vendor remove
git vendor update [][]
- git vendor push [][]
+ git vendor upstream [][] [--repo ]
EOF
}
@@ -28,7 +28,7 @@ require_work_tree
command="$1"
shift
case "$command" in
- "add"|"list"|"remove"|"update"|"push") ;;
+ "add"|"list"|"remove"|"update"|"upstream") ;;
*) >&2 echo "error: unknown command \"$command\"" && _usage && exit 1 ;;
esac
@@ -208,44 +208,64 @@ git-vendor-ref: $ref
done
}
-cmd_push()
+cmd_upstream()
{
require_clean_work_tree
- name="$1"
- ref="master"
- if [ "$2" != "" ]; then
- ref="$2"
+ while [ $# -gt 0 ] ; do
+ case $1 in
+ --repo)
+ repository_arg="$2"
+ shift # argument value
+ ;;
+ *)
+ if [ -z "$name" ]; then
+ name="$1"
+ elif [ -z "$ref" ]; then
+ ref="$1"
+ fi
+ ;;
+ esac
+ shift # current argument
+ done
+ if [ -z "$name" ]; then
+ die "Incorrect options provided: git vendor upstream [][] [--repo ]"
fi
- if [ $# -lt 1 ]; then
- die "Incorrect options provided: git vendor push [][]"
+ if [ -z "$ref" ]; then
+ ref="master"
fi
vendor_git_log_from_name "$name" |
- while read a b junk; do
- case "$a" in
- START) ;;
- git-vendor-dir:) dir="$b" ;;
- git-vendor-repository:) repository="$b" ;;
- git-vendor-ref:) curr_ref="$b" ;;
- END)
- # Make sure the dependency exists on disk
- if [ ! -d "$dir" ]; then
- die "Dependency \"$1\" is missing from \"$dir\""
- fi
+ while read a b junk; do
+ case "$a" in
+ START) ;;
+ git-vendor-dir:) dir="$b" ;;
+ git-vendor-repository:) repository="$b" ;;
+ END)
+ # Make sure the dependency exists on disk
+ if [ ! -d "$dir" ]; then
+ die "Dependency \"$1\" is missing from \"$dir\""
+ fi
- # And hasn't been renamed
- logname=$(vendor_name_from_dir "$dir")
- if [ "$name" != "$logname" ]; then
- die "Dependency \"$1\" was renamed \"$logname\""
- fi
+ # And hasn't been renamed
+ logname=$(vendor_name_from_dir "$dir")
+ if [ "$name" != "$logname" ]; then
+ die "Dependency \"$1\" was renamed \"$logname\""
+ fi
- if [ ! -z "$repository" ];
- then
- git subtree push --prefix "$dir" "$repository" "$ref"
- break
- fi
- ;;
- esac
- done
+ if [ ! -z "$repository_arg" ];
+ then
+ # override the reposition read from the commit logs
+ # with the one read from the command line arguments
+ repository=$repository_arg
+ fi
+
+ if [ ! -z "$repository" ];
+ then
+ git subtree push --prefix "$dir" "$repository" "$ref"
+ break
+ fi
+ ;;
+ esac
+ done
}
cmd_remove()
diff --git a/etc/bash_completion.sh b/etc/bash_completion.sh
index 46c9a75..6cc587d 100755
--- a/etc/bash_completion.sh
+++ b/etc/bash_completion.sh
@@ -1,4 +1,4 @@
_git_vendor()
{
- __gitcomp "add list update push"
+ __gitcomp "add list update upstream"
}
diff --git a/man/git-vendor.1 b/man/git-vendor.1
index 1c9a902..91d17df 100644
--- a/man/git-vendor.1
+++ b/man/git-vendor.1
@@ -19,7 +19,7 @@
\fBgit\-vendor update [][]\fR
.
.P
-\fBgit\-vendor push [][]\fR
+\fBgit\-vendor upstream [][]\fR
.
.SH "DESCRIPTION"
Manage any repository dependencies with \fBgit\-subtree\fR\.
@@ -28,7 +28,7 @@ Manage any repository dependencies with \fBgit\-subtree\fR\.
\fBgit\-vendor\fR follows the same vendoring pattern that is used in the Go community\. Dependencies are stored under \fBvendor/\fR\. For example, the dependency of \fBhttps://github\.com/brettlangdon/forge\.git\fR will be stored under \fBvendor/github\.com/brettlangdon/forge\fR by default\.
.
.P
-\fBgit\-vendor\fR is unable to \fBlist\fR, \fBupdate\fR or \fBpush\fR any dependencies it has not added, the reason is that \fBgit\-vendor\fR adds special commit messages so that it can track existing dependencies\.
+\fBgit\-vendor\fR is unable to \fBlist\fR, \fBupdate\fR or \fBupstream\fR any dependencies it has not added, the reason is that \fBgit\-vendor\fR adds special commit messages so that it can track existing dependencies\.
.
.SH "COMMANDS"
add [\-\-prefix ] [][]
@@ -55,7 +55,7 @@ update ][
Update the vendored dependency to a different version\.
.
.P
-push ][
+upstream ][
.
.P
Push the vendored dependency changes to the source repository\.
@@ -137,26 +137,52 @@ $ git vendor update forge
.IP "" 0
.
.P
-Pushing changes to the source repository to a (new) branch \fBmy_changes\fR:
+Upstream changes to the source repository to a (new) branch \fBmy_changes\fR:
.
.IP "" 4
.
.nf
-$ git vendor push forge my_changes
+$ git vendor upstream forge my_changes
.
.fi
.
.IP "" 0
.
.P
-Pushing changes to the source repository to \fBmaster\fR:
+Upstream changes to the source repository to \fBmaster\fR:
.
.IP "" 4
.
.nf
-$ git vendor push forge
+$ git vendor upstream forge
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Upstream changes to another repository to a (new) branch \fBmy_changes\fR:
+.
+.IP "" 4
+.
+.nf
+
+$ git vendor upstream forge my_changes --repo https://github.com/user/another.git
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Upstream changes to another repository to \fBmaster\fR:
+.
+.IP "" 4
+.
+.nf
+
+$ git vendor upstream forge --repo https://github.com/user/another.git
.
.fi
.
diff --git a/man/git-vendor.md b/man/git-vendor.md
index df2287d..275b63b 100644
--- a/man/git-vendor.md
+++ b/man/git-vendor.md
@@ -11,7 +11,7 @@ git-vendor(1) -- manage vendored dependency subtrees
`git-vendor update [][]`
-`git-vendor push [][]`
+`git-vendor upstream [][]`
## DESCRIPTION
@@ -19,7 +19,7 @@ git-vendor(1) -- manage vendored dependency subtrees
`git-vendor` follows the same vendoring pattern that is used in the Go community. Dependencies are stored under `vendor/`. For example, the dependency of `https://github.com/brettlangdon/forge.git` will be stored under `vendor/github.com/brettlangdon/forge` by default.
- `git-vendor` is unable to `list`, `update` or `push` any dependencies it has not added, the reason is that `git-vendor` adds special commit messages so that it can track existing dependencies.
+ `git-vendor` is unable to `list`, `update` or `upstream` any dependencies it has not added, the reason is that `git-vendor` adds special commit messages so that it can track existing dependencies.
## COMMANDS
@@ -39,7 +39,7 @@ git-vendor(1) -- manage vendored dependency subtrees
Update the vendored dependency to a different version.
- push <dir> <ref>
+ upstream <dir> <ref>
Push the vendored dependency changes to the source repository.
@@ -80,13 +80,21 @@ git-vendor(1) -- manage vendored dependency subtrees
$ git vendor update forge
- Pushing changes to the source repository to `master`:
+ Upstream changes to the source repository to `master`:
- $ git vendor push forge
+ $ git vendor upstream forge
- Pushing changes to the source repository to a (new) branch my_changes:
+ Upstream changes to the source repository to a (new) branch my_changes:
- $ git vendor push forge my_changes
+ $ git vendor upstream forge my_changes
+
+ Upstream changes to another repository to `master`:
+
+ $ git vendor upstream forge --repo https://github.com/user/another.git
+
+ Upstream changes to another repository to a (new) branch my_changes:
+
+ $ git vendor upstream forge my_changes --repo https://github.com/user/another.git
Removing a dependency:
]