- Timestamp:
- 11/30/04 17:09:47 (9 years ago)
- Hash name:
- 20041130160947-97f81-2b6be4bf4861af060e598c165eab44172992683c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
README
r172 r173 1 ABOUT 2 ---------------------------------------------------------------------- 3 tailor.py is tool to synchronize CVS, Subversion, and darcs repositories. 1 About 2 ===== 3 4 tailor.py is a tool to migrate changesets between CVS, Subversion, and 5 darcs repositories. 4 6 5 7 This script makes it easier to keep the upstream changes merged in … … 8 10 9 11 10 INSTALLATION 11 ---------------------------------------------------------------------- 12 tailor.py is written in python, and thus python must be installed on your 12 Installation 13 ============ 14 15 tailor.py is written in Python, and thus Python must be installed on your 13 16 system to use it. 14 17 … … 21 24 22 25 23 E XAMPLES24 ---------------------------------------------------------------------- 26 Examples 27 ======== 25 28 26 # Bootstrap a new taylored project, starting at upstream revision 10 29 Bootstrap a new taylored project, starting at upstream revision 10:: 30 27 31 $ tailor.py -b -s svn -R http://svn.server/Product -r 10 ~/darcs/MyProduct 28 32 29 # Bootstrap a new product, fetching from CVS and storing under SVN: this 30 # will create the directory "~/svnwc/cmfcore"; "~/svnwc" must be already 31 # under SVN. 33 Bootstrap a new product, fetching from CVS and storing under SVN: this 34 will create the directory "~/svnwc/cmfcore"; "~/svnwc" must be already 35 under SVN:: 36 32 37 $ tailor.py --source-kind cvs --target-kind svn --bootstrap \ 33 38 --repository :pserver:cvs.zope.org:/cvs-repository \ 34 39 --module CMF/CMFCore ~/svnwc/cmfcore 35 40 36 # Showing each command bootstrap a new DARCS repos in "~/darcs/cmftopic" 37 # under which the upstream module will be extracted as "CMFTopic" (ie, the 38 # last component of the module name). 41 Showing each command bootstrap a new DARCS repos in "~/darcs/cmftopic" 42 under which the upstream module will be extracted as "CMFTopic" (ie, the 43 last component of the module name):: 44 39 45 $ tailor.py -D -b -R :pserver:anonymous@cvs.zope.org:/cvs-repository/ \ 40 46 -m CMF/CMFTopic ~/darcs/cmftopic 41 47 42 # Merge upstream changes since last update/bootstrap 48 Merge upstream changes since last update/bootstrap:: 49 43 50 $ tailor.py ~/svnwc/MyProduct 44 51 45 52 46 CONFIG FILE FORMAT 47 ---------------------------------------------------------------------- 53 Tailor's metadata 54 ================= 48 55 49 Here's an example config file entry: 56 To do its work, tailor needs some information about your source tree, 57 such as the upstream repository URL and the current revision of the 58 sources on your harddisk. 59 60 In the simpler case, tailor keeps this information in a file called 61 `tailor.info`, one for each tailored project, that is a very simple 62 text document, with the following information, one per line: 63 64 1. Upstream repository kind (either "cvs", "darcs" or "svn) 65 2. Target repository kind (the same as above) 66 3. The name of the "module" that's been tailored 67 4. The URL of the upstream repository (that may not be an URL, for cvs...) 68 5. The current revision, from the upstream point of view, of the sources 69 70 This is everything tailor needs, to be able to keep going from where it 71 left last time. 72 73 Config file format 74 ------------------ 75 76 When your project is composed by multiple upstream modules, it is 77 easier to collect such information in a single file. This is done by 78 specifying the `--configfile` option with a file name as argument. In 79 this case, tailor will read/write the above information from a 80 standard Python dictionary stored in the given file. 81 82 The dictionary is keyed on the relative position of each project, and 83 each entry carries the same information described above. 84 85 Here's an example config file entry:: 50 86 51 87 {'plone/atcontenttypes': {'module': 'ATContentTypes', … … 56 92 'upstream_revision': '2004-11-24 19:42:06 by ctheune'}} 57 93 58 The above represents one entry in a config file. You can multiple entries,59 but be careful to make sure have an extra bracket on the first and last lines60 of the file. Here's an example with three entries to illustrate this:61 62 {'plone/atcontenttypes': {'module': 'ATContentTypes',63 'source_kind': 'cvs',64 'subdir': 'ATContentTypes',65 'target_kind': 'darcs',66 'upstream_repos': ':ext:cvs.sourceforge.net:/cvsroot/collective',67 'upstream_revision': '2004-11-24 19:42:06 by ctheune'},68 'plone/btreefolder2': {'module': 'Products/BTreeFolder2',69 'source_kind': 'cvs',70 'subdir': 'BTreeFolder2',71 'target_kind': 'darcs',72 'upstream_repos': ':pserver:anonymous@cvs.zope.org:/cvs-repository',73 'upstream_revision': '2004-06-16 23:45:45 by shane'},74 'plone/cmfactionicons': {'module': 'CMF/CMFActionIcons',75 'source_kind': 'cvs',76 'subdir': 'CMFActionIcons',77 'target_kind': 'darcs',78 'upstream_repos': ':pserver:anonymous@cvs.zope.org:/cvs-repository',79 'upstream_revision': '2004-10-04 17:03:38 by tseaver'}}80 81 94 By convention, config files are named with the extension ".tailor", but this is 82 95 not enforced. 83 96 84 In the example above, 'plone/atcontenttypes' is a directory where the target source 85 will be stored. The keys such 'module', 'source_kind', etc correspond to options 86 of the same name. See the output of 'tailor.py' for more details. 97 In the example above, 'plone/atcontenttypes' is a directory where the 98 target source will be stored. The keys such 'module', 'source_kind', 99 etc correspond to options of the same name. 100 101 When using a config file, tailor will perform its job on each project 102 contained in the dictionary. 87 103 88 104 89 FURTHER HELP 90 ---------------------------------------------------------------------- 91 See the output of tailor.py -h for some further tips. 105 Further help 106 ============ 107 108 See the output of tailor.py -h for some further tips. I will be more 109 than happy to answer any doubt, question or suggestion you may have on 110 it. I'm usually hanging as "lelit" on the IRC channel devoted to darcs 111 on the freenode.net network. Do not hesitate to contact me either by 112 email or chatting there. 92 113 93 114 94 AUTHOR 95 ---------------------------------------------------------------------- 115 Author 116 ====== 117 96 118 Lele Gaifax <lele@nautilus.homeip.net> 97 119
Note: See TracChangeset
for help on using the changeset viewer.
