Mercurial > treepkg
annotate bin/updatetreepkg.py @ 570:44c0f8404983
Refactor git pull command out of update
Tag MUST NOT use update because therefore it always changes the current local branch!
For listing the tags it's enough to pull the latest repo changes
author | Bjoern Ricks <bricks@intevation.de> |
---|---|
date | Fri, 02 Sep 2011 11:46:29 +0000 |
parents | 5fa56edeb606 |
children |
rev | line source |
---|---|
287
1fcdffbeb9de
Make the #! line in the commands more portable. Use /usr/bin/python
Bernhard Herzog <bh@intevation.de>
parents:
233
diff
changeset
|
1 #! /usr/bin/python |
233
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
2 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH |
144
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
3 # Authors: |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
4 # Bernhard Herzog <bh@intevation.de> |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
5 # |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
6 # This program is free software under the GPL (>=v2) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
7 # Read the file COPYING coming with the software for details. |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
8 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
9 """Script to help update a tree packager installation to the current |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
10 version. The script updates the information stored in the filesystem |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
11 for the individual revisions in the following ways: |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
12 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
13 - Rename the build log from build.log to log/build_log.txt |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
14 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
15 - Rename the build log from build_log.txt to log/build_log.txt |
233
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
16 |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
17 - Rename the directory name of the revision from <revision>-1 to <revision>-0 |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
18 |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
19 The second number is now the revision of the packaging rules if |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
20 they're managed by SVN and always 0 for manual management of the |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
21 rules. |
144
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
22 """ |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
23 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
24 import os |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
25 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
26 import treepkgcmd |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
27 from treepkg.options import create_parser |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
28 from treepkg.packager import create_package_track, PackagerGroup |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
29 from treepkg.readconfig import read_config |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
30 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
31 def rename_file(old_name, new_name, dry_run): |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
32 if os.path.exists(old_name): |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
33 new_dir = os.path.dirname(new_name) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
34 if not os.path.isdir(new_dir): |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
35 print "mkdir %s" % (new_dir,) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
36 if not dry_run: |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
37 os.mkdir(new_dir) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
38 print "mv %s %s" % (old_name, new_name) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
39 if not dry_run: |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
40 os.rename(old_name, new_name) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
41 |
233
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
42 def update_rules_revision_in_directory_names(track, dry_run): |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
43 revisions = track.get_revisions() |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
44 rules_revisions = set(revision.rules_revision for revision in revisions) |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
45 if rules_revisions == set([1]): |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
46 for revision in revisions: |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
47 rename_file(revision.base_dir, |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
48 revision.base_dir[:-2] + "-0", |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
49 dry_run) |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
50 |
144
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
51 def update_treepkg(config_file, dry_run): |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
52 treepkg_opts, packager_opts = read_config(config_file) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
53 for opts in packager_opts: |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
54 opts["handle_dependencies"] = False |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
55 group = PackagerGroup([create_package_track(**opts) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
56 for opts in packager_opts], |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
57 **treepkg_opts) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
58 for track in group.get_package_tracks(): |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
59 for revision in track.get_revisions(): |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
60 # Originally, the build logs were called build.log and were |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
61 # in the base directory of a revision |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
62 rename_file(os.path.join(revision.base_dir, "build.log"), |
336
5fa56edeb606
Changed the Build Logs to be gziped before they are published
Andre Heinecke <aheinecke@intevation.de>
parents:
287
diff
changeset
|
63 revision.get_build_log(), dry_run) |
144
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
64 # for a while, the build logs were called build_log.txt but |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
65 # still were in the base directory |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
66 rename_file(os.path.join(revision.base_dir, "build_log.txt"), |
336
5fa56edeb606
Changed the Build Logs to be gziped before they are published
Andre Heinecke <aheinecke@intevation.de>
parents:
287
diff
changeset
|
67 revision.get_build_log(), dry_run) |
233
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
68 # Revision directories used to end with "-1". Now that number |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
69 # is the revision of the packaging rules which default to 0 for |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
70 # the traditional manual rules management without a version |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
71 # control system. Rename those directories if necessary |
757e5504f46a
Extend bin/updatetreepkg.py to rename the revision directories if they
Bernhard Herzog <bh@intevation.de>
parents:
144
diff
changeset
|
72 update_rules_revision_in_directory_names(track, dry_run) |
144
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
73 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
74 def parse_commandline(): |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
75 parser = create_parser() |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
76 parser.set_defaults(dry_run=False) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
77 parser.add_option("-n", "--dry-run", action="store_true", |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
78 help="Do not actually change anything") |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
79 return parser.parse_args() |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
80 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
81 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
82 def main(): |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
83 options, args = parse_commandline() |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
84 update_treepkg(options.config_file, options.dry_run) |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
85 |
dd54ef8a9244
New file. Script to update an existing treepkg installation to the
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
86 main() |