git/GitObject.st
author Jan Vrany <jan.vrany@labware.com>
Thu, 28 Jul 2022 06:56:07 +0100
changeset 943 442fe77c421f
parent 481 0cfef855baa2
permissions -rw-r--r--
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     1
"{ Package: 'stx:libscm/git' }"
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     2
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
     3
GitRepositoryObject subclass:#GitObject
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
     4
	instanceVariableNames:'oid'
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     5
	classVariableNames:''
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
     6
	poolDictionaries:'GitObjectType'
28
f6f0a4bbaaee Class category rename (SCM-Git-Model -> SCM-Git-Core)
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
     7
	category:'SCM-Git-Core'
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     8
!
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     9
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    10
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    11
!GitObject class methodsFor:'instance creation'!
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    12
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    13
newForType: type
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    14
    type == OBJ_ANY ifTrue:[
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    15
        ^self new
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    16
    ].
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    17
    type == OBJ_COMMIT ifTrue:[
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 5
diff changeset
    18
        ^GitCommit new
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    19
    ].
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    20
    type == OBJ_TREE ifTrue:[
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    21
        ^GitTree new
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    22
    ].
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    23
    type == OBJ_TAG ifTrue:[
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    24
        ^GitTag new 
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    25
    ].
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    26
    type == OBJ_BLOB ifTrue:[
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    27
        ^GitBlob new
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    28
    ].
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    29
    self error:'Unsupported git object type: ', type printString.
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    30
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    31
    "Created: / 10-09-2012 / 18:52:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    32
! !
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    33
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    34
!GitObject class methodsFor:'accessing'!
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    35
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    36
structSize
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    37
    "Returns size of undelaying structure in bytes"
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    38
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    39
    ^0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    40
! !
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    41
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    42
!GitObject methodsFor:'accessing'!
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    43
20
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    44
oid     
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    45
    oid isNil ifTrue:[
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    46
        " Replace by proper git_*_id call ------------v               "
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    47
        oid := GitOid fromBytes: (GitPrimitives subclassResponsibility).
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    48
    ].
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    49
    ^ oid
20
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    50
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    51
    "Modified: / 30-09-2012 / 10:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    52
! !
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    53
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    54
!GitObject methodsFor:'initialization'!
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    55
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    56
setOid: aGitOid
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    57
    oid := aGitOid
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    58
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    59
    "Created: / 10-09-2012 / 18:54:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    60
! !
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    61
5
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    62
!GitObject methodsFor:'initialization & release'!
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    63
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    64
free
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    65
    handle notNil ifTrue:[
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    66
        GitPrimitives prim_git_object_free: handle.
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    67
        handle := nil.
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    68
    ].
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    69
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    70
    "Created: / 17-09-2012 / 21:16:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    71
! !
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    72
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    73
!GitObject methodsFor:'testing'!
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    74
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    75
isGitObject
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    76
    ^true
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    77
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    78
    "Created: / 19-09-2012 / 13:55:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    79
! !
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
    80
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    81
!GitObject class methodsFor:'documentation'!
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    82
31
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
    83
version_GIT
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
    84
    "Never, ever change this method. Ask JV or CG why"
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
    85
    ^thisContext method mclass theNonMetaclass instVarNamed: #revision
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
    86
!
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
    87
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    88
version_SVN
481
0cfef855baa2 Initial import from upstream repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
    89
    ^ '$Id$'
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    90
! !