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