Wed, 30 Dec 2020 11:00:05 +0100
Updated copyright for 2021.
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 | |
7923
91e843545d9a
Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7780
diff
changeset
|
3 | # Copyright (c) 2014 - 2021 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 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import os |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
3656
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
12 | from PyQt5.QtCore import QTimer |
441956d8fce5
Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
13 | from PyQt5.QtWidgets import QDialog |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from E5Gui.E5Application import e5App |
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 ..HgExtension import HgExtension |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | from ..HgDialog import HgDialog |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | class Largefiles(HgExtension): |
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 implementing the largefiles extension interface. |
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 | def __init__(self, vcs): |
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 | Constructor |
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 | @param vcs reference to the Mercurial vcs object |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | """ |
3484
645c12de6b0c
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3359
diff
changeset
|
31 | super(Largefiles, self).__init__(vcs) |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | def hgLfconvert(self, direction, projectFile): |
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 | 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
|
36 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | @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
|
38 | 'largefiles' or 'normal') |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | @param projectFile file name of the current project file (string) |
7628
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
40 | @exception ValueError raised to indicate a bad value for the |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
41 | 'direction' parameter. |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
7628
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
43 | if direction not in ["largefiles", "normal"]: |
f904d0eef264
Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
44 | raise ValueError("Bad value for 'direction' parameter.") |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | projectDir = os.path.dirname(projectFile) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | # find the root of the repo |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | repodir = projectDir |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | 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
|
51 | repodir = os.path.dirname(repodir) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | 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
|
53 | return |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | from .LfConvertDataDialog import LfConvertDataDialog |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | dlg = LfConvertDataDialog(projectDir, direction) |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
57 | if dlg.exec() == QDialog.Accepted: |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | newName, minSize, patterns = dlg.getData() |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | newProjectFile = os.path.join( |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | newName, os.path.basename(projectFile)) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | # 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
|
63 | args = self.vcs.initCommand("lfconvert") |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | if direction == 'normal': |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | args.append('--to-normal') |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | else: |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | args.append("--size") |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | args.append(str(minSize)) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | args.append(projectDir) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | args.append(newName) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | if direction == 'largefiles' and patterns: |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | args.extend(patterns) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | 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
|
75 | res = dia.startProcess(args, repodir) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | if res: |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
77 | dia.exec() |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | res = dia.normalExit() and os.path.isdir( |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | os.path.join(newName, self.vcs.adminDir)) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | # step 2: create working directory contents |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | if res: |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | args = self.vcs.initCommand("update") |
3311
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
84 | args.append("--verbose") |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | dia = HgDialog(self.tr('Convert Project - Extracting'), |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | self.vcs, useClient=False) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | res = dia.startProcess(args, newName) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | if res: |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
89 | dia.exec() |
3310
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | res = dia.normalExit() and os.path.isfile(newProjectFile) |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | |
a2032ed66aec
Started implementing the Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | # 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
|
93 | if res: |
3311
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
94 | if direction == 'largefiles': |
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
95 | self.vcs.hgEditConfig(newName, largefilesData={ |
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
96 | "minsize": minSize, "pattern": patterns}) |
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
97 | else: |
b4775920f5b8
Continued implementing Mercurial lfconvert functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3310
diff
changeset
|
98 | 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
|
99 | QTimer.singleShot( |
7d279abef824
Fixed a crash when converting a project to/from Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3315
diff
changeset
|
100 | 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
|
101 | newProjectFile)) |
3313
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
102 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
103 | def hgAdd(self, names, mode): |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
104 | """ |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
105 | 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
|
106 | |
3359
6b6c224d67d6
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3332
diff
changeset
|
107 | @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
|
108 | @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
|
109 | """ |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
110 | args = self.vcs.initCommand("add") |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
111 | args.append("-v") |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
112 | if mode == "large": |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
113 | args.append("--large") |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
114 | else: |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
115 | args.append("--normal") |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
116 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
117 | if isinstance(names, list): |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
118 | dname = self.vcs.splitPathList(names)[0] |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
119 | else: |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
120 | dname = self.vcs.splitPath(names)[0] |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
121 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
122 | # find the root of the repo |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
123 | repodir = dname |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
124 | 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
|
125 | repodir = os.path.dirname(repodir) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
126 | 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
|
127 | return |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
128 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
129 | if isinstance(names, list): |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
130 | self.vcs.addArguments(args, names) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
131 | else: |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
132 | args.append(names) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
133 | |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
134 | dia = HgDialog( |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
135 | 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
|
136 | self.vcs) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
137 | res = dia.startProcess(args, repodir) |
037642483f35
Implemented the Mercurial largefiles add interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3311
diff
changeset
|
138 | if res: |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
139 | dia.exec() |
3315
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
140 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
141 | def hgLfPull(self, projectDir, revisions=None): |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
142 | """ |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
143 | 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
|
144 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
145 | @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
|
146 | @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
|
147 | """ |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
148 | # find the root of the repo |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
149 | repodir = projectDir |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
150 | 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
|
151 | repodir = os.path.dirname(repodir) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
152 | 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
|
153 | return |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
154 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
155 | revs = [] |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
156 | if revisions: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
157 | revs = revisions |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
158 | else: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
159 | from .LfRevisionsInputDialog import LfRevisionsInputDialog |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
160 | dlg = LfRevisionsInputDialog() |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
161 | if dlg.exec() == QDialog.Accepted: |
3315
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
162 | revs = dlg.getRevisions() |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
163 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
164 | if revs: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
165 | args = self.vcs.initCommand("lfpull") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
166 | args.append("-v") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
167 | for rev in revs: |
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 | args.append(rev) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
170 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
171 | 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
|
172 | res = dia.startProcess(args, repodir) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
173 | if res: |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
174 | dia.exec() |
3315
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
175 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
176 | def hgLfVerify(self, projectDir, mode): |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
177 | """ |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
178 | Public method to verify large files integrity. |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
179 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
180 | @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
|
181 | @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
|
182 | """ |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
183 | # find the root of the repo |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
184 | repodir = projectDir |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
185 | 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
|
186 | repodir = os.path.dirname(repodir) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
187 | 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
|
188 | return |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
189 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
190 | args = self.vcs.initCommand("verify") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
191 | if mode == "large": |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
192 | args.append("--large") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
193 | elif mode == "lfa": |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
194 | args.append("--lfa") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
195 | elif mode == "lfc": |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
196 | args.append("--lfc") |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
197 | else: |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
198 | return |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
199 | |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
200 | dia = HgDialog( |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
201 | 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
|
202 | self.vcs) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
203 | res = dia.startProcess(args, repodir) |
bd1a25ead18d
Continued implementing support for Mercurial largefiles.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3313
diff
changeset
|
204 | if res: |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7628
diff
changeset
|
205 | dia.exec() |