git/GitRepository.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:
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
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
     3
GitLibraryObject subclass:#GitRepository
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
     4
	instanceVariableNames:'path workdir remotes index'
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
     5
	classVariableNames:''
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
     6
	poolDictionaries:'GitObjectType GitStatusCodes'
24
bce2a03d1070 - GitIndex
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
1
8f4fde3c7129 - GitHandle
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    11
!GitRepository class methodsFor:'instance creation'!
8f4fde3c7129 - GitHandle
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    12
11
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    13
clone: url to: stringOrDirectory
12
59d59fc32b71 - added infrastructure for tests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 11
diff changeset
    14
    | dir ref fetchStats checkoutStats options |
11
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    15
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
    16
    (url asString startsWith: 'file://') ifTrue:[
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
    17
        "Arghhh...local transport not yet supported by libgit2, use command line..."
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
    18
        GitCommand clone: url to: stringOrDirectory pathName.
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
    19
        ^self open: stringOrDirectory pathName
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
    20
    ].
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
    21
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
    22
11
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    23
    dir := stringOrDirectory asFilename.
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    24
    dir exists ifTrue:[
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    25
        GitError raiseErrorString:'Destination directory already exists'.
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    26
        ^self
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    27
    ].
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    28
    dir directory isDirectory ifFalse:[
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    29
        GitError raiseErrorString:'Parent directory for destination does not exists'.
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    30
        ^self
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    31
    ].
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    32
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    33
    ref := ByteArray new: ExternalBytes sizeofPointer.
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    34
    fetchStats := GitIndexerStatsStructure new.
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    35
    checkoutStats := GitIndexerStatsStructure new.
12
59d59fc32b71 - added infrastructure for tests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 11
diff changeset
    36
    options := GitCheckoutOptions new.
59d59fc32b71 - added infrastructure for tests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 11
diff changeset
    37
    options strategyCreateMissing.
11
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    38
    GitError raiseIfError: 
12
59d59fc32b71 - added infrastructure for tests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 11
diff changeset
    39
        (GitPrimitives prim_git_clone: ref origin_url: url asString workdir_path: dir pathName fetch_stats: fetchStats checkout_stats: checkoutStats checkout_opts: options).
11
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    40
    ^self new 
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    41
        setHandleFromRef:ref;
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    42
        setPath: dir pathName;
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    43
        yourself
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    44
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
    45
    "Created: / 01-10-2012 / 00:09:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    46
!
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
    47
31
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    48
discover: path
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    49
    "Find a git repository in given directory or super-directories.
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    50
     If not repository is found, return nil.
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    51
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    52
     Currently, it searches for presence of .git
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    53
     directory"
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    54
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    55
    | d |
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    56
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    57
    path isNil ifTrue:[ ^ nil ].
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    58
    d := path asFilename.
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    59
    [ d notNil ] whileTrue:[
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    60
        (d / '.git') exists ifTrue:[ ^ d ].
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    61
        d := d isRootDirectory 
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    62
            ifTrue:[nil]
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    63
            ifFalse:[d := d directory].
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    64
    ].
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    65
    ^nil
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    66
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    67
    "Created: / 06-10-2012 / 19:35:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    68
!
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    69
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    70
open: aStringOrFilename
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    71
    "Opens an existing git repository on given path"
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    72
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    73
    | ref |
1
8f4fde3c7129 - GitHandle
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    74
8f4fde3c7129 - GitHandle
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    75
    ref := ByteArray new: ExternalBytes sizeofPointer.
31
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    76
    GitError raiseIfError: (GitPrimitives prim_git_repository_open: ref path: aStringOrFilename asString).
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    77
    ^self new 
5
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
    78
        setHandleFromRef:ref;
31
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
    79
        setPath: aStringOrFilename;
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    80
        yourself
