Plugins/VcsPlugins/vcsMercurial/TransplantExtension/transplant.py

Wed, 06 Jul 2016 19:27:15 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 06 Jul 2016 19:27:15 +0200
changeset 5020
d0afdfd8e45b
parent 4631
5c1a96925da4
permissions
-rw-r--r--

Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.

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
4631
5c1a96925da4 Updated copyright for 2016.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
3 # Copyright (c) 2011 - 2016 Detlev Offenbach <detlev@die-offenbachs.de>
1078
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
3145
a9de05d4a22f # __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3057
diff changeset
10 from __future__ import unicode_literals
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2405
diff changeset
11
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import os
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
14 from PyQt5.QtWidgets import QDialog
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
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
16 from ..HgExtension import HgExtension
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from ..HgDialog import HgDialog
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 """
2525
8b507a9a2d40 Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2405
diff changeset
30 super(Transplant, self).__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)
1318
6fa303bd65d6 Fixed issues in various Mercurial files that could cause infinite loops on Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1249
diff changeset
43 if os.path.splitdrive(repodir)[1] == os.sep:
1078
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
2405
d4b5f3bd4720 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
46 from .TransplantDialog import TransplantDialog
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 res = False
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 dlg = TransplantDialog(self.vcs.hgGetBranchesList(repodir))
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 if dlg.exec_() == QDialog.Accepted:
3008
7848489bcb92 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2405
diff changeset
50 revs, sourceRepo, branch, all, pruneRevs, mergeRevs, log = \
7848489bcb92 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2405
diff changeset
51 dlg.getData()
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
3302
e92f0dd51979 Removed the Mercurial support for a command options dialog and added useable global options to the Mercurial config page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
53 args = self.vcs.initCommand("transplant")
1092
1b149c2d9ae1 Some small tweaks to the transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1091
diff changeset
54 args.append("--verbose")
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 if sourceRepo:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 args.append("--source")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 args.append(sourceRepo)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 if branch:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 args.append("--branch")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 args.append(branch)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 if all:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 args.append("--all")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 for pruneRev in pruneRevs:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 args.append("--prune")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 args.append(pruneRev)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 for mergeRev in mergeRevs:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 args.append("--merge")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 args.append(mergeRev)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 if log:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 args.append("--log")
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 args.extend(revs)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
73 dia = HgDialog(self.tr('Transplant Changesets'), self.vcs)
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 res = dia.startProcess(args, repodir)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 if res:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 dia.exec_()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 res = dia.hasAddOrDelete()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.vcs.checkVCSStatus()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 return res
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 def hgTransplantContinue(self, path):
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
1091
de098acb7ad2 Corrected a source docu description in the transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1087
diff changeset
83 Public method to continue transplanting changesets from another branch.
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @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
86 @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
87 """
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 # find the root of the repo
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 repodir = self.vcs.splitPath(path)[0]
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 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
91 repodir = os.path.dirname(repodir)
1318
6fa303bd65d6 Fixed issues in various Mercurial files that could cause infinite loops on Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1249
diff changeset
92 if os.path.splitdrive(repodir)[1] == os.sep:
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 return
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94
3302
e92f0dd51979 Removed the Mercurial support for a command options dialog and added useable global options to the Mercurial config page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
95 args = self.vcs.initCommand("transplant")
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 args.append("--continue")
1092
1b149c2d9ae1 Some small tweaks to the transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1091
diff changeset
97 args.append("--verbose")
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98
3008
7848489bcb92 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2405
diff changeset
99 dia = HgDialog(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
100 self.tr('Transplant Changesets (Continue)'), self.vcs)
1078
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 res = dia.startProcess(args, repodir)
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 if res:
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 dia.exec_()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 res = dia.hasAddOrDelete()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.vcs.checkVCSStatus()
aeee8401e2ce Added support for the Mercurial transplant extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 return res

eric ide

mercurial