source: tailor/vcpx/darcs.py @ 12

Revision 12, 2.8 KB checked in by lele@…, 9 years ago (diff)

Added svn and darcs working dirs

Line 
1#! /usr/bin/python
2# -*- mode: python; coding: utf-8 -*-
3# :Progetto: vcpx -- Darcs details
4# :Creato:   ven 18 giu 2004 14:45:28 CEST
5# :Autore:   Lele Gaifax <lele@nautilus.homeip.net>
6#
7
8__docformat__ = 'reStructuredText'
9
10from cvsync.shwrap import SystemCommand
11from source import UpdatableSourceWorkingDir
12from target import SyncronizableTargetWorkingDir
13
14
15class DarcsInitialize(SystemCommand):
16    COMMAND = "darcs initialize"
17
18
19class DarcsRecord(SystemCommand):
20    COMMAND = "darcs record -v --all --look-for-adds --author=%(author)s --logfile=%(logfile)s"
21
22    def __call__(self, output=None, dry_run=False, patchname=None, **kwargs):
23        logfile = kwargs.get('logfile')
24        if not logfile:
25            from tempfile import NamedTemporaryFile
26
27            log = NamedTemporaryFile(bufsize=0)
28            print >>log, patchname
29
30            logmessage = kwargs.get('logmessage')
31            if logmessage:
32                print >>log, logmessage
33           
34            kwargs['logfile'] = log.name
35           
36        return SystemCommand.__call__(self, output=output,
37                                      dry_run=dry_run, 
38                                      **kwargs)
39
40
41class DarcsMv(SystemCommand):
42    COMMAND = "darcs mv %(old)s %(new)s"
43
44
45class DarcsRemove(SystemCommand):
46    COMMAND = "darcs remove %(entry)s"
47
48
49class DarcsAdd(SystemCommand):
50    COMMAND = "darcs add --non-recursive %(entry)s"
51
52
53class DarcsPull(SystemCommand):
54    COMMAND = "darcs pull --patches='%(patch)s'"
55
56
57class DarcsWorkingDir(UpdatableSourceWorkingDir,SyncronizableTargetWorkingDir):
58
59    ## UpdatableSourceWorkingDir
60   
61    def _getUpstreamChangesets(self, root):
62        """
63        Do the actual work of fetching the upstream changeset.
64       
65        This method must be overridden by subclasses.
66        """
67
68        # XXX
69       
70    def _applyChangeset(self, root, changeset):
71        """
72        Do the actual work of applying the changeset to the working copy.
73        """
74
75        dpull = DarcsPull(working_dir=root)
76        dpull(patch=changeset.revision)
77
78    ## SyncronizableTargetWorkingDir
79
80    def _addEntry(self, root, entry):
81        """
82        Add a new entry, maybe registering the directory as well.
83        """
84
85        c = DarcsAdd(working_dir=root)
86        c(entry=entry)
87
88    def _commit(self, root, author, remark, changelog, entries):
89        """
90        Commit the changeset.
91        """
92
93        c = DarcsRecord(working_dir=root)
94        c(patchname=remark, logmessage=changelog, author=author)
95       
96    def _removeEntry(self, root, entry):
97        """
98        Remove an entry.
99        """
100
101        c = DarcsRemove(working_dir=root)
102        c(entry=entry)
103
104    def _renameEntry(self, root, oldentry, newentry):
105        """
106        Rename an entry.
107        """
108
109        c = DarcsMv(working_dir=root)
110        c(old=oldentry, new=newentry)
111
Note: See TracBrowser for help on using the repository browser.