1
8f4fde3c7129 - GitHandle
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    81
8f4fde3c7129 - GitHandle
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    82
    "Created: / 07-09-2012 / 23:45:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f4fde3c7129 - GitHandle
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    83
! !
8f4fde3c7129 - GitHandle
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 0
diff changeset
    84
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    85
!GitRepository class methodsFor:'accessing'!
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    86
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    87
structSize
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
    88
    "Returns size of undelaying structure in bytes"
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    89
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    90
    ^0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    91
! !
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
    92
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    93
!GitRepository methodsFor:'accessing'!
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
    94
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    95
head
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    96
    | ref err |
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    97
    ref := ByteArray new: ExternalBytes sizeofPointer.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    98
    err := GitPrimitives prim_git_repository_head: ref repo: handle.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
    99
    GitError raiseIfError: err.
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
    ^GitReference new setHandleFromRef: ref
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   102
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   103
    "Created: / 25-09-2012 / 10:48:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   104
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   105
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   106
index
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   107
    "Return repository working index"
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   108
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   109
    index isNil ifTrue:[
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   110
        | ref err |
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   111
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   112
        ref := ByteArray new: ExternalBytes sizeofPointer.
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   113
        err := GitPrimitives prim_git_repository_index: ref repo: handle.
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   114
               GitError raiseIfError: err.
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   115
        index := GitIndex new
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   116
                setHandleFromRef: ref;
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   117
                setRepository: self;
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   118
                yourself
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   119
    ].
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   120
    ^index
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   121
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   122
    "Created: / 02-10-2012 / 15:33:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   123
!
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   124
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   125
index: aGitIndex
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   126
    "Sets repository working index to given index"
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   127
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   128
    self assert: (aGitIndex isKindOf: GitIndex).
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   129
    index := nil.
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   130
    GitPrimitives prim_git_repository_set_index: handle index: aGitIndex getHandle.
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   131
    aGitIndex setRepository: self.
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   132
    index := aGitIndex
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   133
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   134
    "Created: / 02-10-2012 / 15:33:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   135
!
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   136
20
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
   137
path
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
   138
    ^ path
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
   139
!
24ae01b36807 fixes, test_01a finished & passed on linux
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 18
diff changeset
   140
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   141
remotes
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   142
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   143
    remotes isNil ifTrue:[
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   144
        | list  |
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   145
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   146
        list := GitStringArray new.
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   147
        GitError raiseIfError:(GitPrimitives prim_git_remote_list: list repo: handle).
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   148
        remotes := Dictionary new.
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   149
        list do:[:name|
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   150
            remotes at: name put: (self remoteNamed: name)
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   151
        ].
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   152
    ].
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   153
    ^remotes.
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   154
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   155
    "Created: / 30-09-2012 / 20:15:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   156
!
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   157
11
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   158
workingCopy
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   159
    ^self workingCopyOn: self path
11
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   160
07cb27974501 - stx_libscm_git
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 10
diff changeset
   161
    "Created: / 19-09-2012 / 15:32:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   162
! !
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   163
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   164
!GitRepository methodsFor:'actions'!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   165
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   166
commit: message tree: tree parents: parents update: refOrNil commiter: commiterOrNil author: authorOrNil
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   167
    | oid err committer author parentsA |
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   168
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   169
    committer := commiterOrNil notNil 
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   170
                    ifTrue:[committer copyNow]
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   171
                    ifFalse:[GitCommitterQuery query copyNow].
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   172
    author := commiterOrNil notNil
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   173
                    ifTrue:[author]
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   174
                    ifFalse:[committer copy].
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   175
    parentsA := ByteArray new: (ExternalBytes sizeofPointer * parents size).
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   176
    parents withIndexDo:[:each :idx|
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   177
        parentsA pointerAt: (1 + ((idx - 1) * ExternalBytes sizeofPointer)) put: each getHandle.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   178
    ].
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   179
    oid := GitOid new.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   180
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   181
    err := GitPrimitives prim_git_commit_create: oid 
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   182
                                           repo: handle 
