SVN__UpdateTask.st
author fm
Tue, 29 Sep 2009 17:20:24 +0200
changeset 207 1f90147b8b31
parent 77 b27f361cc834
child 261 75c53415380b
permissions -rw-r--r--
changed: #version_SVN
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
77
b27f361cc834 initial checkin
fm
parents:
diff changeset
     1
"{ Package: 'cvut:stx/goodies/libsvn' }"
b27f361cc834 initial checkin
fm
parents:
diff changeset
     2
b27f361cc834 initial checkin
fm
parents:
diff changeset
     3
"{ NameSpace: SVN }"
b27f361cc834 initial checkin
fm
parents:
diff changeset
     4
b27f361cc834 initial checkin
fm
parents:
diff changeset
     5
FileoutLikeTask subclass:#UpdateTask
b27f361cc834 initial checkin
fm
parents:
diff changeset
     6
	instanceVariableNames:'revision notifications updates conflicts resolution'
b27f361cc834 initial checkin
fm
parents:
diff changeset
     7
	classVariableNames:''
b27f361cc834 initial checkin
fm
parents:
diff changeset
     8
	poolDictionaries:''
b27f361cc834 initial checkin
fm
parents:
diff changeset
     9
	category:'SVN-Tasks'
b27f361cc834 initial checkin
fm
parents:
diff changeset
    10
!
b27f361cc834 initial checkin
fm
parents:
diff changeset
    11
b27f361cc834 initial checkin
fm
parents:
diff changeset
    12
b27f361cc834 initial checkin
fm
parents:
diff changeset
    13
!UpdateTask methodsFor:'accessing'!
b27f361cc834 initial checkin
fm
parents:
diff changeset
    14
b27f361cc834 initial checkin
fm
parents:
diff changeset
    15
revision
b27f361cc834 initial checkin
fm
parents:
diff changeset
    16
    ^ revision
b27f361cc834 initial checkin
fm
parents:
diff changeset
    17
b27f361cc834 initial checkin
fm
parents:
diff changeset
    18
    "Modified: / 09-04-2009 / 09:39:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    19
!
b27f361cc834 initial checkin
fm
parents:
diff changeset
    20
b27f361cc834 initial checkin
fm
parents:
diff changeset
    21
revision:aRevision
b27f361cc834 initial checkin
fm
parents:
diff changeset
    22
    revision := aRevision.
b27f361cc834 initial checkin
fm
parents:
diff changeset
    23
    loadChangeSet := mergeDiffSet := updateChangeSet := nil.
b27f361cc834 initial checkin
fm
parents:
diff changeset
    24
b27f361cc834 initial checkin
fm
parents:
diff changeset
    25
    "Modified: / 23-03-2009 / 18:40:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    26
! !
b27f361cc834 initial checkin
fm
parents:
diff changeset
    27
b27f361cc834 initial checkin
fm
parents:
diff changeset
    28
!UpdateTask methodsFor:'executing'!
b27f361cc834 initial checkin
fm
parents:
diff changeset
    29
b27f361cc834 initial checkin
fm
parents:
diff changeset
    30
do
b27f361cc834 initial checkin
fm
parents:
diff changeset
    31
    "
b27f361cc834 initial checkin
fm
parents:
diff changeset
    32
     Perform whole task"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    33
    
b27f361cc834 initial checkin
fm
parents:
diff changeset
    34
    self assert: revision notNil message: 'No revision specified'.
b27f361cc834 initial checkin
fm
parents:
diff changeset
    35
    self doUpdateWorkingCopy doApplyMergedChangeSet
b27f361cc834 initial checkin
fm
parents:
diff changeset
    36
b27f361cc834 initial checkin
fm
parents:
diff changeset
    37
    "Modified: / 09-04-2009 / 09:40:28 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    38
!
b27f361cc834 initial checkin
fm
parents:
diff changeset
    39
b27f361cc834 initial checkin
fm
parents:
diff changeset
    40
doApplyResolutions
b27f361cc834 initial checkin
fm
parents:
diff changeset
    41
    self do: 
