Table of Contents

Name

dim - a distributed version control system

Synopsis


dim [-abcefnpqsMSVv] [-D Dir] [-I Item] [-L Lib] [-C Config]
    [-U Url] [-d Diffopt] [-B Vers] [-i File] [-0-9 [Vers2]]
    [Cmd [Arg ...]]

Description

Dim is a version control system. It creates, clones, archives, lists, replicates, extracts, prints differences, merges, ensures authenticity and integrity of versions.

Options

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.

Commands

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

Environment

DIMRC
Pathname of dim configuration file. Default is $HOME/.dimrc.
DIMLIB
Directory name of dim library directory. Default is $HOME/dimlib.

Files

$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.

Bugs and Limitations

See Also

sh(1), dotty(1), dot(1)

http://www.oligem.com/dim/

History

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.

Author

Marc Vertes <mvertes@free.fr>


Table of Contents