author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 08 Feb 2018 09:54:32 +0000 | |
changeset 808 | ae9fdbfa8ba4 |
parent 509 | f92210d4585b |
permissions | -rw-r--r-- |
210 | 1 |
" |
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
2 |
stx:libscm - a new source code management library for Smalltalk/X |
509
f92210d4585b
Updated copyright notice.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
404
diff
changeset
|
3 |
Copyright (C) 2012-2015 Jan Vrany |
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
4 |
|
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
5 |
This library is free software; you can redistribute it and/or |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
6 |
modify it under the terms of the GNU Lesser General Public |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
7 |
License as published by the Free Software Foundation; either |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
8 |
version 2.1 of the License. |
210 | 9 |
|
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
10 |
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:
210
diff
changeset
|
11 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
12 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
13 |
Lesser General Public License for more details. |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
14 |
|
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
15 |
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:
210
diff
changeset
|
16 |
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:
210
diff
changeset
|
17 |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
210 | 18 |
" |
177 | 19 |
"{ Package: 'stx:libscm/mercurial' }" |
20 |
||
808
ae9fdbfa8ba4
Initial support of obsolete changesets
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
509
diff
changeset
|
21 |
"{ NameSpace: Smalltalk }" |
ae9fdbfa8ba4
Initial support of obsolete changesets
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
509
diff
changeset
|
22 |
|
177 | 23 |
Object subclass:#HGCachedFileData |
403
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
24 |
instanceVariableNames:'file exists timestamp size data reader' |
177 | 25 |
classVariableNames:'' |
26 |
poolDictionaries:'' |
|
27 |
category:'SCM-Mercurial-Internal' |
|
28 |
! |
|
29 |
||
210 | 30 |
!HGCachedFileData class methodsFor:'documentation'! |
31 |
||
32 |
copyright |
|
33 |
" |
|
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
34 |
stx:libscm - a new source code management library for Smalltalk/X |
509
f92210d4585b
Updated copyright notice.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
404
diff
changeset
|
35 |
Copyright (C) 2012-2015 Jan Vrany |
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
36 |
|
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
37 |
This library is free software; you can redistribute it and/or |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
38 |
modify it under the terms of the GNU Lesser General Public |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
39 |
License as published by the Free Software Foundation; either |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
40 |
version 2.1 of the License. |
210 | 41 |
|
335
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
42 |
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:
210
diff
changeset
|
43 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
44 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
45 |
Lesser General Public License for more details. |
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
46 |
|
7e19ab19148b
Changed license to LGPL2.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
210
diff
changeset
|
47 |
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:
210
diff
changeset
|
48 |
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:
210
diff
changeset
|
49 |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
210 | 50 |
" |
51 |
! ! |
|
177 | 52 |
|
53 |
!HGCachedFileData class methodsFor:'instance creation'! |
|
54 |
||
55 |
on: file reader: reader |
|
56 |
^self new setFile: file reader: reader |
|
57 |
||
58 |
"Created: / 14-01-2013 / 16:27:11 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
59 |
! ! |
|
60 |
||
61 |
!HGCachedFileData methodsFor:'accessing'! |
|
62 |
||
63 |
value |
|
403
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
64 |
| fexists finfo fmodtime | |
177 | 65 |
|
403
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
66 |
fexists := file exists. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
67 |
fexists == exists ifTrue:[ |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
68 |
fexists ifTrue:[ |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
69 |
finfo := file info. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
70 |
fmodtime := finfo statusChangeTime ? finfo modificationTime. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
71 |
(data notNil |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
72 |
and:[timestamp notNil |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
73 |
and:[fmodtime <= timestamp |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
74 |
and:[finfo size = size]]]) |
808
ae9fdbfa8ba4
Initial support of obsolete changesets
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
509
diff
changeset
|
75 |
ifTrue:[ |
403
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
76 |
^ data |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
77 |
]. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
78 |
] ifFalse:[ |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
79 |
^ data |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
80 |
]. |
177 | 81 |
]. |
403
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
82 |
exists := fexists. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
83 |
fexists ifTrue:[ |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
84 |
finfo isNil ifTrue:[ |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
85 |
finfo := file info. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
86 |
fmodtime := finfo statusChangeTime ? finfo modificationTime. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
87 |
]. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
88 |
timestamp := fmodtime. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
89 |
size := finfo size. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
90 |
]. |
237ed0ed6c49
Initial support for Mercurial bookmarks.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
335
diff
changeset
|
91 |
data := reader valueWithOptionalArgument: data and: file. |
177 | 92 |
^data |
93 |
||
94 |
"Created: / 14-01-2013 / 16:25:28 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
808
ae9fdbfa8ba4
Initial support of obsolete changesets
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
509
diff
changeset
|
95 |
"Modified: / 08-02-2018 / 15:10:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
177 | 96 |
! ! |
97 |
||
98 |
!HGCachedFileData methodsFor:'initialization'! |
|
99 |
||
100 |
flush |
|
404
d920ee124ca8
Flush all cached repository data after executing a command.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
403
diff
changeset
|
101 |
timestamp := size := nil. |
177 | 102 |
|
103 |
"Created: / 14-01-2013 / 16:26:28 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
404
d920ee124ca8
Flush all cached repository data after executing a command.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
403
diff
changeset
|
104 |
"Modified: / 21-03-2014 / 21:49:38 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
177 | 105 |
! |
106 |
||
203
85d2f90dc053
Performance improvement: cache heads and branches.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
180
diff
changeset
|
107 |
setData: anObject |
85d2f90dc053
Performance improvement: cache heads and branches.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
180
diff
changeset
|
108 |
data := anObject |
85d2f90dc053
Performance improvement: cache heads and branches.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
180
diff
changeset
|
109 |
|
85d2f90dc053
Performance improvement: cache heads and branches.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
180
diff
changeset
|
110 |
"Created: / 25-01-2013 / 18:52:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
85d2f90dc053
Performance improvement: cache heads and branches.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
180
diff
changeset
|
111 |
! |
85d2f90dc053
Performance improvement: cache heads and branches.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
180
diff
changeset
|
112 |
|
177 | 113 |
setFile:fileArg reader:readerArg |
114 |
file := fileArg. |
|
115 |
reader := readerArg. |
|
116 |
||
117 |
"Created: / 14-01-2013 / 16:20:26 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
118 |
! ! |
|
119 |
||
120 |
!HGCachedFileData class methodsFor:'documentation'! |
|
121 |
||
122 |
version_HG |
|
123 |
||
124 |
^ '$Changeset: <not expanded> $' |
|
125 |
! ! |
|
203
85d2f90dc053
Performance improvement: cache heads and branches.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
180
diff
changeset
|
126 |