18
d359fb6d415c - Basic simple commit works - timestamp in signatures are messed up, though.
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 16
diff changeset
   183
                                     update_ref: (refOrNil notNil ifTrue:[refOrNil name] ifFalse:[nil]) 
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   184
                                         author: author getHandle
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   185
                                      committer: committer getHandle
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   186
                               message_encoding: 'utf-8'
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   187
                                        message: message utf8Encoded
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   188
                                           tree: tree getHandle
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   189
                                   parent_count: parents size
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   190
                                        parents: parentsA.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   191
    GitError raiseIfError: err.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   192
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   193
    ^self lookup: oid type: OBJ_COMMIT.
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   194
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   195
    "Created: / 25-09-2012 / 14:51:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   196
!
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   197
25
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   198
detach
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   199
    "Detach the HEAD.
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   200
     If the HEAD is already detached and points to a Commit, 0 is returned.
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   201
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   202
     If the HEAD is already detached and points to a Tag, the HEAD is
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   203
     updated into making it point to the peeled Commit, and 0 is returned.
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   204
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   205
     If the HEAD is already detached and points to a non commitish, the HEAD is 
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   206
     unaletered, and -1 is returned.
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   207
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   208
     Otherwise, the HEAD will be detached and point to the peeled Commit.
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   209
    "
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   210
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   211
    GitError raiseIfError: (GitPrimitives prim_git_repository_detach_head: handle).
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   212
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   213
    "Created: / 02-10-2012 / 17:07:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   214
!
7a92ac0c9318 - GitReference
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 24
diff changeset
   215
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   216
push: aGitRemote
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   217
    "pushes all changes to given remote repository"
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   218
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   219
    GitCommand push
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   220
        workingDirectory: self path;
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   221
        remote: aGitRemote name;
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   222
        execute
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   223
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   224
    "Created: / 30-09-2012 / 23:46:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   225
! !
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   226
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   227
!GitRepository methodsFor:'copying'!
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   228
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   229
cloneTo: aStringOrFilename"^<GitRepository>"
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   230
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   231
    "Clones the receiver to given directory. And equivalent to
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   232
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   233
        git clone <path> <clonePath>
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   234
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   235
    "
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   236
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   237
    ^GitRepository 
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   238
        clone: ('file://', self path ) 
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   239
           to: (aStringOrFilename)
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   240
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   241
    "Created: / 30-09-2012 / 19:07:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   242
!
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   243
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   244
shallowCopy
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   245
26
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   246
    ^self class open: path pathName
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   247
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   248
    "Created: / 10-09-2012 / 19:04:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   249
! !
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   250
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   251
!GitRepository methodsFor:'initialization'!
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   252
26
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   253
setPath: aStringOrFilename
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   254
    path := aStringOrFilename asFilename
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   255
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   256
    "Created: / 10-09-2012 / 19:05:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   257
! !
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   258
5
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   259
!GitRepository methodsFor:'initialization & release'!
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   260
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   261
free
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   262
    handle notNil ifTrue:[
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   263
        GitPrimitives prim_git_object_free: handle. 
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   264
        handle := nil.
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   265
    ].
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   266
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   267
    "Created: / 17-09-2012 / 21:16:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   268
! !
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   269
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   270
!GitRepository methodsFor:'lookup'!
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   271
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   272
lookup: oid
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   273
    "Lookup an object with given OID"
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   274
    ^self lookup: oid type: OBJ_ANY
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   275
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   276
    "Created: / 10-09-2012 / 10:53:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   277
!
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   278
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   279
lookup: oid type: typeId
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   280
    "Lookup an object with given OID"
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   281
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   282
    | ref err type obj |
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   283
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   284
    oid class == GitOid ifFalse:[
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   285
        self error: 'Passed oid is not a GitOid'.
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   286
        ^nil.
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   287
    ].
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   288
    ref := ByteArray new: ExternalBytes sizeofPointer.
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 5
diff changeset
   289
    err := GitPrimitives prim_git_object_lookup: ref repo: handle id: oid type: typeId.
