******************************************************************************** Brett's arch Quick Reference ******************************************************************************** (sequential) indicates that these are steps to be followed in order for the given task. -------------------------------------------------------------------------------- Very Quick Start Guide (explained in more detail below) (sequential) $ apt-get install tla (or other installation for non-debian users) $ tla my-id "John Doe " $ mkdir /somedir/{archives} (opt) $ tla make-archive jon@doe.com--archivename /somedir/{archives}/archivename $ tla my-default-archive jon@doe.com--archivename (opt) $ tla archive-setup [-A non_default_archive] hello-world--main--0.1 $ cd my/existing/source/tree/ $ tla init-tree [-A non_default_archive] hello-world--main--0.1 $ tla id-tagging-method tagline (opt) # add files here according to id-tagging-method tagline: add " arch-tag: " to top of each source file explicit (default): tla add filename.ext $ vi `tla make-log` (or tla make-log then edit the ++log file) $ tla import -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- installing from debian package (sequential) $ apt-get install tla -------------------------------------------------------------------------------- specifying arch user id (sequential) $ tla my-id "John Doe " should be in this format. -------------------------------------------------------------------------------- creating a new archive (repository) (sequential) $ mkdir /somedir/{archives} optional. can be called something other than {archives} (w/wo {}). this is the dir where the archives will go. could be in some already extant dir. $ tla make-archive jon@doe.com--archivename /somedir/{archives}/archivename must be in this format. $ tla my-default-archive jon@doe.com--archivename optional. sets this as (operating system level) user's default archive. -------------------------------------------------------------------------------- creating a new project (sequential) $ tla archive-setup [-A non_default_archive] hello-world--main--0.1 hello-world is the category (project name). main is the branch. 0.1 is the version, which must be only numbers and dots. must be in this format. this command prepares the archive for the hello-world project. (for a non-default archive, use -A) $ cd my/existing/source/tree/ $ tla init-tree [-A non_default_archive] hello-world--main--0.1 prepares the source tree for use with arch. $ tla id-tagging-method tagline optional. sets the id tagging method from the default "explicit" to "tagline". # here we add files to the archive according to id-tagging-method (see the # discussion on the arch wiki). directories must be added with "tla add" # regardless of id-tagging-method. methods: tagline: add a tagline to top of each source file. obviates the need for "tla add", et al. tagline format is thus: " arch-tag: ", ie for perl/python: "# arch-tag: xyz" good unique-ids come from output of unix uuidgen. explicit: $ tla add filename.ext $ vi `tla make-log` (or tla make-log then edit the ++log file) prepare log message before import/commit. run automatically by commit/import if not explicitly done by hand. $ tla import does initial import of the tree -------------------------------------------------------------------------------- normal project development $ tla make-log (or vi `tla make-log`) optional $ tla commit commits new changes. makes a new revision (patch) level. $ tla update apply changes from archive to working copy - when archive changes get precedence $ tla replay apply changes from archive to working copy - when working copy's changes get precedence $ tla mv replacement for unix mv, but also moves explicit ids if any $ tla add file.ext $ tla delete file.ext $ mv filename.ext; tla move-id these are for use only with explicit tagging method -------------------------------------------------------------------------------- finding stuff out $ tla inventory [--names|--source|--backups|etc] information on the source tree you're working with $ tla changes [--diffs] changes made since last commit $ tla missing changes made to archive since last get, update, or replay $ tla whereis-archive johndoe@domain.com--archivename find an archive $ tla archives $ tla categories $ tla branches $ tla versions $ tla tree-root $ tla tree-version $ tla log-versions $ tla cat-log hello-world--main--0.1--base-0 find out various important pieces of information -------------------------------------------------------------------------------- checking projects out from archives $ tla register-archive bob@bob.com--bobs-arch /path/to/bobs-arch register someone else's local archive for your own use $ tla register-archive bob@bob.com--bobs-arch http://foo.com/bobs-arch register someone else's remote archive for your own use $ tla get hello-world--main--0.1 targetdir get most current revision. archive must be previously registered. $ tla get hello-world--main--0.1--patch-1 targetdir get earlier revision. archive must be previously registered. -------------------------------------------------------------------------------- branches (sequential) $ tla archive-setup [-A non_default_archive] hello-world--newbranch--0.1 $ tla tag [-A non_default_archive] \ jon@doe.com--archivename/hello-world--main--0.1--patch-2 \ hello-world--newbranch--0.1 create a branch starting at revision (patch) 2. jon@doe.com--archivename archive must already be registered. $ tla cacherev hello-world--newbranch--0.1--base-0 optional, but better. so gets aren't dependent on jon's archive later. $ tla get hello-world--newbranch--0.1 newdir -------------------------------------------------------------------------------- merging $ tla replay|update -A jon@doe.com--archivename hello-world--main--0.1 update/replay from orig branch to branched branch $ tla star-merge jon@doe.com--archivename/hello-world--main--0.1 merge trees with complex async dev statuses. in this case, done in branched tree dir, getting orig branch merged into branched tree. -------------------------------------------------------------------------------- upgrading versions (sequential) $ tla make-version [-A non_default_archive] hello-world--main--0.2 add new version to the archive $ tla add-log-version [-A non_default_archive] hello-world--main--0.2 adds new patch-log for the new version $ tla set-tree-version [-A non_default_archive] hello-world--main--0.2 sets the current source tree's version to the new one $ vi `tla make-log` $ tla import -------------------------------------------------------------------------------- mirrors / remote repositories $ tla register-archive b@b.c--bobs-arch-SOURCE http://foo.com/bob-arch $ tla make-archive --mirror-from b@b.c--bobs-arch-SOURCE /local/location mirror a remote archive. auto registers local mirror name as everything minus "-SOURCE". $ tla make-archive --mirror mine@somewhere.com $remote_location $ tla archive-mirror mine@somewhere.com mirror a local archive remotely. call the second line again to update remote contents. % tla make-archive $archive_name $remote_location make a remote non-mirrored repository --------------------------------------------------------------------------------