"{ Package: 'stx:libsvn' }"!
!ChangeSet methodsFor:'queries'!
changesForPackage:aPackageSymbol
"
ChangeSet current changesForPackage:#'stx:goodies/libsvn'.
"
^(self select:[:aChange |
|removeThis mClass mthd|
removeThis := false.
(aChange isMethodChange or:[aChange isMethodRemoveChange]) ifTrue:[
mClass := aChange changeClass.
mClass notNil ifTrue:[
mthd := mClass compiledMethodAt:(aChange selector).
mthd isNil ifTrue:[
aChange isMethodRemoveChange ifTrue:[
removeThis := (mClass package = aPackageSymbol)
].
] ifFalse:[
removeThis := (mthd package = aPackageSymbol)
]
].
] ifFalse:[
(aChange isClassChange) ifTrue:[
(aChange changeClass notNil) ifTrue:[
removeThis := (aChange changeClass package = aPackageSymbol)
].
].
].
removeThis
])
"Created: / 05-11-2001 / 14:21:17 / cg"
"Modified: / 12-10-2006 / 16:51:27 / cg"
"Modified: / 22-10-2008 / 13:25:02 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!ChangeSet methodsFor:'utilities'!
condenseChanges
| changesToRemove changesToKeep |
changesToKeep := self class new.
changesToRemove := self class new.
self reverseDo:
[:change|
(changesToKeep anySatisfy:[:each|each isForSameAs: change])
ifTrue:[changesToRemove add: change]
ifFalse:[changesToKeep add: change]
].
self condenseChanges: changesToRemove.
"Created: / 22-10-2008 / 13:05:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!ChangeSet methodsFor:'utilities'!
condenseChangesForPackage2:aPackageSymbol
"remove more changes for aPackageSymbol
This is invoked when a project is checked into the repository."
|changesToRemove|
changesToRemove := self select:[:aChange |
|removeThis mClass mthd|
removeThis := false.
(aChange isMethodChange or:[aChange isMethodRemoveChange]) ifTrue:[
mClass := aChange changeClass.
mClass notNil ifTrue:[
mthd := mClass compiledMethodAt:(aChange selector).
mthd isNil ifTrue:[
removeThis := (mClass package = aPackageSymbol)
] ifFalse:[
removeThis := (mthd package = aPackageSymbol)
]
].
] ifFalse:[
(aChange isClassChange) ifTrue:[
(aChange changeClass notNil) ifTrue:[
removeThis := (aChange changeClass package = aPackageSymbol)
].
].
].
removeThis
].
self condenseChanges:changesToRemove
"Modified: / 12-10-2006 / 16:51:27 / cg"
"Created: / 09-08-2009 / 14:29:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!ChangeSet methodsFor:'utilities'!
diffSetsAgainstImage
|imageChangeSet|
imageChangeSet := self class new.
self changedClasses do:
[:class|
(class isMetaclass or:[class isPrivate]) ifFalse:
[imageChangeSet addAll:
(self class fromStream: class source asString readStream)]].
^self diffSetsAgainst: imageChangeSet
"Created: / 04-12-2007 / 16:03:28 / janfrog"
! !
!ChangeSet class methodsFor:'instance creation'!
forPackage: package
^self forPackage: package ignoreAutoloaded: false.
"Created: / 20-05-2008 / 17:56:18 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 12-08-2009 / 14:23:15 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!ChangeSet class methodsFor:'instance creation'!
forPackage: package ignoreAutoloaded: ignoreAutoloaded
"build a changeSet for a given package"
|changeSet packageClasses packageExtensions|
packageClasses := ProjectDefinition searchForClassesWithProject: package.
packageExtensions := ProjectDefinition searchForExtensionsWithProject: package.
changeSet := self forExistingMethods: packageExtensions.
packageClasses do:
[:cls|
(ignoreAutoloaded not and:[cls isLoaded not])
ifTrue:[cls autoload].
cls isLoaded
ifTrue:
[changeSet addAll:
(self
forExistingClass:cls
withExtensions:false
extensionsOnly:false)]].
^changeSet
"Created: / 12-08-2009 / 14:22:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Class methodsFor:'fileOut'!
fileOutAsMethodIn: class selector: selector
^self fileOutAsMethodIn: class selector: selector category: 'sources'
"Created: / 08-04-2009 / 20:58:06 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Class methodsFor:'accessing'!
svnRepository
^SVN::RepositoryManager repositoryForPackage: self package
"Created: / 19-04-2008 / 18:24:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Filename methodsFor:'reading-directories'!
directoryContentsAsFilenamesMatching: patternOrCollectionOfThose
"
Same as directoryContentsAsFilenames, but returns only files
that matches given patterns. This uses String>>matches:
for pattern matching
"
|names|
names := self directoryContentsMatching: patternOrCollectionOfThose .
names isNil ifTrue:[^ nil].
^ names asOrderedCollection collect:[:entry | self construct:entry].
"
'/etc' asFilename
directoryContentsAsFilenamesMatching: 'pass*'
'/etc' asFilename
directoryContentsAsFilenamesMatching: #('pass*' 'nsswitch.conf')
"
"Created: / 03-06-2009 / 09:57:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Filename methodsFor:'reading-directories'!
directoryContentsMatching: patternOrCollectionOfThose
"
Same as directoryContants, but returns only files
that matches given patterns. This uses String>>matches:
for pattern matching
"
| names patterns |
patterns := patternOrCollectionOfThose isString
ifTrue: [Array with: patternOrCollectionOfThose]
ifFalse:[patternOrCollectionOfThose].
names := self directoryContents.
names ifNil:[^nil].
^names select:
[:e|patterns anySatisfy:[:pattern|e matches: pattern]]
"
'/etc' asFilename
directoryContentsMatching: 'pass*'
'/etc' asFilename
directoryContentsMatching: #('pass*' 'nsswitch.conf')
'/etc' asFilename
directoryContentsMatching: #('does-not-exists.txt')
"
"Created: / 03-06-2009 / 09:52:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Method methodsFor:'accessing'!
makeSourceFileAbsolute
"
Makes a source file reference absolute.
This is required by SVN, because svn working copy
is in package path, so it's existence may corrupt source
files.
"
| fileStream |
"check whether my source is in external file. If not, this is noop"
sourcePosition ifNil:[^nil].
"already absolute"
source asFilename isAbsolute ifTrue:[^self].
fileStream := self rawSourceStream.
fileStream isFileStream ifTrue:
[source := fileStream fileName asAbsoluteFilename pathName].
"
(Method compiledMethodAt:#mclass:)
makeSourceFileAbsolute
"
"Created: / 21-08-2009 / 17:24:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!MethodChange methodsFor:'queries'!
isForGeneratedSubject
"
Answers true iff subject of this method is somewhat
auto-generated by some tool - just like version methods
are.
"
^self isForMeta
and:[((self selector) == #version)
or:[self selector startsWith:'version_' ]
]
"Created: / 17-08-2009 / 18:56:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-class'!
classMenuSubversionCommit
| classesPerPackage |
classesPerPackage := Dictionary new.
self selectedClasses value do:
[:class|
(classesPerPackage at: class theNonMetaclass package ifAbsentPut:[Set new])
add: class theNonMetaclass].
classesPerPackage keysAndValuesDo:
[:package :classes| | repo |
repo := SVN::RepositoryManager repositoryForPackage:package.
SVN::CommitWizard new
task: (repo workingCopy commitTask
classes: classes;
extensionMethods: #()
yourself);
open]
"Modified: / 16-06-2009 / 21:05:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-class'!
classMenuSubversionCompareImageWithRevision
| cls branch revisionLog revision |
cls := self theSingleSelectedClass theNonMetaclass.
branch := cls theNonMetaclass svnRepository branch.
revisionLog := branch log: cls.
revision := SVN::RevisionSelectionDialog openOn: revisionLog.
self classMenuSubversionCompareImageWithRevision: revision
"Created: / 19-04-2008 / 18:38:15 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-class'!
classMenuSubversionCompareImageWithRevision: revision
| cls branch diffSet tool smalltalkDiffToolClass|
revision ifNil:[^self].
cls := self theSingleSelectedClass theNonMetaclass.
branch := cls theNonMetaclass svnRepository branch.
SVN::ProgressDialog
openOn:[diffSet := branch diffSetForClass: cls betweenImageAndRevision: revision]
title: 'Creating diffset for class ', cls fullName asText allItalic
subtitle:
('Package: ' , branch package asText allItalic ,
' Revision ' , revision asString).
smalltalkDiffToolClass := Smalltalk classNamed:#'Tools::SmalltalkDiffTool'.
tool := (smalltalkDiffToolClass notNil
and:[smalltalkDiffToolClass isLoaded])
ifTrue:[ smalltalkDiffToolClass ]
ifFalse:[ VersionDiffBrowser ].
tool
openOnDiffSet:diffSet
labelA: 'Image'
labelB: 'r',revision printString
title: 'Differences of ',cls fullName,' between image and revision ',revision printString.
"Created: / 19-04-2008 / 18:54:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 09-08-2009 / 14:14:37 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-class'!
classMenuSubversionCompareImageWithRevisionHead
self classMenuSubversionCompareImageWithRevision: SVN::Revision head
"Created: / 19-04-2008 / 18:56:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-class'!
classMenuSubversionUpdate
"automatically generated by UIEditor ..."
"*** the code below performs no action"
"*** (except for some feedback on the Transcript)"
"*** Please change as required and accept in the browser."
"*** (and replace this comment by something more useful ;-)"
"action to be added ..."
Transcript showCR:self class name, ': action for #classMenuSubversionUpdate ...'.
! !
!Tools::NewSystemBrowser methodsFor:'aspects-queries'!
hasSingleClassAndSubversionRepositoryExists
^ self hasSingleClassSelected
and:[self hasSubversionRepositoryFor: self theSingleSelectedClass package]
"Created: / 19-04-2008 / 17:40:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menus-dynamic'!
projectMenuSubversionBranches
<resource: #programMenu >
| menu repository |
menu := Menu new.
repository := self selectedProjectSubversionRepository.
repository branches do:
[:branch|
menu addItem:
(MenuItem new
label: branch name;
choiceValue: branch;
choice:(repository workingCopy branch);
enabled:(repository workingCopy branch) = branch;
yourself)
].
^menu
"Created: / 19-04-2008 / 11:06:15 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionBrowseWorkingCopy
self selectedProjects value do:
[:package|
| pkg repo |
pkg := self theSingleSelectedProject.
repo := (SVN::RepositoryManager repositoryForPackage: pkg) .
FileBrowserV2 openOn: repo workingCopy path]
"Created: / 09-04-2009 / 13:19:43 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionCommit
self selectedProjects value do:
[:package|
| repo |
repo := SVN::RepositoryManager repositoryForPackage:package.
SVN::CommitWizard new
task: repo workingCopy commitTask;
open]
"Created: / 01-04-2008 / 19:02:42 / janfrog"
"Modified: / 16-08-2009 / 19:17:15 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionCommitMode
^(PluggableAdaptor on: self theSingleSelectedProject)
getBlock:
[:prjHolder| | wc |
wc := SVN::RepositoryManager workingCopyForPackage: self theSingleSelectedProject value.
wc ifNotNil:[wc commitMode] ifNil:[nil]]
putBlock:
[:prjHolder :value| | wc |
wc := SVN::RepositoryManager workingCopyForPackage: self theSingleSelectedProject value.
wc ifNotNil:[wc commitMode:value]]
updateBlock:
[:prjHolder :aspect :value|true].
"Created: / 13-08-2009 / 15:05:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionCompareExtensionsInImageWithRevision
| pkg branch revisionLog revision |
pkg := self theSingleSelectedProject.
branch := (SVN::RepositoryManager repositoryForPackage: pkg) branch.
revisionLog := branch log:(branch repository containerNameForExtensions).
revision := SVN::RevisionSelectionDialog openOn: revisionLog.
self projectMenuSubversionCompareExtensionsInImageWithRevision: revision
"Created: / 19-04-2008 / 19:13:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionCompareExtensionsInImageWithRevision: revision
| pkg diffSet branch tool smalltalkDiffToolClass|
revision ifNil:[^self].
pkg := self theSingleSelectedProject.
branch := (SVN::RepositoryManager repositoryForPackage: pkg) branch.
SVN::ProgressDialog
openOn:[diffSet := branch diffSetForExtensionsBetweenImageAndRevision: revision.]
title: 'Creating diffset for extensions'
subtitle:
('Package: ' , branch package asText allItalic ,
' Revision ' , revision asString).
smalltalkDiffToolClass := Smalltalk classNamed:#'Tools::SmalltalkDiffTool'.
tool := (smalltalkDiffToolClass notNil
and:[smalltalkDiffToolClass isLoaded])
ifTrue:[ smalltalkDiffToolClass ]
ifFalse:[ VersionDiffBrowser ].
tool
openOnDiffSet:diffSet
labelA: 'Image'
labelB: 'r',revision printString
title: 'Differences of extensions for ',pkg,' between image and revision ',revision printString.
"Created: / 19-04-2008 / 19:13:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 09-08-2009 / 14:14:15 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionCompareImageWithRevision
| pkg branch revisionLog revision |
pkg := self theSingleSelectedProject.
branch := (SVN::RepositoryManager repositoryForPackage: pkg) branch.
revisionLog := branch log:'.'.
revision := SVN::RevisionSelectionDialog openOn: revisionLog.
self projectMenuSubversionCompareImageWithRevision: revision
"Created: / 20-05-2008 / 18:09:20 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionCompareImageWithRevision: revision
| pkg diffSet branch tool smalltalkDiffToolClass|
revision ifNil:[^self].
pkg := self theSingleSelectedProject.
branch := (SVN::RepositoryManager repositoryForPackage: pkg) branch.
SVN::ProgressDialog
openOn:[diffSet := branch diffSetBetweenImageAndRevision: revision]
title: 'Creating diffset'
subtitle:
('Package: ' , branch package asText allItalic ,
' Revision ' , revision asString).
smalltalkDiffToolClass := Smalltalk classNamed:#'Tools::SmalltalkDiffTool'.
tool := (smalltalkDiffToolClass notNil
and:[smalltalkDiffToolClass isLoaded])
ifTrue:[ smalltalkDiffToolClass ]
ifFalse:[ VersionDiffBrowser ].
tool
openOnDiffSet:diffSet
labelA: 'Image'
labelB: 'r',revision printString
title: 'Differences for ',pkg,' between image and revision ',revision printString.
"Created: / 20-05-2008 / 18:09:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 09-08-2009 / 14:14:10 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionCompareImageWithRevisionHEAD
self projectMenuSubversionCompareImageWithRevision: SVN::Revision head
"Created: / 20-05-2008 / 18:10:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionLoadRevision
^self projectMenuSubversionLoadRevision: nil
"Created: / 22-10-2008 / 11:49:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 09-04-2009 / 09:38:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionLoadRevision: aRevision
self selectedProjects value do:
[:package|
| pkg task |
pkg := self theSingleSelectedProject.
task := (SVN::RepositoryManager repositoryForPackage: pkg) updateTask.
task revision: aRevision.
SVN::UpdateWizard openOn: task]
"Created: / 09-04-2009 / 09:38:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionMergeImageWithRevision
| pkg branch revisionLog revision |
pkg := self theSingleSelectedProject.
branch := (SVN::RepositoryManager repositoryForPackage: pkg) branch.
revisionLog := branch log:'.'.
revision := SVN::RevisionSelectionDialog openOn: revisionLog.
self projectMenuSubversionMergeImageWithRevision: revision
"Created: / 20-05-2008 / 23:41:26 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionMergeImageWithRevision: revision
| pkg diffSet branch smalltalkMergeToolClass|
revision ifNil:[^self].
pkg := self theSingleSelectedProject.
branch := (SVN::RepositoryManager repositoryForPackage: pkg) branch.
SVN::ProgressDialog
openOn:[diffSet := branch diffSetBetweenImageAndRevision: revision]
title: 'Creating diffset'
subtitle:
('Package: ' , branch package asText allItalic ,
' Revision ' , revision asString).
smalltalkMergeToolClass := Smalltalk classNamed:#'Tools::SmalltalkMergeTool'.
(smalltalkMergeToolClass notNil
and:[smalltalkMergeToolClass isLoaded]) not ifTrue:[
Dialog warn: 'Merge is not possible. Tools::SmalltalkMergeTool class is not present'.
^ self.
].
smalltalkMergeToolClass
openOnDiffSet:diffSet
labelA: 'Image'
labelB: 'r',revision printString
title: 'Merge ',pkg,' revision ',revision printString, ' into image'
"Created: / 20-05-2008 / 23:44:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 09-08-2009 / 14:15:28 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionMergeImageWithRevisionHEAD
self projectMenuSubversionMergeImageWithRevision: SVN::Revision head
"Created: / 20-05-2008 / 23:44:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionRemoveWorkingCopy
self selectedProjects value do:
[:package|
| pkg repo |
pkg := self theSingleSelectedProject.
repo := (SVN::RepositoryManager repositoryForPackage: pkg) .
repo workingCopy path asFilename recursiveRemove]
"Created: / 09-04-2009 / 13:19:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionShowRevisionLog
| pkg branch revisionLog revision |
pkg := self theSingleSelectedProject.
branch := (SVN::RepositoryManager repositoryForPackage: pkg) branch.
revisionLog := branch log:'.'.
revision := SVN::RevisionLogBrowser openOn: revisionLog.
"Created: / 21-05-2008 / 09:37:51 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 21-10-2008 / 19:52:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'menu actions-subversion-project'!
projectMenuSubversionUpdate
^self projectMenuSubversionLoadRevision: SVN::Revision head
"Created: / 22-10-2008 / 11:49:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 09-04-2009 / 09:38:34 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser methodsFor:'private-helpers'!
selectedProjectSubversionRepository
self selectedProjects value size ~= 1 ifTrue:[^nil].
^SVN::RepositoryManager repositoryForPackage: self selectedProjects value anyOne.
"Created: / 19-04-2008 / 11:09:02 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!Tools::NewSystemBrowser class methodsFor:'menu specs-subversion'!
classMenuSubversion
"This resource specification was automatically generated
by the MenuEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the MenuEditor may not be able to read the specification."
"
MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classMenuSubversion
(Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSubversion)) startUp
"
<resource: #menu>
^
#(Menu
(
(MenuItem
label: 'Commit'
itemValue: classMenuSubversionCommit
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' commit 'Commit')
)
(MenuItem
enabled: false
label: 'Update'
itemValue: classMenuSubversionUpdate
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' update 'Update')
)
(MenuItem
label: '-'
)
(MenuItem
label: 'Compare with revision HEAD'
itemValue: classMenuSubversionCompareImageWithRevisionHead
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' compare 'Compare with revision HEAD')
)
(MenuItem
label: 'Compare with revision'
itemValue: classMenuSubversionCompareImageWithRevision
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' compare 'Compare with revision')
)
)
nil
nil
)
! !
!Tools::NewSystemBrowser class methodsFor:'menu specs-subversion'!
projectMenuSubversion
"This resource specification was automatically generated
by the MenuEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the MenuEditor may not be able to read the specification."
"
MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#projectMenuSubversion
(Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenuSubversion)) startUp
"
<resource: #menu>
^
#(Menu
(
(MenuItem
enabled: false
label: 'Branch'
translateLabel: true
submenuChannel: projectMenuSubversionBranches
labelImage: (ResourceRetriever #'SVN::IconLibrary' checkout 'Branch')
keepLinkedMenu: true
)
(MenuItem
label: 'Commit'
itemValue: projectMenuSubversionCommit
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' commit 'Commit')
)
(MenuItem
label: 'Update'
itemValue: projectMenuSubversionUpdate
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' update 'Update')
)
(MenuItem
label: '-'
)
(MenuItem
label: 'Browse revision log'
itemValue: projectMenuSubversionShowRevisionLog
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' log 'Browse revision log')
)
(MenuItem
label: 'Browse working copy'
itemValue: projectMenuSubversionBrowseWorkingCopy
translateLabel: true
)
(MenuItem
label: '-'
)
(MenuItem
label: 'Compare with revision HEAD'
itemValue: projectMenuSubversionCompareImageWithRevisionHEAD
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' compare 'Compare with revision HEAD')
)
(MenuItem
label: 'Compare with revision'
itemValue: projectMenuSubversionCompareImageWithRevision
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' compare 'Compare with revision')
)
(MenuItem
label: '-'
)
(MenuItem
label: 'Merge with revision HEAD'
itemValue: projectMenuSubversionMergeImageWithRevisionHEAD
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' merge 'Merge with revision HEAD')
)
(MenuItem
label: 'Merge with revision'
itemValue: projectMenuSubversionMergeImageWithRevision
translateLabel: true
labelImage: (ResourceRetriever #'SVN::IconLibrary' merge 'Merge with revision')
)
(MenuItem
label: '-'
)
(MenuItem
label: 'More'
translateLabel: true
submenu:
(Menu
(
(MenuItem
label: 'Load revision...'
itemValue: projectMenuSubversionLoadRevision
translateLabel: true
)
(MenuItem
label: '-'
)
(MenuItem
label: 'Remove working copy'
itemValue: projectMenuSubversionRemoveWorkingCopy
translateLabel: true
)
(MenuItem
label: '-'
)
(MenuItem
enabled: hasSingleProjectSelected
label: 'Fast commit'
translateLabel: true
choice: projectMenuSubversionCommitMode
choiceValue: fast
)
(MenuItem
enabled: hasSingleProjectSelected
label: 'Full commit'
translateLabel: true
choice: projectMenuSubversionCommitMode
choiceValue: full
)
)
nil
nil
)
)
)
nil
nil
)
! !
!URL methodsFor:'queries'!
isValidSvnRepositoryUrl
^#('file' 'http' 'https' 'svn' 'svn+ssh')
includes: self method
"Created: / 16-08-2009 / 16:39:38 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!UserPreferences methodsFor:'accessing-subversion'!
svnConfigurations
"subversion source control configurations"
^(self at:#'libsvn.configurations' ifAbsent:#())
collect:[:cfg|cfg decodeAsLiteralArray]
"Created: / 03-10-2008 / 11:14:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 19-08-2009 / 12:08:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!UserPreferences methodsFor:'accessing-subversion'!
svnConfigurations: aCollection
"subversion source control configurations"
(SVN::RepositoryManager notNil
and:[ SVN::RepositoryManager isLoaded ]) ifTrue:[
SVN::RepositoryManager allInstances do:[:e|
e configurations: aCollection
]
].
^ self
at: #'libsvn.configurations'
put: (aCollection asArray collect:[:cfg|cfg literalArrayEncoding])
"
UserPreferences current svnConfigurations: #()
"
"Created: / 03-10-2008 / 11:14:01 / Jan Vrany <vranyj1@fel.cvut.cz>"
"Modified: / 19-08-2009 / 12:09:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!UserPreferences methodsFor:'accessing-subversion'!
svnEnabled
"subversion source control is enabled"
^self at:#svnEnabled ifAbsent:[true]
"Created: / 03-10-2008 / 11:11:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!UserPreferences methodsFor:'accessing-subversion'!
svnEnabled: aBoolean
"subversion source control is enabled"
^self at:#svnEnabled put: aBoolean
"Created: / 03-10-2008 / 11:13:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!UserPreferences methodsFor:'accessing-subversion'!
svnVerbose
"verbose messages from subversion source control (if enabled)"
^self at:#svnVerbose ifAbsent: false
"Created: / 19-03-2009 / 14:00:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!UserPreferences methodsFor:'accessing-subversion'!
svnVerbose: aBoolean
"verbose messages from subversion source control (if enabled)"
^self at:#svnVerbose put: aBoolean
"Created: / 19-03-2009 / 13:59:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !
!XML::NodeSet methodsFor:'navigation'!
@ attributeName
"XPath like processing - if singleton set, answer an value of
atribute named attributeName, error otherwise.
This method is used in libsvn"
self size = 1 ifTrue:[^self first @ attributeName].
self error:'More than one element in node set'
! !
!stx_libsvn class methodsFor:'documentation'!
extensionsVersion_CVS
^ '$Header$'
! !