diff --git a/Makefile b/Makefile index 7c040770d67ece18dafcfd61d0fc314fd208c3d8..a52e9edf49b4996a99dad1658c93c9c19a12b1b7 100644 --- a/Makefile +++ b/Makefile @@ -1,34 +1,35 @@ PREFIX=/usr -manpages=vcsh.1 +self=vcsh +manpages=$(self).1 all=test manpages all: $(all) install: all install -d $(DESTDIR)$(PREFIX)/bin - install -m 0755 vcsh $(DESTDIR)$(PREFIX)/bin + install -m 0755 $(self) $(DESTDIR)$(PREFIX)/bin install -d $(DESTDIR)$(PREFIX)/share/man/man1 - install -m 0644 $(manpages) $(DESTDIR)$(PREFIX)/share/man/man1 - install -d $(DESTDIR)$(PREFIX)/share/doc/vcsh - install -m 0644 README.md $(DESTDIR)$(PREFIX)/share/doc/vcsh - install -m 0644 doc/hooks $(DESTDIR)$(PREFIX)/share/doc/vcsh + install -m 0644 $(manpages) $(DESTDIR)$(PREFIX)/share/man/man1 + install -d $(DESTDIR)$(PREFIX)/share/doc/$(self) + install -m 0644 README.md $(DESTDIR)$(PREFIX)/share/doc/$(self) + install -m 0644 doc/hooks $(DESTDIR)$(PREFIX)/share/doc/$(self) install -d $(DESTDIR)$(PREFIX)/share/zsh/vendor-completions - install -m 0644 _vcsh $(DESTDIR)$(PREFIX)/share/zsh/vendor-completions + install -m 0644 _$(self) $(DESTDIR)$(PREFIX)/share/zsh/vendor-completions manpages: $(manpages) -vcsh.1: doc/vcsh.1.ronn - ronn < doc/vcsh.1.ronn > vcsh.1 +$(self).1: doc/$(self).1.ronn + ronn < doc/$(self).1.ronn > $(self).1 clean: - rm -rf vcsh.1 + rm -rf $(self).1 uninstall: - rm -rf $(DESTDIR)$(PREFIX)/bin/vcsh - rm -rf $(DESTDIR)$(PREFIX)/share/man/man1/vcsh.1 - rm -rf $(DESTDIR)$(PREFIX)/share/doc/vcsh - rm -rf $(DESTDIR)$(PREFIX)/share/zsh/vendor-completions/_vcsh + rm -rf $(DESTDIR)$(PREFIX)/bin/$(self) + rm -rf $(DESTDIR)$(PREFIX)/share/man/man1/$(self).1 + rm -rf $(DESTDIR)$(PREFIX)/share/doc/$(self) + rm -rf $(DESTDIR)$(PREFIX)/share/zsh/vendor-completions/_$(self) # Potentially harmful, used a non-standard option on purpose. # If PREFIX=/usr/local and that's empty... diff --git a/README.md b/README.md index f30545d1ebfd8b10c3bec43325bdb3bba0e0136e..c0585d237617259e167c1ca5670d5d4c831a9bc8 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ community around the general idea of version controlling your (digital) life. * IRC: #vcs-home on irc.oftc.net -* Mailing list: vcs-home@lists.madduck.net +* Mailing list: http://lists.madduck.net/listinfo/vcs-home * Pull requests or issues on https://github.com/RichiH/vcsh @@ -98,7 +98,7 @@ To illustrate, this is what a possible directory structure looks like. ### available.d ### -The files you see in $XDG_CONFIG_HOME/mr/available.d are mr configuration files +The files you see in $XDG\_CONFIG\_HOME/mr/available.d are mr configuration files that contain the commands to manage (checkout, update etc.) a single repository. vcsh repo configs end in .vcsh, git configs end in .git, etc. This is optional and your preference. For example, this is what a zsh.vcsh @@ -116,7 +116,7 @@ this repository and fork your own. ### config.d ### -$XDG_CONFIG_HOME/mr/available.d contains *all available* repositories. Only +$XDG\_CONFIG\_HOME/mr/available.d contains *all available* repositories. Only files/links present in mr/config.d, however, will be used by mr. That means that in this example, only the zsh, gitconfigs, tmux and vim repositories will be checked out. A simple `mr update` run in $HOME will clone or update those @@ -130,11 +130,13 @@ this: [DEFAULT] jobs = 5 - include = cat $XDG_CONFIG_HOME/mr/config.d/* + # Use if your mr does not have vcsh support in mainline, yet + include = cat /usr/share/mr/vcsh + include = cat ${XDG_CONFIG_HOME:-$HOME/.config}/mr/config.d/* ### repo.d ### -$XDG_CONFIG_HOME/vcsh/repo.d is the directory where all git repositories which +$XDG\_CONFIG\_HOME/vcsh/repo.d is the directory where all git repositories which are under vcsh's control are located. Since their working trees are configured to be in $HOME, the files contained in those repositories will be put in $HOME directly. @@ -185,10 +187,10 @@ Make sure none of the following files and directories exist for your test * ~/.gitignore.d * ~/.mrconfig -* $XDG_CONFIG_HOME/mr/available.d/mr.vcsh -* $XDG_CONFIG_HOME/mr/available.d/zsh.vcsh -* $XDG_CONFIG_HOME/mr/config.d/mr.vcsh -* $XDG_CONFIG_HOME/vcsh/repo.d/mr.git/ +* $XDG\_CONFIG\_HOME/mr/available.d/mr.vcsh +* $XDG\_CONFIG\_HOME/mr/available.d/zsh.vcsh +* $XDG\_CONFIG\_HOME/mr/config.d/mr.vcsh +* $XDG\_CONFIG\_HOME/vcsh/repo.d/mr.git/ All of the files are part of the template repository, the directory is where the template will be stored. diff --git a/changelog b/changelog new file mode 100644 index 0000000000000000000000000000000000000000..bfc4d24064c924d5c6d9bf4659d91a73279e146d --- /dev/null +++ b/changelog @@ -0,0 +1,88 @@ +2012-02-27 Richard Hartmann <richih.mailinglist@gmail.com> + + * Refactor Makefile + * Fix license information in manpage + +2012-02-15 Richard Hartmann <richih.mailinglist@gmail.com> + + * Introduce `vcsh which` + * hooks will tell you when they are being executed + * Formatting & resilience improvements + * We have a changelog, now! (yay) + +2012-02-03 Richard Hartmann <richih.mailinglist@gmail.com> + + * Improve documentation + * More resilient error handling + * Add AUTHORS + +2012-01-16 Richard Hartmann <richih.mailinglist@gmail.com> + + * Introduce hook support + +2011-12-27 Richard Hartmann <richih.mailinglist@gmail.com> + + * Improve documentation + +2011-12-26 Richard Hartmann <richih.mailinglist@gmail.com> + + * Introduce and use .config/vcsh/config + * More verbose error handling + * Introduce `vcsh {list-tracked,list-tracked-by}` + * Introduce repo shortcuts (`vcsh zsh commit`) + * Rename `vcsh seed-gitignore` to `vcsh write-gitignore` + * Add license information + +2011-11-29 Richard Hartmann <richih.mailinglist@gmail.com> + + * Bugfixes + * Refactor error handling + * Make code more resilient + * Make vcsh play nice with mr + * Introduce vcsh mv and setup + +2011-11-23 Richard Hartmann <richih.mailinglist@gmail.com> + + * Bugfixes + * Minor refactoring of code + +2011-11-22 Richard Hartmann <richih.mailinglist@gmail.com> + + * Bugfixes + +2011-11-20 Richard Hartmann <richih.mailinglist@gmail.com> + + * Major refactoring of code + * Rewrite help files + * Bugfixes + +2011-11-19 Richard Hartmann <richih.mailinglist@gmail.com> + + * Bugfixes + * Improve XDG compability + +2011-11-18 Richard Hartmann <richih.mailinglist@gmail.com> + + * Yet more documentation improvements + * Makefile + * Heed already-defined ENV variables within vcsh + * Handle .gitignore.d/$repo automagically + +2011-11-11 Richard Hartmann <richih.mailinglist@gmail.com> + + * Major rewrite of all help files + * Addition of manpage + +2011-10-27 Richard Hartmann <richih.mailinglist@gmail.com> + + * Bugfixes + * Make help more verbose + * Improve INSTALL + +2011-10-18 Richard Hartmann <richih.mailinglist@gmail.com> + + * Fixed bug in vcsh clone & init + +2011-10-17 Richard Hartmann <richih.mailinglist@gmail.com> + + * Initial release diff --git a/debian/changelog b/debian/changelog index 33c158b9ad201f0218cfce16362a5dfa83d3726e..ed17f713aa1519d7a7c85839ec8e5088c64cb2ec 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +vcsh (0.20120227-1) unstable; urgency=low + + * New upstream release + + Refactor Makefile + + Fix license information in manpage + * Packaging changes + + Bump Standards-Version to 3.9.3 (no changes) + + -- Richard Hartmann <richih.mailinglist@gmail.com> Mon, 27 Feb 2012 22:38:24 +0100 + +vcsh (0.20120215-1) unstable; urgency=low + + * New upstream release + * Introduce `vcsh which` + * hooks will tell you when they are being executed + * Formatting & resilience improvements + + -- Richard Hartmann <richih.mailinglist@gmail.com> Wed, 15 Feb 2012 21:16:45 +0100 + vcsh (0.20120203-1~bpo60+1) squeeze-backports; urgency=low * Rebuild for squeeze-backports. diff --git a/debian/control b/debian/control index 11744be135316fa14b0c1150b4541586ec6a1e90..edded467ad67f17f28a63729534b8b09280522da 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: vcsh Maintainer: Richard Hartmann <richih.mailinglist@gmail.com> Section: misc Priority: optional -Standards-Version: 3.9.2 +Standards-Version: 3.9.3 Build-Depends: debhelper (>= 7), git Vcs-Git: git://github.com/RichiH/vcsh.git Vcs-Browser: https://github.com/RichiH/vcsh diff --git a/doc/hooks b/doc/hooks index 199123fe868cf4be7b5b3f6b638c526d5acea220..036e2dc6a28ca6e76e4a4a504b8a224abee7a21f 100644 --- a/doc/hooks +++ b/doc/hooks @@ -1,4 +1,6 @@ Available hooks are: +pre-command +post-command pre-enter post-enter pre-run diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn index f9a849fa5817478ce40769ad4bd979d66afd4b52..76ae2a50920cb57db994787ada87f9ba5cb1e38a 100644 --- a/doc/vcsh.1.ronn +++ b/doc/vcsh.1.ronn @@ -25,6 +25,8 @@ vcsh(1) - manage config files in $HOME via fake bare git repositories `vcsh` setup <repo> +`vcsh` which <substring> + `vcsh` write-gitignore <repo> `vcsh` <repo> <gitcommand> @@ -98,11 +100,14 @@ an interactive user. * setup: Set up repository with recommended settings. +* which <substring>: + Find <substring> in name of any tracked file. + * write-gitignore: Write .gitignore.d/<repo> via git ls-files. * <repo> <gitcommand>: - Shortcut to run `vcsh` on a repo. Will prepend `git` to <command> by itself. + Shortcut to run `vcsh` on a repo. Will prepend `git` to <command>. * <repo>: Shortcut to run `vcsh enter <repo>`. @@ -175,7 +180,7 @@ This manpage and `vcsh` itself were written by Richard "RichiH" Hartmann. Copyright 2011-2012 Richard Hartmann <richih.mailinglist@gmail.com> -Licensed under the GNU GPL version 3 or higher. +Licensed under the GNU GPL version 2 or higher. https://github.com/RichiH/vcsh diff --git a/vcsh b/vcsh index 41d5ed03e5669238a726ea51d0e7af6595d51154..ba0049e542120cf4931ce3652b9b412808bef2b4 100755 --- a/vcsh +++ b/vcsh @@ -35,6 +35,7 @@ help() { run <repo> \\ <command> Use this repository setup Set up repository with recommended settings + which <substring> Find substring in name of any tracked file write-gitignore \\ <repo> Write .gitignore.d/<repo> via git ls-files @@ -100,7 +101,7 @@ To continue, type 'Yes, do as I say'" for file in $files; do rm -f $file || info "could not delete '$file', continuing with deletion" done - rmdir "$GIT_DIR" || error "could not delete '$GIT_DIR'" + rm -r "$GIT_DIR" || error "could not delete '$GIT_DIR'" } enter() { @@ -183,6 +184,14 @@ use() { export VCSH_DIRECTORY="$VCSH_REPO_NAME" } +which() { + for VCSH_REPO_NAME in $(list); do + for VCSH_FILE in $(get_files); do + echo $VCSH_FILE | grep -q "$VCSH_COMMAND_PARAMETER" && echo "$VCSH_REPO_NAME: $VCSH_FILE" + done + done | sort -u +} + write_gitignore() { use cd "$VCSH_BASE" || fatal "could not enter '$VCSH_BASE'" 11 @@ -219,19 +228,24 @@ if [ ! "x$VCSH_GITIGNORE" = 'xexact' ] && [ ! "x$VCSH_GITIGNORE" = 'xrecursive' fi if [ "$1" = 'clone' ]; then - [ -z $2 ] && fatal "$1: please specify a remote" 1 + [ -z "$2" ] && fatal "$1: please specify a remote" 1 export VCSH_COMMAND="$1" GIT_REMOTE="$2" [ -n "$3" ] && VCSH_REPO_NAME="$3" || VCSH_REPO_NAME=$(basename "$GIT_REMOTE" .git) export VCSH_REPO_NAME export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git" -elif [ "$1" = 'delete' ] || - [ "$1" = 'enter' ] || - [ "$1" = 'init' ] || - [ "$1" = 'list-tracked-by' ] || - [ "$1" = 'rename' ] || - [ "$1" = 'run' ] || - [ "$1" = 'setup' ] || +elif [ "$1" = 'which' ]; then + [ -z "$2" ] && fatal "$1: please specify a filename" 1 + [ -n "$3" ] && fatal "$1: too many parameters" 1 + export VCSH_COMMAND="$1" + export VCSH_COMMAND_PARAMETER="$2" +elif [ "$1" = 'delete' ] || + [ "$1" = 'enter' ] || + [ "$1" = 'init' ] || + [ "$1" = 'list-tracked-by' ] || + [ "$1" = 'rename' ] || + [ "$1" = 'run' ] || + [ "$1" = 'setup' ] || [ "$1" = 'write-gitignore' ]; then [ -z $2 ] && fatal "$1: please specify repository to work on" 1 [ "$1" = 'rename' -a -z "$3" ] && fatal "$1: please specify a target name" 1 @@ -284,5 +298,7 @@ done verbose "$VCSH_COMMAND begin" export VCSH_COMMAND=$(echo $VCSH_COMMAND | sed 's/-/_/g') +hook pre-command $VCSH_COMMAND +hook post-command verbose "$VCSH_COMMAND end, exiting"