[Top] [Contents] [Index] [ ? ]

Chii


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Overview of Chii

Chii is a lightweight version control system. The goal was to create a minimalistic version control system suitable for small to medium sized projects that do not require full production grade source control software.

Main features include:

These features alone were the motivation for creating yet another source control system. All other features are intentionally not implemented, notably:

If there are any other feature that can be removed, they would have been removed already `^_^;'


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2. Commands

Chii contains only one special command, all other commands are handled generically.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1 commit - snapshot source tree

chii commit

Create a snapshot of the current source tree in the repository (See section Repository structure). If a repository does not yet exist, the first commit creates it, so the first commit should be done in the root directory of the source tree.

Chii will compare every file and directory with the latest version found in the repository, and append to changelog the list of changes (See section Changelog format). Note that a copy of every file in the source tree is included with every snapshot regardless of whether they changed or not, so versions are not dependent on each other.

Chii assumes all directories have the right read/execute permissions. If this is not true, the behavior is undefined. Chii will always create directories with 0750 permission. Permission on all files are preserved.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2 Generic commands

chii <command> <options>

For all commands other than commit, Chii will expand <options> to file names in the repository, then pass the expanded arguments to <command>. Every argument containing `#' is subject for expansion. The basic syntax for naming file versions is:

<filename>#<version>

Depending on your shell, you may need to escape `*' character in the arguments. Note that using `*' or `...' may cause a single argument to be expanded to multiple arguments.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. Implementation details


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 Repository structure

<parent directories>
 \-- <source root>
 |    \-- subdir1
 |        \-- subdir2
 |
 \-- chii_repository
      \-- changelog
      \-- <yyyy-mm-dd-HH-MM-SS>
          \-- subdir1
              \-- subdir2
                  ...

Each snapshot of the original source directory is stored in a subdirectory under the repository root. The root directory of the snapshot is a date string, which names the snapshot version.

For relative version names, the directories are sorted alphabetically, and the first directory becomes version 1, next is version 2, and so forth. Actual timestamp of the directories are ignored.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 Changelog format

<yyyy-mm-dd-HH-MM-SS>
   <file> <action>
   ...

Each commit causes an entry to be written to the changelog (stored in the root directory of the repository). Each unindented line specifies the change version, and each indented line specifies which file changed.


[Top] [Contents] [Index] [ ? ]

Table of Contents


[Top] [Contents] [Index] [ ? ]

About This Document

This document was generated by omoikane on June, 10 2006 using texi2html 1.76.

The buttons in the navigation panels have the following meaning:

Button Name Go to From 1.2.3 go to
[ < ] Back previous section in reading order 1.2.2
[ > ] Forward next section in reading order 1.2.4
[ << ] FastBack beginning of this chapter or previous chapter 1
[ Up ] Up up section 1.2
[ >> ] FastForward next chapter 2
[Top] Top cover (top) of document  
[Contents] Contents table of contents  
[Index] Index index  
[ ? ] About about (help)  

where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:


This document was generated by omoikane on June, 10 2006 using texi2html 1.76.