b27f361cc834 initial checkin
fm
parents:
diff changeset
    42
        [resolution isNilOrEmptyCollection ifFalse:
b27f361cc834 initial checkin
fm
parents:
diff changeset
    43
            [(Class updateChangeFileQuerySignal , Class updateChangeListQuerySignal)
b27f361cc834 initial checkin
fm
parents:
diff changeset
    44
                answer: false
b27f361cc834 initial checkin
fm
parents:
diff changeset
    45
                do: 
b27f361cc834 initial checkin
fm
parents:
diff changeset
    46
                    [resolution withIndexDo: 
b27f361cc834 initial checkin
fm
parents:
diff changeset
    47
                        [:change :index | 
b27f361cc834 initial checkin
fm
parents:
diff changeset
    48
                        change apply.
b27f361cc834 initial checkin
fm
parents:
diff changeset
    49
                        SVN::ProgressNotification 
b27f361cc834 initial checkin
fm
parents:
diff changeset
    50
                            notify: 'Applying changes'
b27f361cc834 initial checkin
fm
parents:
diff changeset
    51
                            progress: (100 / resolution size) * index ] ] ].
b27f361cc834 initial checkin
fm
parents:
diff changeset
    52
        self doCompileSvnRevisionNrMethod: true]
b27f361cc834 initial checkin
fm
parents:
diff changeset
    53
b27f361cc834 initial checkin
fm
parents:
diff changeset
    54
    "Created: / 23-03-2009 / 18:36:32 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    55
    "Modified: / 17-08-2009 / 19:39:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    56
!
b27f361cc834 initial checkin
fm
parents:
diff changeset
    57
b27f361cc834 initial checkin
fm
parents:
diff changeset
    58
doUpdateWorkingCopy
b27f361cc834 initial checkin
fm
parents:
diff changeset
    59
    self do: 
b27f361cc834 initial checkin
fm
parents:
diff changeset
    60
            [ self workingCopy ensureIsValid.
b27f361cc834 initial checkin
fm
parents:
diff changeset
    61
            self
b27f361cc834 initial checkin
fm
parents:
diff changeset
    62
                doRevert;
b27f361cc834 initial checkin
fm
parents:
diff changeset
    63
                doFileOutAll;
b27f361cc834 initial checkin
fm
parents:
diff changeset
    64
                doUpdate;
b27f361cc834 initial checkin
fm
parents:
diff changeset
    65
                doLoadChanges ]
b27f361cc834 initial checkin
fm
parents:
diff changeset
    66
b27f361cc834 initial checkin
fm
parents:
diff changeset
    67
    "Created: / 23-03-2009 / 18:35:06 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    68
    "Modified: / 17-08-2009 / 19:01:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    69
! !
b27f361cc834 initial checkin
fm
parents:
diff changeset
    70
b27f361cc834 initial checkin
fm
parents:
diff changeset
    71
!UpdateTask methodsFor:'executing - private'!
b27f361cc834 initial checkin
fm
parents:
diff changeset
    72
b27f361cc834 initial checkin
fm
parents:
diff changeset
    73
doLoadChanges
b27f361cc834 initial checkin
fm
parents:
diff changeset
    74
    updates := ChangeSet new.
b27f361cc834 initial checkin
fm
parents:
diff changeset
    75
    conflicts := ChangeSet::DiffSet new.
b27f361cc834 initial checkin
fm
parents:
diff changeset
    76
    notifications do: [:each | self doLoadChangesFor: each ].
b27f361cc834 initial checkin
fm
parents:
diff changeset
    77
b27f361cc834 initial checkin
fm
parents:
diff changeset
    78
    "Modified: / 18-08-2009 / 08:59:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    79
!
b27f361cc834 initial checkin
fm
parents:
diff changeset
    80
b27f361cc834 initial checkin
fm
parents:
diff changeset
    81
doLoadChangesFor: aWCActionNotify
b27f361cc834 initial checkin
fm
parents:
diff changeset
    82
b27f361cc834 initial checkin
fm
parents:
diff changeset
    83
    "We should process only notifications for source 
b27f361cc834 initial checkin
fm
parents:
diff changeset
    84
     and/or conflicted entries"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    85
