** short term issue

* add option -z to complession.

* print error message of cvs if it's fatal.

* abstract a queue as a sequence of jobs.
  kind of jobs:
    SuckModule
    SuckDirectory
    SuckFile
    ... (?)

* restart (keep queue as file).

dump queue in file when leaving directory.

* try to find CVSROOT to get LockDir

* call checkinable? only once for each delta.
  (by caching lock_rev in checkinable?)

* call rlog only once for each directory. 
  (rlog can take multiple ,v files in arguments.)

* hide log getting from update_directory.
(update_file should get itself.  Of course it should get logs in whole directory and cache it.)

* incremental rcsfile attribute update.

* clear lock when SIGTERM

* an option to disable new directory detection.
and use local directory structure to traverse.

* All output should be scanned and unrecognized message should throw exception.

* create RemoteRepository, RemoteDirectory, RemoteFile as well as LocalRepository, LocalDirectory, LocalFile.

** middle term issue

* use autoconf.

* use the option -d for cvs log.

* support revision/tag translation.

-t main-trunk-tag[:N]

a.b.c.d.e.... -> 1.1.999.N.a.b.c.d.e....

1.1 and 1.1.999.N is automatically generated as empty contents if it
is not exist yet.

N is a number to identify imported tree.

if N is 1, suffixed hyphens of tag will be doubled.

a-b-c	-> a-b-c
a-b-c-	-> a-b-c--
a-b-c--	-> a-b-c----

if N is not 1, --N- is inserted after last non-hyphen character addition to above translation.

a-b-c	-> a-b-c--N-
a-b-c-	-> a-b-c--N---
a-b-c--	-> a-b-c--N-----

Note that valid tag is [A-Za-z][A-Za-z_-]*

* setup proper tag to refer translated main trunk.

[* handle multiple directories at once.]

** long term issue

* don't use cvs command by talking cvs client/server protocol directly.

* handle dead state more properly. (valuable? possible?)

  Currently, a revision which state is dead has empty contents.
  But real repository may not.
  (For example, dead revision is same as the revision just before.)

* don't use rcs.

  to handle empty log message properly.
