[Top] | [Contents] | [Index] | [ ? ] |
1. Overview of Chii | Why bother? | |
2. Commands | What can I do with it? | |
3. Implementation details | What's happening behind my back? |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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:
commit
command creates the repository.
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] | [ ? ] |
Chii contains only one special command, all other commands are handled generically.
2.1 commit - snapshot source tree | ||
2.2 Generic commands |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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>
<filename>
specifies the name of file, with relative paths
expanded. Use `*' to match all files in repository directory
(files only, directories not included).
`...' to match all files in repository directory and
subdirectories (files only).
<version>
names a file version, which is a date string in the
form of yyyy-mm-dd-HH-MM-SS
. Any part of HH-MM-SS
may
be dropped, in which case all versions with the same prefix will be
matched.
<filename>#
(missing version) selects the last version in
repository.
#<version>
(missing filename) names a file in the root
directory of the repository. Usually you would want to do this with
#changelog
. To operate on an entire version subdirectory with
version expansion, use .#<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.1 Repository structure | ||
3.2 Changelog format |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
<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] | [ ? ] |
<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] | [ ? ] |
[Top] | [Contents] | [Index] | [ ? ] |
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.