Browse Source

reorganize

pull/3/head
Brett Langdon 10 years ago
parent
commit
e0d1a53103
7 changed files with 428 additions and 1 deletions
  1. +79
    -0
      Makefile
  2. +10
    -1
      README.md
  3. +0
    -0
      bin/git-vendor
  4. +4
    -0
      etc/bash_completion.sh
  5. +106
    -0
      man/git-vendor.1
  6. +158
    -0
      man/git-vendor.1.html
  7. +71
    -0
      man/git-vendor.md

+ 79
- 0
Makefile View File

@ -0,0 +1,79 @@
# Majority of this script was borrowed from git-extra:
# https://github.com/tj/git-extras/blob/98d0d8c642ea2643f513bc41fcb9dd3078cf2e59/Makefile
PREFIX ?= /usr/local
BINPREFIX ?= "$(PREFIX)/bin"
MANPREFIX ?= "$(PREFIX)/share/man/man1"
SYSCONFDIR ?= $(PREFIX)/etc
BINS = $(wildcard bin/git-*)
MANS = $(wildcard man/git-*.md)
MAN_HTML = $(MANS:.md=.html)
MAN_PAGES = $(MANS:.md=.1)
COMMANDS = $(subst bin/, , $(BINS))
default: install
docs: $(MAN_HTML) $(MAN_PAGES)
install:
@mkdir -p $(DESTDIR)$(MANPREFIX)
@mkdir -p $(DESTDIR)$(BINPREFIX)
@echo "... installing bins to $(DESTDIR)$(BINPREFIX)"
@echo "... installing man pages to $(DESTDIR)$(MANPREFIX)"
$(eval TEMPFILE := $(shell mktemp -q $${TMPDIR:-/tmp}/git-vendor.XXXXXX 2>/dev/null || mktemp -q))
@# chmod from rw-------(default) to rwxrwxr-x, so that users can exec the scripts
@chmod 775 $(TEMPFILE)
$(eval EXISTED_ALIASES := $(shell \
git config --get-regexp 'alias.*' | awk '{print "git-" substr($$1, 7)}'))
@$(foreach COMMAND, $(COMMANDS), \
disable=''; \
if test ! -z "$(filter $(COMMAND), $(EXISTED_ALIASES))"; then \
read -p "$(COMMAND) conflicts with an alias, still install it and disable the alias? [y/n]" answer; \
test "$$answer" = 'n' -o "$$answer" = 'N' && disable="true"; \
fi; \
if test -z "$$disable"; then \
echo "... installing $(COMMAND)"; \
cat bin/$(COMMAND) > $(TEMPFILE); \
cp -f $(TEMPFILE) $(DESTDIR)$(BINPREFIX)/$(COMMAND); \
fi; \
)
@if [ -z "$(wildcard man/git-*.1)" ]; then \
echo "WARNING: man pages not created, use 'make docs' (which requires 'ronn' ruby lib)"; \
else \
cp -f man/git-*.1 $(DESTDIR)$(MANPREFIX); \
echo "cp -f man/git-*.1 $(DESTDIR)$(MANPREFIX)"; \
fi
@mkdir -p $(DESTDIR)$(SYSCONFDIR)/bash_completion.d
cp -f etc/bash_completion.sh $(DESTDIR)$(SYSCONFDIR)/bash_completion.d/git-vendor
man/%.html: man/%.md
ronn \
--manual "Git Vendor" \
--html \
--pipe \
$< > $@
man/%.1: man/%.md
ronn -r \
--manual "Git Vendor" \
--pipe \
$< > $@
uninstall:
@$(foreach BIN, $(BINS), \
echo "... uninstalling $(DESTDIR)$(BINPREFIX)/$(notdir $(BIN))"; \
rm -f $(DESTDIR)$(BINPREFIX)/$(notdir $(BIN)); \
)
@$(foreach MAN, $(MAN_PAGES), \
echo "... uninstalling $(DESTDIR)$(MANPREFIX)/$(notdir $(MAN))"; \
rm -f $(DESTDIR)$(MANPREFIX)/$(notdir $(MAN)); \
)
rm -f $(DESTDIR)$(SYSCONFDIR)/bash_completion.d/git-vendor
clean: docclean
docclean:
rm -f man/*.1
rm -f man/*.html
.PHONY: default docs clean docclean install uninstall

+ 10
- 1
README.md View File

@ -11,8 +11,17 @@ A work in progress git command for managing golang vendor dependencies.
* `git vendor update <dir> <ref>` - update a vendored dependency to `<ref>`. * `git vendor update <dir> <ref>` - update a vendored dependency to `<ref>`.
## Installation ## Installation
Manually:
```bash
git clone https://github.com/brettlangdon/git-vendor
cd ./git-vendor
make
```
One-liner:
```bash ```bash
(wget -O /usr/local/bin/git-vendor https://raw.githubusercontent.com/brettlangdon/git-vendor/master/git-vendor && chmod +x /usr/local/bin/git-vendor)
curl -sSL https://raw.githubusercontent.com/brettlangdon/git-vendor/master/install.sh | sudo bash /dev/stdin
``` ```
## Example ## Example


git-vendor → bin/git-vendor View File


+ 4
- 0
etc/bash_completion.sh View File

@ -0,0 +1,4 @@
_git_vendor()
{
__gitcomp "add list update"
}

+ 106
- 0
man/git-vendor.1 View File

@ -0,0 +1,106 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-VENDOR" "1" "January 2016" "" ""
.
.SH "NAME"
\fBgit\-vendor\fR \- manage vendored dependency subtrees
.
.SH "SYNOPSIS"
\fBgit\-vendor add <repository> <ref>\fR
.
.P
\fBgit\-vendor list\fR
.
.P
\fBgit\-vendor update <dir> <ref>\fR
.
.SH "DESCRIPTION"
Manage any repository dependencies under \fB/vendor/<repository>\fR with \fBgit\-subtree\fR\.
.
.P
\fBgit\-vendor\fR is unable to \fBlist\fR or \fBupdate\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 <repository> <ref>
.
.P
Add a new vendored dependency
.
.P
list
.
.P
List all existing vendored dependencies and their current version
.
.P
update <dir> <ref>
.
.P
Update the vendored dependency to a different version
.
.SH "OPTIONS"
<repository>
.
.P
The repository url to vendor\. e\.g\. \fBhttps://github\.com/<username>/<repo\-name>\fR (supports \fBhttp://\fR, \fBhttps://\fR \fBgit://\fR and \fBgit@\fR protocols)\.
.
.P
<ref>
.
.P
The ref to vendor\. e\.g\. \fBmaster\fR, \fBv1\.0\.2\fR, etc
.
.P
<dir>
.
.P
The vendor directory for the dependency\. e\.g\. \fBvendor/github\.com/<username>/<repo\-name>\fR\.
.
.SH "EXAMPLES"
Adding a new dependency:
.
.IP "" 4
.
.nf
$ git vendor add https://github\.com/brettlangdon/forge v0\.1\.4
.
.fi
.
.IP "" 0
.
.P
Updating an existing dependency:
.
.IP "" 4
.
.nf
$ git vendor update vendor/github\.com/brettlangdon/forge v0\.1\.7
.
.fi
.
.IP "" 0
.
.P
List all existing dependencies:
.
.IP "" 4
.
.nf
$ git vendor list
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Brett Langdon \fIme@brett\.is\fR
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/brettlangdon/git\-vendor/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/brettlangdon/git\-vendor\fR>

+ 158
- 0
man/git-vendor.1.html View File

@ -0,0 +1,158 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' value='text/html;charset=utf8'>
<meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
<title>git-vendor(1) - manage vendored dependency subtrees</title>
<style type='text/css' media='all'>
/* style: man */
body#manpage {margin:0}
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
.mp h2 {margin:10px 0 0 0}
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
.mp h3 {margin:0 0 0 4ex}
.mp dt {margin:0;clear:left}
.mp dt.flush {float:left;width:8ex}
.mp dd {margin:0 0 0 9ex}
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
.mp pre {margin-bottom:20px}
.mp pre+h2,.mp pre+h3 {margin-top:22px}
.mp h2+pre,.mp h3+pre {margin-top:5px}
.mp img {display:block;margin:auto}
.mp h1.man-title {display:none}
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
.mp h2 {font-size:16px;line-height:1.25}
.mp h1 {font-size:20px;line-height:2}
.mp {text-align:justify;background:#fff}
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
.mp u {text-decoration:underline}
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
.mp b.man-ref {font-weight:normal;color:#434241}
.mp pre {padding:0 4ex}
.mp pre code {font-weight:normal;color:#434241}
.mp h2+pre,h3+pre {padding-left:0}
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
ol.man-decor {width:100%}
ol.man-decor li.tl {text-align:left}
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
ol.man-decor li.tr {text-align:right;float:right}
</style>
</head>
<!--
The following styles are deprecated and will be removed at some point:
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
.man-navigation should be used instead.
-->
<body id='manpage'>
<div class='mp' id='man'>
<div class='man-navigation' style='display:none'>
<a href="#NAME">NAME</a>
<a href="#SYNOPSIS">SYNOPSIS</a>
<a href="#DESCRIPTION">DESCRIPTION</a>
<a href="#COMMANDS">COMMANDS</a>
<a href="#OPTIONS">OPTIONS</a>
<a href="#EXAMPLES">EXAMPLES</a>
<a href="#AUTHOR">AUTHOR</a>
<a href="#REPORTING-BUGS">REPORTING BUGS</a>
<a href="#SEE-ALSO">SEE ALSO</a>
</div>
<ol class='man-decor man-head man head'>
<li class='tl'>git-vendor(1)</li>
<li class='tc'></li>
<li class='tr'>git-vendor(1)</li>
</ol>
<h2 id="NAME">NAME</h2>
<p class="man-name">
<code>git-vendor</code> - <span class="man-whatis">manage vendored dependency subtrees</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<p><code>git-vendor add &lt;repository> &lt;ref></code></p>
<p><code>git-vendor list</code></p>
<p><code>git-vendor update &lt;dir&gt; &lt;ref></code></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Manage any repository dependencies under <code>/vendor/&lt;repository></code> with <code>git-subtree</code>.</p>
<p> <code>git-vendor</code> is unable to <code>list</code> or <code>update</code> any dependencies it has not added, the reason is that <code>git-vendor</code> adds special commit messages so that it can track existing dependencies.</p>
<h2 id="COMMANDS">COMMANDS</h2>
<p> add &lt;repository&gt; &lt;ref&gt;</p>
<p> Add a new vendored dependency</p>
<p> list</p>
<p> List all existing vendored dependencies and their current version</p>
<p> update &lt;dir&gt; &lt;ref&gt;</p>
<p> Update the vendored dependency to a different version</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> &lt;repository&gt;</p>
<p> The repository url to vendor. e.g. <code>https://github.com/&lt;username>/&lt;repo-name></code> (supports <code>http://</code>, <code>https://</code> <code>git://</code> and <code>git@</code> protocols).</p>
<p> &lt;ref&gt;</p>
<p> The ref to vendor. e.g. <code>master</code>, <code>v1.0.2</code>, etc</p>
<p> &lt;dir&gt;</p>
<p> The vendor directory for the dependency. e.g. <code>vendor/github.com/&lt;username>/&lt;repo-name></code>.</p>
<h2 id="EXAMPLES">EXAMPLES</h2>
<p> Adding a new dependency:</p>
<pre><code>$ git vendor add https://github.com/brettlangdon/forge v0.1.4
</code></pre>
<p> Updating an existing dependency:</p>
<pre><code>$ git vendor update vendor/github.com/brettlangdon/forge v0.1.7
</code></pre>
<p> List all existing dependencies:</p>
<pre><code>$ git vendor list
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Brett Langdon <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#109;&#101;&#x40;&#x62;&#x72;&#101;&#x74;&#116;&#46;&#105;&#115;" data-bare-link="true">&#109;&#x65;&#64;&#x62;&#114;&#101;&#x74;&#x74;&#46;&#105;&#x73;</a></p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p>&lt;<a href="https://github.com/brettlangdon/git-vendor/issues" data-bare-link="true">https://github.com/brettlangdon/git-vendor/issues</a>&gt;</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p>&lt;<a href="https://github.com/brettlangdon/git-vendor" data-bare-link="true">https://github.com/brettlangdon/git-vendor</a>&gt;</p>
<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>January 2016</li>
<li class='tr'>git-vendor(1)</li>
</ol>
</div>
</body>
</html>

+ 71
- 0
man/git-vendor.md View File

@ -0,0 +1,71 @@
git-vendor(1) -- manage vendored dependency subtrees
================================
## SYNOPSIS
`git-vendor add <repository> <ref>`
`git-vendor list`
`git-vendor update <dir> <ref>`
## DESCRIPTION
Manage any repository dependencies under `/vendor/<repository>` with `git-subtree`.
`git-vendor` is unable to `list` or `update` any dependencies it has not added, the reason is that `git-vendor` adds special commit messages so that it can track existing dependencies.
## COMMANDS
add &lt;repository&gt; &lt;ref&gt;
Add a new vendored dependency
list
List all existing vendored dependencies and their current version
update &lt;dir&gt; &lt;ref&gt;
Update the vendored dependency to a different version
## OPTIONS
&lt;repository&gt;
The repository url to vendor. e.g. `https://github.com/<username>/<repo-name>` (supports `http://`, `https://` `git://` and `git@` protocols).
&lt;ref&gt;
The ref to vendor. e.g. `master`, `v1.0.2`, etc
&lt;dir&gt;
The vendor directory for the dependency. e.g. `vendor/github.com/<username>/<repo-name>`.
## EXAMPLES
Adding a new dependency:
$ git vendor add https://github.com/brettlangdon/forge v0.1.4
Updating an existing dependency:
$ git vendor update vendor/github.com/brettlangdon/forge v0.1.7
List all existing dependencies:
$ git vendor list
## AUTHOR
Written by Brett Langdon <me@brett.is>
## REPORTING BUGS
&lt;<https://github.com/brettlangdon/git-vendor/issues>&gt;
## SEE ALSO
&lt;<https://github.com/brettlangdon/git-vendor>&gt;

Loading…
Cancel
Save