git/GitWorkingCopy.st
author vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
Tue, 02 Oct 2012 15:41:46 +0000
changeset 25 7a92ac0c9318
parent 24 bce2a03d1070
child 26 7ce8b2978128
permissions -rw-r--r--
- GitReference added: #isGitReference - GitWorkingCopy added: #checkout #isOffRepo changed: #checkout: #index #setRepository: - GitRepository added: #detach changed: #index: - stx_libscm_git changed: #classNamesAndAttributes #extensionMethodNames #preRequisites - GitTests changed: #test_02a - extensions ...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     1
"{ Package: 'stx:libscm/git' }"
2783c9882d30 - GitSubmoduleUpdateType
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:#GitWorkingCopy
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
     4
	instanceVariableNames:'reference commit index root detached'
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     5
	classVariableNames:''
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
     6
	poolDictionaries:'GitStatusCodes'
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
     7
	category:'SCM-Git-Core'
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     8
!
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    10
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    11
!GitWorkingCopy methodsFor:'accessing'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    12
20
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    13
commit
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    14
    commit isNil ifTrue:[
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    15
        commit := repository lookup: self reference oid.
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    16
    ].
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    17
    ^ commit
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    18
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    19
    "Modified: / 30-09-2012 / 10:25:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    20
!
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    21
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    22
index
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    23
    "Get the Index file for this repository."
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    24
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    25
    index isNil ifTrue:[
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    26
        index := repository getIndex.
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    27
        index isNil ifTrue:[
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    28
            self isOffRepo ifFalse:[
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    29
                "/ OK, this is a default working copy..."
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    30
                index := repository index. "/ lazily initialized
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    31
            ] ifTrue:[
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    32
                | indexPath |
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    33
                "/ Hmm...creating external working copy, create one"
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    34
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    35
                indexPath := (repository path asFilename / '.git' / ('index_', self hash hexPrintString)) pathName.
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    36
                index := GitIndex on: indexPath.
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    37
                index write.
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    38
                repository index: index.
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    39
            ]
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    40
        ]
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    41
    ].
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    42
    ^ index
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    43
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    44
    "Created: / 24-09-2012 / 15:42:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    45
!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    46
20
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    47
reference
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    48
    reference isNil ifTrue:[
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    49
        reference := repository head.
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    50
        detached := repository headIsDetached.
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    51
    ].
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    52
    ^reference
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    53
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    54
    "Created: / 30-09-2012 / 10:24:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    55
!
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
    56
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    57
root
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    58
    ^ root
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    59
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    60
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    61
!GitWorkingCopy methodsFor:'actions'!
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    62
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    63
checkout
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    64
    self checkout: self reference
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    65
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    66
    "Created: / 02-10-2012 / 16:19:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    67
!
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    68
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    69
checkout: aStringOrOidOrTreeishOrReference
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    70
    | obj |
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    71
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    72
    aStringOrOidOrTreeishOrReference isGitTreeish ifTrue:[
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    73
        obj := aStringOrOidOrTreeishOrReference 
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    74
    ] ifFalse:[
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    75
        | oid |
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    76
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    77
        aStringOrOidOrTreeishOrReference isGitOid  ifTrue:[
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    78
            oid := aStringOrOidOrTreeishOrReference
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    79
        ] ifFalse:[
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    80
            aStringOrOidOrTreeishOrReference isGitReference ifTrue:[
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    81
                oid := aStringOrOidOrTreeishOrReference oid.
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    82
            ] ifFalse:[
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    83
                oid := GitOid fromString: aStringOrOidOrTreeishOrReference
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    84
            ].
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
    85
        ].
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    86
        obj := repository lookup: oid.
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    87
    ].
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    88
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    89
    repository checkout: obj.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    90
    commit := obj.
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    91
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
    92
    "Created: / 19-09-2012 / 14:00:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    93
