From: Richard Hartmann Date: Fri, 11 Nov 2011 13:25:49 +0000 (+0100) Subject: Merge branch 'master' of github.com:RichiH/vcsh X-Git-Url: https://git.madduck.net/code/vcsh.git/commitdiff_plain/f283bccb90c9bb61fbf1bb3b510970336d23261d?hp=d1cff2933e53783b55be593be577f0cee61d0297 Merge branch 'master' of github.com:RichiH/vcsh --- diff --git a/INSTALL.md b/INSTALL.md index 13f7b32..4979ca1 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,14 +1,15 @@ # Getting started with vcsh # -Below you will find three methods for setting up vcsh: +Below, you will find a few different methods for setting up vcsh: 1. The template way 2. The steal-from-template way 3. The manual way +4. Using vcsh without mr # 1. The template way # -## Prerequisites ## +## 1.1 Prerequisites ## Make sure none of the following files/diretories exist for your test (user). If they do, move them away for now: @@ -23,7 +24,7 @@ All of the files are part of the template repository, the directory is where the apt-get install mr # this is optional, but highly recommended -## Clone the template ## +## 1.2 Clone the template ## mkdir -p ~/work/git cd !$ @@ -33,7 +34,7 @@ All of the files are part of the template repository, the directory is where the cd vcsh clone git://github.com/RichiH/vcsh_mr_template.git mr.vcsh -## Enable your test repository ## +## 1.3 Enable your test repository ## mv ~/.zsh ~/zsh.bak mv ~/.zshrc ~/zshrc.bak @@ -42,7 +43,7 @@ All of the files are part of the template repository, the directory is where the cd mr up -## Set up your own repositories ## +## 1.4 Set up your own repositories ## Now, it's time to edit the template config and fill it with your own remotes: @@ -62,9 +63,9 @@ And then create your own stuff: Done! -## Daily use ## +## 1.5 Daily use ## -### Keeping repositories up-to-date ### +### 1.5.1 Keeping repositories up-to-date ### This is the beauty of it all. Once you are set up, just run: @@ -73,7 +74,7 @@ This is the beauty of it all. Once you are set up, just run: Neat. -### Making changes ### +### 1.5.2 Making changes ### After you have made some changes, for which you would normally use `git add` and `git commit`, use the vcsh wrapper (like above): @@ -128,3 +129,32 @@ mr is used to actually retrieve configs, etc # $XDG_CONFIG_HOME/mr/available.d to $XDG_CONFIG_HOME/mr/config.d ~ % cd ~ % mr -j 5 up + +# 4. Using vcsh without mr # + +vcsh encourages you to use mr. +It helps you manage a large number of repositories by running the necessary vcsh commands for you. +You may choose not to use mr, in which case you will have to run those commands manually or by other means. + +## 4.1 A few examples ## + +To initialize a new repository: `vcsh init zsh` + +To clone a repository: `vcsh clone ssh:///zsh.git` + +To interact with a repository, use the regular Git commands, but prepend them with `vcsh run $repository_name`. +For example: + + vcsh run zsh git status + vcsh run zsh git add -f .zshrc + vcsh run zsh git commit + +Obviously, without mr keeping repositories up-to-date, it will have to be done manually. +Alternatively, you could try something like this: + + for repo in `vcsh list`; do + vcsh run $repo git pull; + done + +---------- +Questions? RichiH@{Freenode,OFTC,IRCnet} diff --git a/README.md b/README.md index 4263ad0..104114d 100644 --- a/README.md +++ b/README.md @@ -26,56 +26,57 @@ It expects single-purpose repositories and stores them in a hidden directory (si However, it does not create symbolic links in $HOME; it puts the actual files right into $HOME. Furthermore, by making use of mr [1], it makes it very easy to enable/disable and clone a large number of repositories. +The use of mr is technically optional, but it will be an integral part of the proposed system that follows. ## Default Directory Layout ## To illustrate, this is what a possible directory structure looks like. - $HOME - |-- .config - | |-- mr - | | |-- available.d - | | | |-- zsh.vcsh - | | | |-- gitconfigs.vcsh - | | | |-- lftp.vcsh - | | | |-- offlineimap.vcsh - | | | |-- s3cmd.vcsh - | | | |-- tmux.vcsh - | | | |-- vim.vcsh - | | | |-- vimperator.vcsh - | | | |-- snippets.git - | | |-- config.d - | | | |-- zsh.mrconfig -> ../available.d/zsh.mrconfig - | | | |-- gitconfigs.mrconfig -> ../available.d/gitconfigs.mrconfig - | | | |-- tmux.mrconfig -> ../available.d/tmux.mrconfig - | | | `-- vim.mrconfig -> ../available.d/vim.mrconfig - | `-- vcsh - | `-- repo.d - | |-- zsh.git -----------+ - | |-- gitconfigs.git | - | |-- tmux.git | - | `-- vim.git | - |-- [...] | - |-- .zshrc <----------------------+ - |-- .gitignore - |-- .mrconfig - `-- .mrtrust + $HOME + |-- .config + | |-- mr + | | |-- available.d + | | | |-- zsh.vcsh + | | | |-- gitconfigs.vcsh + | | | |-- lftp.vcsh + | | | |-- offlineimap.vcsh + | | | |-- s3cmd.vcsh + | | | |-- tmux.vcsh + | | | |-- vim.vcsh + | | | |-- vimperator.vcsh + | | | |-- snippets.git + | | |-- config.d + | | | |-- zsh.mrconfig -> ../available.d/zsh.mrconfig + | | | |-- gitconfigs.mrconfig -> ../available.d/gitconfigs.mrconfig + | | | |-- tmux.mrconfig -> ../available.d/tmux.mrconfig + | | | `-- vim.mrconfig -> ../available.d/vim.mrconfig + | `-- vcsh + | `-- repo.d + | |-- zsh.git -----------+ + | |-- gitconfigs.git | + | |-- tmux.git | + | `-- vim.git | + |-- [...] | + |-- .zshrc <----------------------+ + |-- .gitignore + |-- .mrconfig + `-- .mrtrust In this setup, ~/.mrconfig looks like: - [DEFAULT] - jobs = 5 - include = cat ~/.config/mr/config.d/* + [DEFAULT] + jobs = 5 + include = cat ~/.config/mr/config.d/* The files you see in ~/.config/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.mrconfig with read-only access to my zshrc repo looks likes. I.e. in this specific example, push can not work. - [$HOME/.config/vcsh/repo.d/zsh.git] - checkout = vcsh clone 'git://github.com/RichiH/zshrc.git' - update = vcsh run bash git pull - push = vcsh run bash git push - status = vcsh run bash git status + [$HOME/.config/vcsh/repo.d/zsh.git] + checkout = vcsh clone 'git://github.com/RichiH/zshrc.git' + update = vcsh run bash git pull + push = vcsh run bash git push + status = vcsh run bash git status ~/.config/mr/available.d contains *all available* repositories. Only files/links present in mr/config.d, however, will be used by mr.