git/GitStructure.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 19 Feb 2021 08:29:41 +0000
changeset 924 4d92f234f671
parent 481 0cfef855baa2
permissions -rw-r--r--
Rework and fix HGSourceCodeManager >> #revisionLogOf:...directory:module:` This commit changes the logic in two ways: 1. #newestRevision is now the newest revision in the branch that *contains* given file (not necesarily modidfes it). If there are multiple heads in that branch, pretty much random one is returned. This changes old behavior and therefore this commit updates tests. 2. If a specific single revision is requested, i.e., both from and to revisions are the same, revision log with that single revision is returned no matter whether it modifies the file or even contains that file at all. This is essentially a workaround to fix issue #305. Moreover, this commit simplifies the code a lot by delegating all the changeset searching and filtering to mercurial using revset expressions. See https://swing.fit.cvut.cz/projects/stx-jv/ticket/305#comment:3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     1
"{ Package: 'stx:libscm/git' }"
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     2
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     3
ExternalStructure subclass:#GitStructure
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     4
	instanceVariableNames:''
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     5
	classVariableNames:''
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     6
	poolDictionaries:''
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
     7
	category:'SCM-Git-Core-Internal-Structures'
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     8
!
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     9
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    10
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    11
!GitStructure class methodsFor:'instance creation'!
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    12
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    13
address: address
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    14
    ^self address: address size: self structSize.
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    15
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    16
    "Created: / 19-09-2012 / 14:04:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    17
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    18
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    19
fromExternalAddress:anExternalAddress
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    20
    ^ self basicNew fromExternalAddress:anExternalAddress
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    21
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    22
    "Created: / 01-10-2012 / 14:26:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    23
!
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    24
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    25
new
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    26
    ^self new: self structSize
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    27
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    28
    "Created: / 30-09-2012 / 20:21:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    29
!
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    30
26
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    31
new: size
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    32
    size == self structSize ifFalse:[
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    33
        self error:'Invalid size for git_checkout_opts'.
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    34
        ^nil.
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    35
    ].
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    36
    ^(super new: size) initialize.
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    37
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    38
    "Created: / 19-09-2012 / 18:13:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    39
!
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    40
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    41
newAddress: address
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    42
    ^self address: address size: self structSize.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    43
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    44
    "Created: / 25-09-2012 / 15:07:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    45
! !
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    46
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    47
!GitStructure class methodsFor:'accessing'!
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    48
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    49
structSize
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    50
    ^0
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    51
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    52
    "Created: / 19-09-2012 / 01:53:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    53
! !
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    54
26
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    55
!GitStructure methodsFor:'initialization'!
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    56
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    57
initialize
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    58
    1 to: self size do:[:i|self at: i put: 0]
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    59
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    60
    "Created: / 03-10-2012 / 20:31:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    61
! !
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    62
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    63
!GitStructure methodsFor:'private'!
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    64
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    65
fromExternalAddress:anExternalAddress
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    66
    self setAddress:(anExternalAddress address) size: self class structSize
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    67
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    68
    "Created: / 19-09-2012 / 01:53:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    69
! !
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    70
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    71
!GitStructure class methodsFor:'documentation'!
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    72
31
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
    73
version_GIT
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
    74
    "Never, ever change this method. Ask JV or CG why"
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
    75
    ^thisContext method mclass theNonMetaclass instVarNamed: #revision
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
    76
!
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
    77
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    78
version_SVN
481
0cfef855baa2 Initial import from upstream repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
    79
    ^ '$Id$'
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    80
! !