b27f361cc834 initial checkin
fm
parents:
diff changeset
    86
    (aWCActionNotify action isConflict or:
b27f361cc834 initial checkin
fm
parents:
diff changeset
    87
        [aWCActionNotify entry isSourceFileEntry])
b27f361cc834 initial checkin
fm
parents:
diff changeset
    88
            ifTrue:[aWCActionNotify processUsing: self]
b27f361cc834 initial checkin
fm
parents:
diff changeset
    89
b27f361cc834 initial checkin
fm
parents:
diff changeset
    90
    "Created: / 18-08-2009 / 08:59:10 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    91
    "Modified: / 27-08-2009 / 08:57:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
    92
!
b27f361cc834 initial checkin
fm
parents:
diff changeset
    93
b27f361cc834 initial checkin
fm
parents:
diff changeset
    94
doRevert
b27f361cc834 initial checkin
fm
parents:
diff changeset
    95
    SVN::ActivityNotification notify: 'Reverting local changes'.
b27f361cc834 initial checkin
fm
parents:
diff changeset
    96
    (RevertCommand new)
b27f361cc834 initial checkin
fm
parents:
diff changeset
    97
        workingCopy: self workingCopy path;
b27f361cc834 initial checkin
fm
parents:
diff changeset
    98
        paths: (ProgrammingLanguage 
b27f361cc834 initial checkin
fm
parents:
diff changeset
    99
                    allCollect: [:lang | '*.' , lang sourceFileSuffix ]);
b27f361cc834 initial checkin
fm
parents:
diff changeset
   100
        execute.
b27f361cc834 initial checkin
fm
parents:
diff changeset
   101
!
b27f361cc834 initial checkin
fm
parents:
diff changeset
   102
b27f361cc834 initial checkin
fm
parents:
diff changeset
   103
doUpdate
b27f361cc834 initial checkin
fm
parents:
diff changeset
   104
    SVN::ActivityNotification 
b27f361cc834 initial checkin
fm
parents:
diff changeset
   105
        notify: 'Updating working copy to revision ' , self revision printString.
b27f361cc834 initial checkin
fm
parents:
diff changeset
   106
    notifications := (UpdateCommand new)
b27f361cc834 initial checkin
fm
parents:
diff changeset
   107
        workingCopy: self workingCopy;
b27f361cc834 initial checkin
fm
parents:
diff changeset
   108
        revision: self revision;
b27f361cc834 initial checkin
fm
parents:
diff changeset
   109
        execute
b27f361cc834 initial checkin
fm
parents:
diff changeset
   110
b27f361cc834 initial checkin
fm
parents:
diff changeset
   111
    "Modified: / 19-08-2009 / 12:22:49 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
   112
! !
b27f361cc834 initial checkin
fm
parents:
diff changeset
   113
b27f361cc834 initial checkin
fm
parents:
diff changeset
   114
!UpdateTask methodsFor:'private'!
b27f361cc834 initial checkin
fm
parents:
diff changeset
   115
b27f361cc834 initial checkin
fm
parents:
diff changeset
   116
filterChangeSet: aChangeSet 
b27f361cc834 initial checkin
fm
parents:
diff changeset
   117
    "
b27f361cc834 initial checkin
fm
parents:
diff changeset
   118
        Removes changes for methods that are not interesting
b27f361cc834 initial checkin
fm
parents:
diff changeset
   119
        (such as version methods & autogenerated package description
b27f361cc834 initial checkin
fm
parents:
diff changeset
   120
        methods)"
b27f361cc834 initial checkin
fm
parents:
diff changeset
   121
    
b27f361cc834 initial checkin
fm
parents:
diff changeset
   122
    | changesToRemove |
b27f361cc834 initial checkin
fm
parents:
diff changeset
   123
b27f361cc834 initial checkin
fm
parents:
diff changeset
   124
    changesToRemove := aChangeSet 
b27f361cc834 initial checkin
fm
parents:
diff changeset
   125
                select: [:change | change isForGeneratedSubject ].
b27f361cc834 initial checkin
fm
parents:
diff changeset
   126
    aChangeSet removeAll: changesToRemove.
b27f361cc834 initial checkin
fm
parents:
diff changeset
   127
    ^ aChangeSet
