author | Jan Vrany <jan.vrany@labware.com> |
Mon, 26 Oct 2020 11:01:31 +0000 | |
changeset 915 | 7e7ee5bfdc88 |
parent 910 | d347b4bedf2b |
child 916 | 02d7b7f1ea08 |
permissions | -rw-r--r-- |
210 | 1 |
" |
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
2 |
COPYRIGHT (c) 2020 LabWare |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
3 |
|
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
4 |
stx:libscm - a new source code management library for Smalltalk/X |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
5 |
|
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
6 |
This library is free software; you can redistribute it and/or |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
7 |
modify it under the terms of the GNU Lesser General Public |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
8 |
License as published by the Free Software Foundation; either |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
9 |
version 2.1 of the License. |
210 | 10 |
|
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
11 |
This library is distributed in the hope that it will be useful, |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
12 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
13 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
14 |
Lesser General Public License for more details. |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
15 |
|
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
16 |
You should have received a copy of the GNU Lesser General Public |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
17 |
License along with this library; if not, write to the Free Software |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
18 |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
210 | 19 |
" |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
"{ Package: 'stx:libscm/mercurial' }" |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
22 |
"{ NameSpace: Smalltalk }" |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
24 |
SCMMergeTool subclass:#HGMergeTool |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
instanceVariableNames:'' |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
classVariableNames:'' |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
poolDictionaries:'' |
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
28 |
category:'SCM-Mercurial-StX-Tools' |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
! |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
|
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
!HGMergeTool class methodsFor:'documentation'! |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
|
210 | 33 |
copyright |
34 |
" |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
35 |
COPYRIGHT (c) 2020 LabWare |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
36 |
|
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
37 |
stx:libscm - a new source code management library for Smalltalk/X |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
38 |
|
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
39 |
This library is free software; you can redistribute it and/or |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
40 |
modify it under the terms of the GNU Lesser General Public |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
41 |
License as published by the Free Software Foundation; either |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
42 |
version 2.1 of the License. |
210 | 43 |
|
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
44 |
This library is distributed in the hope that it will be useful, |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
45 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
46 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
47 |
Lesser General Public License for more details. |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
48 |
|
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
49 |
You should have received a copy of the GNU Lesser General Public |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
50 |
License along with this library; if not, write to the Free Software |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
235
diff
changeset
|
51 |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
210 | 52 |
" |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
! ! |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
|
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
!HGMergeTool methodsFor:'merging'! |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
57 |
merge: local revision: otherRevString |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
58 |
| repo localRev baseRev otherRev localPath base other | |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
60 |
repo := HGRepository discover: local. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
61 |
repo isNil ifTrue: [ |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
62 |
self error: 'Cannot find Mercurial repository for: ', local pathName. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
63 |
^ self. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
64 |
]. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
65 |
repo := HGRepository on: repo. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
66 |
otherRev := repo changesetsMatching: otherRevString. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
67 |
otherRev isEmpty ifTrue:[ |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
68 |
self error: 'No revisions matching ', otherRevString. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
69 |
^ self. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
70 |
]. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
71 |
otherRev size > 1 ifTrue: [ |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
72 |
self error: 'Multiple matching ', otherRevString. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
73 |
^ self. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
74 |
]. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
75 |
otherRev := otherRev first. |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
77 |
localRev := repo workingCopy changeset. |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
79 |
baseRev := repo changesetsMatching: ('children(ancestor(%1,%2)) and ancestors(%1)' bindWith: localRev id printStringWithoutNumber with: otherRev id printStringWithoutNumber). |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
80 |
baseRev isEmpty ifTrue:[ |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
81 |
self error: 'Cannot find base revision'. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
82 |
^ self. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
83 |
]. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
84 |
baseRev size > 1 ifTrue: [ |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
85 |
self error: 'Multiple base revisions found, probably a bug!!'. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
86 |
^ self. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
87 |
]. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
88 |
baseRev := baseRev first. |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
90 |
localPath := local pathName copyFrom: repo pathName size + 2. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
91 |
|
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
92 |
base := baseRev / localPath. |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
93 |
other := otherRev / localPath. |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
95 |
^ self base: base local: local other: other output: local. |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
97 |
" |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
98 |
HGMergeTool new merge:'/home/jv/Projects/SmalltalkX/sources/jv1_x32_lin/build/stx/libbasic/String.st' asFilename revision: 'default' |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
99 |
" |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
|
910
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
101 |
"Created: / 27-08-2020 / 09:34:57 / Jan Vrany <jan.vrany@labware.com>" |
d347b4bedf2b
Introduce `HGMergeTool` - a merge tool for Smalltalk/X source files
Jan Vrany <jan.vrany@labware.com>
parents:
509
diff
changeset
|
102 |
"Modified: / 27-08-2020 / 11:35:11 / Jan Vrany <jan.vrany@labware.com>" |
178
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
! ! |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
|
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
!HGMergeTool class methodsFor:'documentation'! |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
|
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
107 |
version_HG |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
|
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
109 |
^ '$Changeset: <not expanded> $' |
1ed827252fee
More work on merging. Not yet finished.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
110 |
! ! |
210 | 111 |