Table of Contents
dim - a distributed version control system
dim [-abcefnpqsMSVv] [-D Dir] [-I Item] [-L Lib] [-C Config]
[-U Url] [-d Diffopt] [-B Vers] [-i File] [-0-9 [Vers2]]
[Cmd [Arg ...]]
Dim is a version control system. It creates, clones, archives,
lists, replicates, extracts, prints differences, merges, ensures authenticity
and integrity of versions.
The options must be specified before command.
Options not applying to a command are silently ignored.
- -a
- Print all (anc,
desc, version, clone, item).
- -b
- Fork a new branch (save and export).
- -B Vers
- Fork a new branch named Vers (save and export).
- -c
- Report only files with
unresolved conflicts (diff).
- -C Config
- Set initial configuration file to
Config instead of ~/.dimrc.
- -d Diffopt
- Pass Diffopt option string to diff
command (diff).
- -D Dir
- Use directory Dir, instead of default $PWD.
- -e
- Select
exported ancestor instead of local (diff, anc).
- -f
- Force action.
- -i File
- Include file File (diff).
- -I Item
- Use item Item instead of default.
- -L Lib
- Use library Lib, instead of default.
- -M
- Release in main branch instead of
user branch (export).
- -N
- Show added words only (wdiff).
- -O
- Show removed words
only (wdiff). If both -N and -O flags are set, wdiff shown only added and
removed words, not unmodified content.
- -n
- Dry run mode. Simulate actions
but not perform them.
- -p
- Print version path.
- -q
- Quiet mode.
- -S
- Print version
sha1 checksum, obtained from the version content.
- -s
- Print short version
name.
- -U Url
- Use Url instead of default (get, put).
- -v
- Verbose mode. Print
detailed informations on /dev/stderr.
- -V
- Print the dim version and exit.
- anc [-aepSs] [Vers [Vers2]]
- Print the ancestor of Vers. If Vers2
is specified, print the closest common ancestor of Vers and Vers2. The -e
option print the exported ancestor. The -a option print all ancestors, from
recent to old, up to origin 0.
- anc2 [-aepSs] [Vers]
- Print ancestor2 of Vers
- chanc [-nv] Vers
- Change the ancestor of the current working directory to
Vers. A version must already be mounted to the working directory. Change
of Item is not permitted.
- comment [Dir]
- Edit the log file of the clone
corresponding to Dir or current directory if empty.
- copy [-fnqv] [File ...]
- Copy files from ancestor to clone
- dag [Vers [Vers2]]
- Print an ancestor-descendent
directed acyclic graph (dag) in a format usable by dot(1) or dotty(1). The
graph is rooted at the most ancestor node, by default 0, in the top, and
displays all existing nodes in descending order. If version Vers is specified,
then the graph is rooted at it. If version Vers2 is specified, all nodes
found after Vers2 are skipped. In the produced graph, a node represents
an item version, a black solid edges represents the ancestor-descendent
relationship, from ancestor to descendant. A red dotted edge represents
the ancestor2 relationship, induced by merge. The current clone node, if
found, is diplayed in grey.
- dar Vers
- Create a delta archive
- desc [-apSs]
[Vers]
- Print descendents of Vers
- diff [-cepSs] [-i File] [-d Diffopt] [Vers
[Vers2]]
- Print differences between ancestor Vers and descendent Vers2. The
command wdiff is the prefered way to browse differences between two versions.
- do_sum
- export [-Mbnv] [-B Vers] [Vers]
- Export a version Vers of item to
a public repository. A unique global version name is returned.
- fixlib [-nqv]
- Check library consistency, and repair errors. Run with -n to just print diagnostics.
- get [-nqv] [Item]
- Receive new archives from mirror
- import [-anqv] [Item|Vers]
- Extract archives into versions
- isanc2
- item [-ap] [Dir]
- Print item corresponding
to Dir
- ldiff [-epSs] [-I File] [Vers [Vers2]]
- Print differences
- lib [-l]
- Print the dim library path. In case of -l flag, display also the library
server URL.
- list [Vers]
- Print versions of files
- log [-ae] [-0-9] [Vers [Vers2]]
- Print log between old and new
- man
- Print dim manpage in txt2man(1) format
- merge [-fnqv] Vers
- Merge version Vers into current clone.
- merged [-nqv]
[Vers]
- Declare Vers merged in current clone
- mkclone [-nqv] Vers Dir
- Creates
a new directory Dir, where the item version Vers will be mounted on it,
and version content copied into it.
- mkitem [-nqv] Item
- Creates a new item
called Item. If Item is empty, use the base name of current directory.
- mklib
[-nqv] Url [Lib]
- Creates a new dim library associated to Url in directory
Lib. Default is $DIMLIB. The Url correspond to the version generator server.
- mkuser [Arg]
- Create a new user metadata record. If necessary, create ~/.dimrc
first.
- mount [-nqv] [Vers Dir]
- Associate the item Item to the working directory
Dir. If a version Vers is specified, change the ancestor to Vers instead
of default 0. If no arguments, list existing mounts.
- put [-nqv] [Item]
- Send
new archives to mirror
- remove [-npq] Vers
- Remove a version Vers from library.
If the version has been exported or is a clone directory, then the version
can be restored, as no data is suppressed, otherwise its removal can not
be undone.
In the current state, this command is dangerous and leads to
irreversible loss of data. Do not use it.
- save [-nvqb] [-B Vers] [Dir]
- Save
the content of directory Dir or current into a readonly version of item.
A unique local version name is returned.
- tgz [-nqv] Vers
- Generate a full
compressed tar file
- umount [-nvq] Vers|Dir
- Unmount the version Vers or Dir
- unexport [-nqv] Vers
- Undo an export operation (dangerous)
- unmerge [-afnqv]
[Vers]
- Remove Vers from the ancestor2 list of clone. If -f flag is set, restore
modified files from ancestor. If -a flag is set, all the ancestor2 of clone
are processed.
- version [-apsS] [Vers|Dir]
- Print item version info
- wdiff
[-epNOSs] [-I File] [Vers [Vers2]]
- Print differences
- DIMRC
- Pathname
of dim configuration file. Default is $HOME/.dimrc.
- DIMLIB
- Directory name
of dim library directory. Default is $HOME/dimlib.
- $HOME/.dimrc
- Initial
script configuration file, in sh(1) format. It can be overriden by option
-C Config or by environment variable DIMRC. This file must be accessible
in read or write mode by owner only.
- Symbolic links,
empty directories and special files are not supported yet.
- Filenames with
newlines are not supported yet.
- MS-DOS format conversion (lf <-> crlf) is not
supported yet.
- There is no delta compression of binary files yet.
- Version
check and signature check are not yet implemented.
- Passphrases for RSA signing
are not supported.
- Version logs and comments are not well managed yet.
- Versions
are not dated yet.
- Merge conflicts are not reported yet (you must scan yourself).
- The support of item composition is not yet implemented.
- This manual page
is still incomplete: lacks overall description, and examples.
- Some documentation
about dim internals is lacking for extension writers.
- This list is too long.
sh(1), dotty(1), dot(1)
http://www.oligem.com/dim/
Although
born in late 2007, dim has its roots back into the early 80s, and is the
result of a long experience in configuration management for large industrial
software development projects. It all started with P. Nicklin in Berkeley
CSRG, who created SPMS, which was later derived into SPMS+ in Thomson-CSF
by X.T. Ho and P. Bergheaud. Then, inspired by Plan 9, Bergheaud created IFS,
which became SIM when it incorporated some concepts from Ho. On his side,
Ho wrote an upper layer to SIM called SDL. In the 90s, M. Vertes integrated
CVS and SPMS+ for Airsys-ATM, in a project called BTC. After some time, Vertes,
later joined by Bergheaud, wrote a distributed and slim version of SIM
called DVS, in use in Meiosys Inc, then IBM. dim is a complete redesign
and rewrite of DVS, with new additional features, in portable shell.
Marc
Vertes <mvertes@free.fr>
Table of Contents