3
2a4bf4fb54d8 - Better error handling
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
   290
    GitError raiseIfError: err.
2a4bf4fb54d8 - Better error handling
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
   291
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   292
    typeId == OBJ_ANY ifTrue:[
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   293
        obj := ExternalAddress new setAddressFromBytes:ref.
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   294
        type := GitPrimitives prim_git_object_type: obj.
3
2a4bf4fb54d8 - Better error handling
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
   295
    ] ifFalse:[
2a4bf4fb54d8 - Better error handling
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 2
diff changeset
   296
        type := typeId.
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   297
    ].
5
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   298
    obj := GitObject newForType: type.
8
4275f357d3e8 - API fixes, more to come
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 5
diff changeset
   299
    ^obj
5
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   300
        setHandleFromRef: ref;
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   301
        setOid: oid;
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   302
        setRepository: self;
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   303
        yourself
2
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   304
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   305
    "Created: / 10-09-2012 / 11:01:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   306
! !
9731a2e41428 - More API methods...
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 1
diff changeset
   307
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   308
!GitRepository methodsFor:'private'!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   309
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   310
checkout: object
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   311
    | err stats options |
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   312
    object isGitTreeish ifFalse:[
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   313
        GitError raiseErrorString:'Invalid argument: ', object printString.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   314
        ^self.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   315
    ].
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   316
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   317
    stats := GitIndexerStatsStructure new.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   318
    options := GitCheckoutOptions new.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   319
    options strategyCreateMissing.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   320
    err := GitPrimitives prim_git_checkout_tree: handle treeish: object getHandle opts: options stats: stats. 
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   321
    GitError raiseIfError: err.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   322
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   323
    "Created: / 19-09-2012 / 09:52:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   324
! !
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   325
5
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   326
!GitRepository methodsFor:'private-accessing'!
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   327
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   328
getHandleClass
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   329
    ^GitRepositoryHandle
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   330
57c20a77e549 - Refactored to use handles
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 4
diff changeset
   331
    "Created: / 17-09-2012 / 21:20:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   332
!
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   333
24
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   334
getIndex
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   335
    ^index
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   336
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   337
    "Created: / 02-10-2012 / 15:40:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   338
!
bce2a03d1070 - GitIndex
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 23
diff changeset
   339
23
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   340
remoteNamed: name
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   341
    | ref err |
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   342
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   343
    ref := ByteArray new: ExternalBytes sizeofPointer.
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   344
    err := GitPrimitives prim_git_remote_load: ref repo: handle  name: name.
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   345
    GitError raiseIfError: err.
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   346
    ^GitRemote new
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   347
        setHandleFromRef: ref;
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   348
        setRepository: self;
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   349
        setName: name
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   350
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   351
    "Created: / 30-09-2012 / 20:16:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   352
!
5cbdd3cb7ce4 - GitPrimitives
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 20
diff changeset
   353
15
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   354
statusOf: aFilename
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   355
    | ref err |
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   356
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   357
    (aFilename pathName startsWith: self workdir pathName ) ifFalse:[
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   358
        GitError raiseErrorString: 'Given path is within working copy'.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   359
        ^0.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   360
    ].
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   361
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   362
    ref := ByteArray new: ExternalBytes sizeofInt.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   363
    err := GitPrimitives prim_git_status_file: ref repo: handle path: (aFilename pathName copyFrom: (workdir pathName size + 2)).
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   364
    GitError raiseIfError: err.
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   365
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   366
    ^ref longAt:1
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   367
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   368
    "Created: / 24-09-2012 / 22:27:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   369