b27f361cc834 initial checkin
fm
parents:
diff changeset
   128
b27f361cc834 initial checkin
fm
parents:
diff changeset
   129
    "Created: / 08-04-2009 / 09:53:49 / Jan Vrany <vranyj1@fel.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
   130
! !
b27f361cc834 initial checkin
fm
parents:
diff changeset
   131
b27f361cc834 initial checkin
fm
parents:
diff changeset
   132
!UpdateTask methodsFor:'processing - private'!
b27f361cc834 initial checkin
fm
parents:
diff changeset
   133
b27f361cc834 initial checkin
fm
parents:
diff changeset
   134
processAddedEntry: entry
b27f361cc834 initial checkin
fm
parents:
diff changeset
   135
b27f361cc834 initial checkin
fm
parents:
diff changeset
   136
    entry sourceLanguage isSmalltalk 
b27f361cc834 initial checkin
fm
parents:
diff changeset
   137
        ifTrue:
b27f361cc834 initial checkin
fm
parents:
diff changeset
   138
            [updates addAll:
b27f361cc834 initial checkin
fm
parents:
diff changeset
   139
                (ChangeSet fromStream: entry readStream) ]
b27f361cc834 initial checkin
fm
parents:
diff changeset
   140
        ifFalse:
b27f361cc834 initial checkin
fm
parents:
diff changeset
   141
            [self error:'Non smalltalk source not yet supported']
b27f361cc834 initial checkin
fm
parents:
diff changeset
   142
b27f361cc834 initial checkin
fm
parents:
diff changeset
   143
    "Created: / 27-08-2009 / 08:54:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
   144
    "Modified: / 27-08-2009 / 10:37:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
   145
!
b27f361cc834 initial checkin
fm
parents:
diff changeset
   146
b27f361cc834 initial checkin
fm
parents:
diff changeset
   147
processDeletedEntry: entry
b27f361cc834 initial checkin
fm
parents:
diff changeset
   148
b27f361cc834 initial checkin
fm
parents:
diff changeset
   149
    entry sourceLanguage isSmalltalk ifTrue:
b27f361cc834 initial checkin
fm
parents:
diff changeset
   150
        [entry path = 'extensions.st' ifTrue:[self halt"not yet finished"].
b27f361cc834 initial checkin
fm
parents:
diff changeset
   151
        self halt.]
b27f361cc834 initial checkin
fm
parents:
diff changeset
   152
b27f361cc834 initial checkin
fm
parents:
diff changeset
   153
    "Created: / 27-08-2009 / 09:56:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b27f361cc834 initial checkin
fm
parents:
diff changeset
   154
! !
b27f361cc834 initial checkin
fm
parents:
diff changeset
   155
b27f361cc834 initial checkin
fm
parents:
diff changeset
   156
!UpdateTask class methodsFor:'documentation'!
b27f361cc834 initial checkin
fm
parents:
diff changeset
   157
b27f361cc834 initial checkin
fm
parents:
diff changeset
   158
version
b27f361cc834 initial checkin
fm
parents:
diff changeset
   159
    ^ '$Header$'
207
1f90147b8b31 changed: #version_SVN
fm
parents: 77
diff changeset
   160
!
1f90147b8b31 changed: #version_SVN
fm
parents: 77
diff changeset
   161
1f90147b8b31 changed: #version_SVN
fm
parents: 77
diff changeset
   162
version_CVS
1f90147b8b31 changed: #version_SVN
fm
parents: 77
diff changeset
   163
    ^ '$Header$'
1f90147b8b31 changed: #version_SVN
fm
parents: 77
diff changeset
   164
!
1f90147b8b31 changed: #version_SVN
fm
parents: 77
diff changeset
   165
1f90147b8b31 changed: #version_SVN
fm
parents: 77
diff changeset
   166
version_SVN
1f90147b8b31 changed: #version_SVN
fm
parents: 77
diff changeset
   167
    ^'Id: SVN__UpdateTask.st 113 2009-08-28 11:43:01Z vranyj1 '
77
b27f361cc834 initial checkin
fm
parents:
diff changeset
   168
! !