Subcheat is a project mainly written in Ruby, based on the MIT license.
Cheat Subversion with some extra commands for common use cases.
= subcheat
Subcheat is a simple wrapper around Subversion's svn command-line client.
This is hobby project I'm hacking away on. Poke around at your own peril.
== Description
subcheat functions the same way svn does. You could alias subcheat to svn and use subcheat from now on without ever noticing it.
subcheat adds some subcommands that can make your life a little easier:
Also, some existing subcommands are enhanced:
=== Examples
Rolling back a commit is basically reverse-merging a revision into the current working copy. The following are equivalent:
subcheat undo 5000 svn merge -r 5000:4999 url/to/current/repo
Managing branches and tags are basic copy and list operations. The following are equivalent:
subcheat branch foo svn copy /svn/project/trunk /svn/project/branches/foo
subcheat branch -d foo svn delete /svn/project/branches/foo
subcheat branch svn list /svn/project/branches
Note that tags and branches work the same but operate on the +tags+ and +branches+ subdirectories respectively.
+reintegrate+ and +rebase+ are two similar tools for managing feature branches. These basically merge changes from a branch into trunk, or the other way around. These commands first determine the revision number that created the branch and then merge from that revision to +HEAD+. So, the following are equivalent:
subcheat reintegrate foo
svn log /svn/project/branches/foo --stop-on-copy
svn merge -r 5000:HEAD /svn/project/branches/foo .
Both +reintegrate+ and +rebase+ can accept a revision number as an argument to start the revision range to merge somewhere other than the branch starting point.
== Installation
This project will some day be released as a gem, so you can install it as easily as sudo gem install subcheat, but for now you will have to clone the project itself and include ./bin/subcheat in your path in some way.
Once you've got it set up, you should really alias svn to subcheat in your shell.
== Assumptions
Subcheat assumes a particular layout for your repository:
[root]
- project1
- trunk
- branches
- tags
- project2
- trunk
- branches
- tags
`- ...
It might some day be made more flexible, but this works for me right now.
== Note on Patches/Pull Requests
== Copyright
Copyright (c) 2009 Arjan van der Gaag. See LICENSE for details.