792
by Martin Pool
- rsync upload/download plugins from John A Meinel |
1 |
#!/usr/bin/env python
|
2 |
"""\
|
|
3 |
This is a plugin for the Bazaar-NG revision control system.
|
|
4 |
"""
|
|
5 |
||
6 |
import os |
|
7 |
import bzrlib, bzrlib.commands |
|
8 |
||
9 |
class cmd_rsync_pull(bzrlib.commands.Command): |
|
10 |
"""Update the current working tree using rsync.
|
|
11 |
With no arguments, look for a .bzr/x-rsync-location file
|
|
12 |
to determine which remote system to rsync from.
|
|
13 |
Otherwise, you can specify a new location to rsync from.
|
|
14 |
||
15 |
Normally the first time you use it, you would write:
|
|
16 |
bzr rsync-pull . path/to/otherdirectory
|
|
17 |
"""
|
|
18 |
takes_args = ['local?', 'remote?'] |
|
19 |
takes_options = ['verbose'] |
|
20 |
aliases = ['rpull'] |
|
21 |
||
22 |
def run(self, local=None, remote=None, verbose=True): |
|
23 |
from rsync_update import get_branch_remote_update, \ |
|
24 |
check_should_pull, set_default_remote_info, pull |
|
25 |
||
26 |
b, remote, last_revno, last_revision = \ |
|
27 |
get_branch_remote_update(local=local, remote=remote) |
|
28 |
||
29 |
if not check_should_pull(b, last_revno, last_revision): |
|
30 |
return 1 |
|
31 |
b = pull(b, remote, verbose=verbose) |
|
32 |
||
33 |
set_default_remote_info(b, remote) |
|
34 |
||
35 |
class cmd_rsync_pull_bzr(cmd_rsync_pull): |
|
36 |
takes_args = ['remote?'] |
|
37 |
def run(self, remote=None, verbose=True): |
|
38 |
from rsync_update import get_branch_remote_update, \ |
|
39 |
check_should_pull, set_default_remote_info, pull |
|
40 |
||
41 |
bzr_path = os.path.dirname(bzrlib.__path__[0]) |
|
42 |
b, remote, last_revno, last_revision = \ |
|
43 |
get_branch_remote_update(local=bzr_path, remote=remote |
|
44 |
, alt_remote='bazaar-ng.org::bazaar-ng/bzr/bzr.dev/') |
|
45 |
||
46 |
if not check_should_pull(b, last_revno, last_revision): |
|
47 |
return 1 |
|
48 |
b = pull(b, remote, verbose=verbose) |
|
49 |
||
50 |
set_default_remote_info(b, remote) |
|
51 |
||
52 |
class cmd_rsync_push(bzrlib.commands.Command): |
|
53 |
"""Update the remote tree using rsync.
|
|
54 |
With no arguments, look for a .bzr/x-rsync-location file
|
|
55 |
to determine which remote system to rsync to.
|
|
56 |
Otherwise, you can specify a new location to rsync to.
|
|
57 |
"""
|
|
58 |
takes_args = ['local?', 'remote?'] |
|
59 |
takes_options = ['verbose'] |
|
60 |
aliases = ['rpush'] |
|
61 |
||
62 |
def run(self, local=None, remote=None, verbose=True): |
|
63 |
from rsync_update import get_branch_remote_update, \ |
|
64 |
check_should_push, set_default_remote_info, push |
|
65 |
||
66 |
b, remote, last_revno, last_revision = \ |
|
67 |
get_branch_remote_update(local=local, remote=remote) |
|
68 |
||
69 |
if not check_should_push(b, last_revno, last_revision): |
|
70 |
return 1 |
|
71 |
||
72 |
push(b, remote, verbose=verbose) |
|
73 |
||
74 |
set_default_remote_info(b, remote) |
|
75 |
||
76 |
||
77 |
if hasattr(bzrlib.commands, 'register_plugin_command'): |
|
78 |
bzrlib.commands.register_plugin_command(cmd_rsync_pull) |
|
79 |
bzrlib.commands.register_plugin_command(cmd_rsync_pull_bzr) |
|
80 |
bzrlib.commands.register_plugin_command(cmd_rsync_push) |
|
81 |
elif hasattr(bzrlib.commands, 'register_command'): |
|
82 |
bzrlib.commands.register_command(cmd_rsync_pull) |
|
83 |
bzrlib.commands.register_command(cmd_rsync_pull_bzr) |
|
84 |
bzrlib.commands.register_command(cmd_rsync_push) |
|
85 |