!
40921d056f87 - GitRepository
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 12
diff changeset
   370
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   371
workdir
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   372
    "Get the path of the working directory for this repository or nil, if
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   373
     repository is bare"
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   374
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   375
    self isBare ifTrue: [ ^ nil ].
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   376
    workdir isNil ifTrue:[
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   377
        workdir := GitPrimitives prim_git_repository_workdir: handle.
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   378
        workdir := workdir asFilename.
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   379
    ].
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   380
    ^workdir
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   381
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   382
    "Created: / 10-09-2012 / 19:07:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   383
!
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   384
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   385
workdir: aStringOrFilename update: aBoolean
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   386
    "Set the path of the working directory for this repository.
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   387
     If update is true, then create/update gitlink in workdir and set 
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   388
     config 'core.worktree' (if workdir is not the parent of the 
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   389
     .git directory)"
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   390
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   391
    GitError raiseIfError: 
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   392
        (GitPrimitives prim_git_repository_set_workdir: handle 
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   393
                                               workdir: aStringOrFilename asString
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   394
                                        update_gitlink: (aBoolean ifTrue:[1] ifFalse:[0])).
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   395
    workdir := aStringOrFilename asFilename.
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   396
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   397
    "Created: / 10-09-2012 / 19:19:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   398
!
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   399
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   400
workingCopyOn: aStringOrFilename
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   401
    self isBare ifTrue:[
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   402
        GitError raiseErrorString: 'Bare repositories have no working copies'.
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   403
        ^nil.
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   404
    ].
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   405
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   406
    aStringOrFilename ~= path ifTrue:[
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   407
        GitError raiseErrorString: 'Off-repository working copies are not sypported (and likely never will be)'.
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   408
        ^nil
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   409
    ].
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   410
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   411
    ^GitWorkingCopy new setRepository: self
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   412
621143a76ec5 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 26
diff changeset
   413
    "Created: / 19-09-2012 / 09:48:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   414
! !
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   415
26
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   416
!GitRepository methodsFor:'queries'!
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   417
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   418
hasOffRepoWorkdir
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   419
    ^self workdir ~= self path
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   420
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   421
    "Created: / 03-10-2012 / 16:08:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   422
! !
7ce8b2978128 - GitTests
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 25
diff changeset
   423
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   424
!GitRepository methodsFor:'testing'!
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   425
16
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   426
headIsDetached
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   427
    ^(GitPrimitives prim_git_repository_head_detached: handle) == 1
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   428
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   429
    "Created: / 25-09-2012 / 11:06:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   430
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   431
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   432
headIsOrphan
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   433
    ^(GitPrimitives prim_git_repository_head_orphan: handle) == 1
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   434
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   435
    "Created: / 25-09-2012 / 11:06:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   436
!
83e178bfe891 - GitCommitterQuery
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 15
diff changeset
   437
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   438
isBare
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   439
    "Check if a repository is bare"
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   440
9
2783c9882d30 - GitSubmoduleUpdateType
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 8
diff changeset
   441
    ^(GitPrimitives prim_git_repository_is_bare: handle) == 1
4
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   442
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   443
    "Created: / 10-09-2012 / 19:11:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   444
!
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   445
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   446
isEmpty
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   447
    "An empty repository has just been initialized and contains
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   448
     no commits."
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   449
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   450
    ^(GitPrimitives prim_git_repository_is_empty: self) == 1
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   451
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   452
    "Created: / 10-09-2012 / 19:12:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   453
! !
b52b9cfe9b77 - GitObject
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 3
diff changeset
   454
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   455
!GitRepository class methodsFor:'documentation'!
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   456
31
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
   457
version_GIT
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
   458
    "Never, ever change this method. Ask JV or CG why"
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
   459
    ^thisContext method mclass theNonMetaclass instVarNamed: #revision
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
   460
!
d96d7eff6efc - GitDiffDeltaStructure
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents: 29
diff changeset
   461
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   462
version_SVN
481
0cfef855baa2 Initial import from upstream repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   463
    ^ '$Id$'
0
71c763bbb4bc - GitConfig
vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
parents:
diff changeset
   464
! !