git/GitIndex.st
author convert-repo
Fri, 20 Dec 2019 04:29:18 +0000
changeset 896 4b889235c927
parent 481 0cfef855baa2
permissions -rw-r--r--
update tags
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     1
"{ Package: 'stx:libscm/git' }"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     2
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
     3
GitLibraryObject subclass:#GitIndex
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     4
	instanceVariableNames:'repository'
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     5
	classVariableNames:''
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     6
	poolDictionaries:'GitObjectType'
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
     7
	category:'SCM-Git-Core'
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     8
!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     9
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    10
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    11
!GitIndex class methodsFor:'instance creation'!
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    12
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    13
on: path
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    14
    "Creates new index on given file. If the file does not exist,
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    15
     the index is only in-memory. To write it to disk, use #write"
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    16
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    17
    | err ref |
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    18
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    19
    ref := ByteArray new: ExternalBytes sizeofPointer.
26
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    20
    err := GitPrimitives prim_git_index_open: ref index_path: path asString.
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    21
            GitError raiseIfError: err.
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    22
    ^GitIndex new
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    23
        setHandleFromRef: ref;
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    24
        yourself
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    25
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    26
    "Created: / 02-10-2012 / 15:39:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    27
! !
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
    28
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    29
!GitIndex methodsFor:'accessing'!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    30
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    31
tree
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    32
    | oid err |
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    33
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    34
    oid := GitOid new.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    35
    err := GitPrimitives prim_git_tree_create_fromindex: oid index: handle.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    36
    GitError raiseIfError: err.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    37
    ^repository lookup: oid type: OBJ_TREE
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    38
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    39
    "Created: / 25-09-2012 / 10:22:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    40
! !
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    41
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    42
!GitIndex methodsFor:'adding & removing'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    43
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    44
add: entry
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    45
    ^self add: entry stage: 0
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    46
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    47
    "Created: / 25-09-2012 / 00:26:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    48
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    49
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    50
add: entry stage: stage
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    51
    | path err |
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    52
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    53
    path := entry pathNameRelative.
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    54
    err := GitPrimitives prim_git_index_add: handle path: path stage: stage.
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    55
    GitError raiseIfError: err.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    56
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    57
    "Created: / 25-09-2012 / 10:11:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    58
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    59
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    60
!GitIndex methodsFor:'initialization & release'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    61
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    62
free
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    63
    handle notNil ifTrue:[
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    64
        GitPrimitives prim_git_index_free: handle. 
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    65
        handle := nil.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    66
    ].
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    67
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    68
    "Created: / 24-09-2012 / 15:40:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    69
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    70
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    71
!GitIndex methodsFor:'operations'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    72
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    73
read
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    74
    "Add or update an index entry from a file in disk"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    75
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    76
    | err |     
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    77
    err := GitPrimitives prim_git_index_read: handle.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    78
    GitError raiseIfError: err.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    79
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    80
    "Created: / 24-09-2012 / 22:02:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    81
!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    82
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    83
unique
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    84
    "Add or update an index entry from a file in disk"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    85
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    86
    | err |     
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    87
    err := GitPrimitives prim_git_index_uniq: handle.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    88
    GitError raiseIfError: err.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    89
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    90
    "Created: / 25-09-2012 / 00:17:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    91
!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    92
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    93
write
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    94
    | err |     
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    95
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    96
"/    err := GitPrimitives prim_git_index_uniq: handle.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    97
"/    GitError raiseIfError: err.
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    98
    err := GitPrimitives prim_git_index_write: handle.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    99
    GitError raiseIfError: err.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   100
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   101
    "Created: / 25-09-2012 / 00:17:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   102
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   103
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   104
!GitIndex methodsFor:'private-accessing'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   105
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   106
getHandleClass
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   107
    ^GitIndexHandle
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   108
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   109
    "Created: / 25-09-2012 / 00:34:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   110
!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   111
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   112
setRepository: aGitRepository
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   113
    repository := aGitRepository
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   114
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   115
    "Created: / 24-09-2012 / 21:47:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   116
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   117
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   118
!GitIndex class methodsFor:'documentation'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   119
31
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   120
version_GIT
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   121
    "Never, ever change this method. Ask JV or CG why"
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   122
    ^thisContext method mclass theNonMetaclass instVarNamed: #revision
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   123
!
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   124
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   125
version_SVN
481
0cfef855baa2 Initial import from upstream repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   126
    ^ '$Id$'
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   127
! !