!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    94
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    95
commit: message
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
    96
    ^self commit: message tree: index tree
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    97
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    98
    "Created: / 25-09-2012 / 10:19:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    99
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   100
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   101
commit: message tree: tree
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   102
    ^self commit: message tree: tree parents: (Array with: self commit)
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   103
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   104
    "Created: / 25-09-2012 / 11:09:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   105
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   106
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   107
commit: message tree: tree parents: parents 
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   108
    ^self commit: message tree: tree parents: parents update: (detached ifTrue:[nil] ifFalse:[reference]).
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   109
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   110
    "Created: / 25-09-2012 / 11:11:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   111
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   112
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   113
commit: message tree: tree parents: parents update: refOrNil
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   114
    ^self commit: message tree: tree parents: parents update: refOrNil commiter: nil.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   115
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   116
    "Created: / 25-09-2012 / 12:24:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   117
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   118
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   119
commit: message tree: tree parents: parents update: refOrNil commiter: commiterOrNil
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   120
    ^self commit: message tree: tree parents: parents update: refOrNil commiter: commiterOrNil author: nil
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   121
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   122
    "Created: / 25-09-2012 / 14:50:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   123
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   124
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   125
commit: message tree: tree parents: parents update: refOrNil commiter: commiterOrNil author: authorOrNil
20
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
   126
    reference := commit := detached := nil.
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   127
    ^repository commit: message tree: tree parents: parents update: refOrNil commiter: commiterOrNil author: authorOrNil
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   128
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   129
    "Created: / 25-09-2012 / 14:50:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   130
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   131
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   132
stage
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   133
    "Stage all unstaged files"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   134
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   135
    self entriesAndStatusesDo: [:entry :status|
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   136
        (status bitAnd: (GIT_STATUS_WT_MODIFIED | GIT_STATUS_WT_DELETED)) ~~ 0 ifTrue:[
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   137
            self index add: entry.            
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   138
        ] ifFalse:[
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   139
            (status bitAnd: (GIT_STATUS_WT_DELETED)) ~~ 0 ifTrue:[
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   140
                self index remove: entry.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   141
            ].
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   142
        ].
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   143
    ].
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   144
    self index write
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   145
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   146
    "Created: / 25-09-2012 / 00:13:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   147
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   148
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   149
!GitWorkingCopy methodsFor:'enumerating'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   150
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   151
entriesAndStatusesDo: aBlock
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   152
    | cb err |
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   153
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   154
    cb := ExternalFunctionCallback new.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   155
    cb returnType:#int argumentTypes: #(charPointer int pointer).
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   156
    cb action:[:path :status :payload|
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   157
        aBlock value: (root / path copyCStringFromHeap) value: status
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   158
    ].
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   159
    cb generateClosure.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   160
    err := GitPrimitives prim_git_status_foreach: repository getHandle callback: cb payload: nil.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   161
    GitError raiseIfError: err.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   162
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   163
    "Created: / 25-09-2012 / 00:11:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
   164
! !
3d98ee6c5c64 - GitStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 9
diff changeset
   165
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   166
!GitWorkingCopy methodsFor:'initialization'!
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   167
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   168
setRepository: aGitRepository
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   169
    super setRepository: aGitRepository.
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   170
    handle := aGitRepository getHandle.
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   171
    self isOffRepo ifTrue:[
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   172
        repository detach.
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   173
        self index.
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   174
        self checkout.
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   175
    ].
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   176
    root := GitWorkingCopyEntry wc: self path: repository workdir.
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   177
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   178
    "Created: / 19-09-2012 / 09:43:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   179
! !
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   180
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   181
!GitWorkingCopy methodsFor:'initialization & release'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   182
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   183
free
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   184
    "Nothing to do, I have no backing structure"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   185
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   186
    "Modified: / 25-09-2012 / 00:39:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   187
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   188
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   189
!GitWorkingCopy methodsFor:'instance creation'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   190
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   191
/ aString
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   192
    ^root construct: aString
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   193
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   194
    "Created: / 24-09-2012 / 13:49:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   195
!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   196
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   197
construct: aString
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   198
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   199
    ^root construct: aString
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   200
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   201
    "Created: / 24-09-2012 / 13:50:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   202
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   203
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   204
!GitWorkingCopy methodsFor:'private'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   205
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   206
statusOf: aStringOrFilenameOrWorkingCopyEntry
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   207
    ^repository statusOf: aStringOrFilenameOrWorkingCopyEntry
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   208
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   209
    "Created: / 24-09-2012 / 22:36:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   210
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   211
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   212
!GitWorkingCopy methodsFor:'private-accessing'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   213
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   214
getHandleClass
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   215
    ^ self shouldNotImplement
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   216
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   217
    "Modified (comment): / 25-09-2012 / 00:39:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   218
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   219
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   220
!GitWorkingCopy methodsFor:'testing'!
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   221
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   222
isOffRepo
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   223
    "Return true, if the working copy is off-repository, i.e.,
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   224
     whether working copy path is not the same as repository
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   225
     path."
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   226
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   227
    ^repository workdir pathName ~= repository path
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   228
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   229
    "Created: / 02-10-2012 / 16:09:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   230
! !
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   231
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   232
!GitWorkingCopy class methodsFor:'documentation'!
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   233
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   234
version_SVN
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   235
    ^ '$Id::                                                                                                                        $'
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   236
! !