Plugins/VcsPlugins/vcsMercurial/TransplantExtension/transplant.py

Tue, 31 May 2011 10:31:06 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 31 May 2011 10:31:06 +0200
changeset 1087
fb8cd56819a9
parent 1078
aeee8401e2ce
child 1091
de098acb7ad2
permissions
-rw-r--r--

Changed the Mercurial extension interface code to use custom base classes instead of inheriting QObject directly.

1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2011 Detlev Offenbach <detlev@die-offenbachs.de>
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the transplant extension interface.
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt4.QtGui import QDialog
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
1087
fb8cd56819a9 Changed the Mercurial extension interface code to use custom base classes instead of inheriting QObject directly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1078
diff changeset
14 from ..HgExtension import HgExtension
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from ..HgDialog import HgDialog
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from .TransplantDialog import TransplantDialog
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
1087
fb8cd56819a9 Changed the Mercurial extension interface code to use custom base classes instead of inheriting QObject directly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1078
diff changeset
20 class Transplant(HgExtension):
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 Class implementing the transplant extension interface.
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 def __init__(self, vcs):
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Constructor
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param vcs reference to the Mercurial vcs object
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
1087
fb8cd56819a9 Changed the Mercurial extension interface code to use custom base classes instead of inheriting QObject directly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1078
diff changeset
30 super().__init__(vcs)
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 def hgTransplant(self, path):
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 Public method to transplant changesets from another branch.
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param path directory name of the project (string)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @return flag indicating that the project should be reread (boolean)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 # find the root of the repo
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 repodir = self.vcs.splitPath(path)[0]
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 repodir = os.path.dirname(repodir)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 if repodir == os.sep:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 return False
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 res = False
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 dlg = TransplantDialog(self.vcs.hgGetBranchesList(repodir))
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 if dlg.exec_() == QDialog.Accepted:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 revs, sourceRepo, branch, all, pruneRevs, mergeRevs, log = dlg.getData()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 args = []
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 args.append("transplant")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 if sourceRepo:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 args.append("--source")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 args.append(sourceRepo)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 if branch:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 args.append("--branch")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 args.append(branch)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 if all:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 args.append("--all")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 for pruneRev in pruneRevs:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 args.append("--prune")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 args.append(pruneRev)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 for mergeRev in mergeRevs:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 args.append("--merge")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 args.append(mergeRev)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 if log:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 args.append("--log")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 args.extend(revs)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 dia = HgDialog(self.trUtf8('Transplant Changesets'))
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 res = dia.startProcess(args, repodir)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 if res:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 dia.exec_()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 res = dia.hasAddOrDelete()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.vcs.checkVCSStatus()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 return res
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 def hgTransplantContinue(self, path):
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 Public method to transplant changesets from another branch.
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @param path directory name of the project (string)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @return flag indicating that the project should be reread (boolean)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 # find the root of the repo
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 repodir = self.vcs.splitPath(path)[0]
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 repodir = os.path.dirname(repodir)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 if repodir == os.sep:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 return
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 args = []
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 args.append("transplant")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 args.append("--continue")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 dia = HgDialog(self.trUtf8('Transplant Changesets (Continue'))
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 res = dia.startProcess(args, repodir)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 if res:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 dia.exec_()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 res = dia.hasAddOrDelete()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.vcs.checkVCSStatus()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 return res

eric ide

mercurial