1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/bin/more
//////////////////////////////////////////////////////////////////////
rvs 0.6.3
retroactive versioning system
a versioning system that allows you to check
in commit 2 before commit 1
//////////////////////////////////////////////////////////////////////
introduction
The name is a little bit of a nod to RCS (revision control
system), and even less to CVS. I'm not particularly fond of CVS,
but recognize it's impact on the scm scene.
rvs is about being able to go back and edit *anything* that has
already been committed. Yes, some other SCMs do this, but fuck
things proper if someone else has a copy of the old version.
Why would you want to do this? Take for example the Bazaar
repository rvs is hosted on: It starts at 0.6.0, what if I later
want to import 0.0.0 - 0.5.10? Or if I'm trying to construct a
history of BSD, and import all the BSDs I can find, such as
1,3,4, then latter find 2?
system requirements
Pretty much any *nix system should be able to run rvs. If you
need to use a shell other than GNU bash, run ./configure with
the --SHELL=YOUR_SHELL option. rvs is not designed for Windows,
but should be able to run in bash if you have some *nix pack
installed.
To my knowledge, this is the absolute requirements (all need to
be in your PATH):
* GNU bash
* cat (included in GNU Core Utils)
* cp (included in GNU Core Utils)
* cut (included in GNU Core Utils)
* echo (included in GNU Core Utils)
* mkdir (included in GNU Core Utils)
* rm (included in GNU Core Utils)
* sed (included in GNU Core Utils)
* sha1sum (included in GNU Core Utils)
* tempfile (included in GNU Core Utils)
* tr (included in GNU Core Utils)
building
rvs doesn't exactly use the GNU build system, but acts much like
it does. To build rvs with default configuration, simply run:
$ ./configure
$ make
# make install
It's generally considered good practice to build in another
directory than the source directory. This is not nescessary in
rvs , all the created file are put in another directory anyway.
If you would still like to do this, it can be done in rvs-0.6.1
and up.
Configuration
There are several configuration variables that can be set. The
default values are kept in the file `Variables'.
Variables is in the format `VAR_NAME<tab>VALUE'. You can modify
these configuration variables by editing the `Variables' file
directly, or by running ./configure such as:
$ ./configure --VAR_NAME=VALUE
The different configuration variables are as follows:
VER value='0.6.3'
rvs's internal varsion number
SHELL value='/usr/bin/env bash'
the shell that scripts will be run in.
prefix value="$HOME"
where the files will be installed. For me the defualt is
`/home/luke'. Many of you will want to change this to '/usr'
bindir value='bin'
the binaries folder inside the prefix. If I leave the prefix
and bindir the same, for me rvs is installed in
`/home/luke/bin'. If I change prefix to '/usr', then rvs will
be installed in `/usr/bin'
libdir value='/etc/rvs/'
where the rvs libraries will be installed. In rvs almost
nothing is actually done in the execurable you call when you
type `rvs' ([$prefix]/[$bindir]/rvs) but option handling. All
the real work is done in modular sub-programs. I call them
libraries, even though they are independend programs that
communicate via pipes. Note that they probably should NOT be
located in your PATH.
~ Luke Shumaker <LukeShu@sbcglobal.net>
Happy Hacking!
|