git/GitOid.st
author convert-repo
Sat, 08 Jun 2019 03:28:26 +0000
changeset 873 e7944a5cb335
parent 481 0cfef855baa2
child 704 0e4ebe84ed4c
permissions -rw-r--r--
update tags
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
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
     3
ByteArray variableByteSubclass:#GitOid
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     4
	instanceVariableNames:''
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     5
	classVariableNames:''
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     6
	poolDictionaries:''
28
f6f0a4bbaaee Class category rename (SCM-Git-Model -> SCM-Git-Core)
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
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: 0
diff changeset
    11
!GitOid class methodsFor:'instance creation'!
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    12
18
d359fb6d415c - Basic simple commit works - timestamp in signatures are messed up, though.
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    13
fromBytes: aByteArrayOrString
d359fb6d415c - Basic simple commit works - timestamp in signatures are messed up, though.
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    14
d359fb6d415c - Basic simple commit works - timestamp in signatures are messed up, though.
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    15
    ^self new replaceBytesFrom: 1 to: 20 with: aByteArrayOrString startingAt: 1
d359fb6d415c - Basic simple commit works - timestamp in signatures are messed up, though.
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    16
d359fb6d415c - Basic simple commit works - timestamp in signatures are messed up, though.
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    17
    "Created: / 25-09-2012 / 21:00:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d359fb6d415c - Basic simple commit works - timestamp in signatures are messed up, though.
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    18
!
d359fb6d415c - Basic simple commit works - timestamp in signatures are messed up, though.
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    19
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    20
fromString: aString
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    21
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    22
"/    | oid |
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    23
"/
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    24
"/    oid := self new.
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    25
"/    GitPrimitives prim_git_oid_fromstr: oid str: aString.
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    26
"/    ^oid.
3
2a4bf4fb54d8 - Better error handling
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    27
2a4bf4fb54d8 - Better error handling
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
    28
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    29
    | sz oid s hi lo |
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    30
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    31
    sz := aString size.
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    32
    sz ~~ 40 ifTrue:[
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    33
        self error:'Not a SHA-1 hex string (must have 40 chars)'.
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    34
        ^nil
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    35
    ].
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    36
    oid := self new.
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    37
    s := aString readStream.
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    38
    1 to: 20 do: [ :idx |
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    39
        hi := s next digitValue.
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    40
        lo := s next digitValue.
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    41
        oid at:idx put: ((hi bitShift:4) bitOr: lo)
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    42
    ].
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    43
    ^ oid
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    44
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    45
    "
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    46
    GitOid fromString: '7164acf359f5da8a4bc9cd3e03e2e461013c3811'
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    47
    "
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    48
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    49
    "Created: / 10-09-2012 / 10:49:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    50
!
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    51
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    52
new
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    53
    ^self new: self structSize
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    54
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    55
    "Created: / 10-09-2012 / 10:42:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    56
!
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    57
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    58
new: size
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    59
    size ~~ "self structSize"20 ifTrue:[
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    60
        self error: 'Size GitOid must be exactly 20 bytes, its a SHA-1 hash'.
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    61
        ^nil.
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    62
    ].
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    63
    ^super new: size
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    64
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    65
    "Created: / 10-09-2012 / 10:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    66
! !
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    67
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    68
!GitOid class methodsFor:'accessing'!
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    69
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    70
libraryName
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    71
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    72
    OperatingSystem isUNIXlike ifTrue:[^'libgit2.so'].
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    73
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    74
    OperatingSystem isMSWINDOWSlike ifTrue:[^'git2.dll'].
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    75
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    76
    self error:'Library name for host OS is not known'
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    77
!
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    78
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    79
structSize
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    80
    "Returns size of undelaying structure in bytes"
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    81
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    82
    ^20
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    83
! !
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    84
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    85
!GitOid methodsFor:'printing & storing'!
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    86
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    87
displayOn:aStream
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    88
    "append a printed representation if the receiver to the argument, aStream"
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    89
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    90
    self hexPrintOn:aStream.
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    91
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    92
    "Created: / 19-09-2012 / 00:34:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    93
!
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    94
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    95
printOn:aStream
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    96
    "append a printed representation if the receiver to the argument, aStream"
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    97
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    98
    self hexPrintOn:aStream.
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    99
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   100
    "Modified: / 19-09-2012 / 00:32:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   101
! !
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   102
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   103
!GitOid methodsFor:'testing'!
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   104
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   105
isGitOid
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   106
    ^true
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   107
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   108
    "Created: / 19-09-2012 / 13:59:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   109
! !
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   110
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   111
!GitOid class methodsFor:'documentation'!
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   112
31
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
   113
version_GIT
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
   114
    "Never, ever change this method. Ask JV or CG why"
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
   115
    ^thisContext method mclass theNonMetaclass instVarNamed: #revision
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
   116
!
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 28
diff changeset
   117
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   118
version_SVN
481
0cfef855baa2 Initial import from upstream repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   119
    ^ '$Id$'
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   120
! !