Wed, 06 Jul 2016 19:27:15 +0200
Added capability to filter ANSI escape sequences out of output strings. This is limited to color sequences at the moment.
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
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) 2014 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing the largefiles extension interface. |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
3484
645c12de6b0c
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3359
diff
changeset
|
10 | from __future__ import unicode_literals |
645c12de6b0c
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3359
diff
changeset
|
11 | |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | import os |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
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.QtCore import QTimer |
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
15 | from PyQt5.QtWidgets import QDialog |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from E5Gui.E5Application import e5App |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | from ..HgExtension import HgExtension |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | from ..HgDialog import HgDialog |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | class Largefiles(HgExtension): |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | Class implementing the largefiles extension interface. |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | """ |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | def __init__(self, vcs): |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | Constructor |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | @param vcs reference to the Mercurial vcs object |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | """ |
3484
645c12de6b0c
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3359
diff
changeset
|
33 | super(Largefiles, self).__init__(vcs) |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | def hgLfconvert(self, direction, projectFile): |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | """ |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | Public slot to convert the repository format of the current project. |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | @param direction direction of the conversion (string, one of |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | 'largefiles' or 'normal') |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | @param projectFile file name of the current project file (string) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | assert direction in ["largefiles", "normal"] |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | projectDir = os.path.dirname(projectFile) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | # find the root of the repo |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | repodir = projectDir |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | repodir = os.path.dirname(repodir) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | if os.path.splitdrive(repodir)[1] == os.sep: |
3359
6b6c224d67d6
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3332
diff
changeset
|
52 | return |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | from .LfConvertDataDialog import LfConvertDataDialog |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | dlg = LfConvertDataDialog(projectDir, direction) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | if dlg.exec_() == QDialog.Accepted: |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | newName, minSize, patterns = dlg.getData() |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | newProjectFile = os.path.join( |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | newName, os.path.basename(projectFile)) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | # step 1: convert the current project to new project |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | args = self.vcs.initCommand("lfconvert") |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | if direction == 'normal': |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | args.append('--to-normal') |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | else: |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | args.append("--size") |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | args.append(str(minSize)) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | args.append(projectDir) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | args.append(newName) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | if direction == 'largefiles' and patterns: |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | args.extend(patterns) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | dia = HgDialog(self.tr('Convert Project - Converting'), self.vcs) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | res = dia.startProcess(args, repodir) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | if res: |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | dia.exec_() |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | res = dia.normalExit() and os.path.isdir( |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | os.path.join(newName, self.vcs.adminDir)) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | # step 2: create working directory contents |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | if res: |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | args = self.vcs.initCommand("update") |
3311
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
83 | args.append("--verbose") |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | dia = HgDialog(self.tr('Convert Project - Extracting'), |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | self.vcs, useClient=False) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | res = dia.startProcess(args, newName) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | if res: |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | dia.exec_() |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | res = dia.normalExit() and os.path.isfile(newProjectFile) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | # step 3: close current project and open new one |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | if res: |
3311
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
93 | if direction == 'largefiles': |
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
94 | self.vcs.hgEditConfig(newName, largefilesData={ |
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
95 | "minsize": minSize, "pattern": patterns}) |
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
96 | else: |
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
97 | self.vcs.hgEditConfig(newName, withLargefiles=False) |
3332
7d279abef824
Fixed a crash when converting a project to/from Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3315
diff
changeset
|
98 | QTimer.singleShot( |
7d279abef824
Fixed a crash when converting a project to/from Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3315
diff
changeset
|
99 | 0, lambda: e5App().getObject("Project").openProject( |
7d279abef824
Fixed a crash when converting a project to/from Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3315
diff
changeset
|
100 | newProjectFile)) |
3313
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
101 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
102 | def hgAdd(self, names, mode): |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
103 | """ |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
104 | Public method used to add a file to the Mercurial repository. |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
105 | |
3359
6b6c224d67d6
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3332
diff
changeset
|
106 | @param names file name(s) to be added (string or list of string) |
3313
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
107 | @param mode add mode (string one of 'normal' or 'large') |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
108 | """ |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
109 | args = self.vcs.initCommand("add") |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
110 | args.append("-v") |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
111 | if mode == "large": |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
112 | args.append("--large") |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
113 | else: |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
114 | args.append("--normal") |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
115 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
116 | if isinstance(names, list): |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
117 | dname = self.vcs.splitPathList(names)[0] |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
118 | else: |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
119 | dname = self.vcs.splitPath(names)[0] |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
120 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
121 | # find the root of the repo |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
122 | repodir = dname |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
123 | while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
124 | repodir = os.path.dirname(repodir) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
125 | if os.path.splitdrive(repodir)[1] == os.sep: |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
126 | return |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
127 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
128 | if isinstance(names, list): |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
129 | self.vcs.addArguments(args, names) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
130 | else: |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
131 | args.append(names) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
132 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
133 | dia = HgDialog( |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
134 | self.tr('Adding files to the Mercurial repository'), |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
135 | self.vcs) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
136 | res = dia.startProcess(args, repodir) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
137 | if res: |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
138 | dia.exec_() |
3315
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
139 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
140 | def hgLfPull(self, projectDir, revisions=None): |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
141 | """ |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
142 | Public method to pull missing large files into the local repository. |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
143 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
144 | @param projectDir directory name of the project (string) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
145 | @param revisions list of revisions to pull (list of string) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
146 | """ |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
147 | # find the root of the repo |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
148 | repodir = projectDir |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
149 | while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
150 | repodir = os.path.dirname(repodir) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
151 | if os.path.splitdrive(repodir)[1] == os.sep: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
152 | return |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
153 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
154 | revs = [] |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
155 | if revisions: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
156 | revs = revisions |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
157 | else: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
158 | from .LfRevisionsInputDialog import LfRevisionsInputDialog |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
159 | dlg = LfRevisionsInputDialog() |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
160 | if dlg.exec_() == QDialog.Accepted: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
161 | revs = dlg.getRevisions() |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
162 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
163 | if revs: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
164 | args = self.vcs.initCommand("lfpull") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
165 | args.append("-v") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
166 | for rev in revs: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
167 | args.append("--rev") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
168 | args.append(rev) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
169 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
170 | dia = HgDialog(self.tr("Pulling large files"), self.vcs) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
171 | res = dia.startProcess(args, repodir) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
172 | if res: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
173 | dia.exec_() |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
174 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
175 | def hgLfVerify(self, projectDir, mode): |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
176 | """ |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
177 | Public method to verify large files integrity. |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
178 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
179 | @param projectDir directory name of the project (string) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
180 | @param mode verify mode (string; one of 'large', 'lfa' or 'lfc') |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
181 | """ |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
182 | # find the root of the repo |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
183 | repodir = projectDir |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
184 | while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
185 | repodir = os.path.dirname(repodir) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
186 | if os.path.splitdrive(repodir)[1] == os.sep: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
187 | return |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
188 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
189 | args = self.vcs.initCommand("verify") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
190 | if mode == "large": |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
191 | args.append("--large") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
192 | elif mode == "lfa": |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
193 | args.append("--lfa") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
194 | elif mode == "lfc": |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
195 | args.append("--lfc") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
196 | else: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
197 | return |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
198 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
199 | dia = HgDialog( |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
200 | self.tr('Verifying the integrity of large files'), |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
201 | self.vcs) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
202 | res = dia.startProcess(args, repodir) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
203 | if res: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
204 | dia.exec_() |