Fixed commit to freshly created repository.
"{ Package: 'stx:libscm/mercurial' }"
HGRepositoryObject subclass:#HGWorkingCopy
instanceVariableNames:'root'
classVariableNames:''
poolDictionaries:''
category:'SCM-Mercurial-Core'
!
!HGWorkingCopy methodsFor:'accessing'!
branch
"Return currently checked-out branch"
| name |
name := 'default'.
(root asFilename / '.hg' / 'branch') exists ifTrue:[
"File DOES contain trailing newline"
name := (root asFilename / '.hg' / 'branch') contents first.
].
^repository branchWithName: name.
"Created: / 27-11-2012 / 13:51:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
branch: aStringOrHGBranch
"Set branch for subsequent commits. Returns new branch as HGBranch"
| name |
name := aStringOrHGBranch asString.
self branch name = name ifTrue:[ ^ self ].
(root asFilename / '.hg' / 'branch') exists ifTrue:[
(root asFilename / '.hg' / 'branch')
copyTo: (root asFilename / '.hg' / 'undo.branch')
] ifFalse:[
"File DOES contain trailing newline"
(root asFilename / '.hg' / 'undo.branch') writingFileDo:[:s|
s nextPutLine: 'default'.
]
].
(root asFilename / '.hg' / 'branch') writingFileDo:[:s|
s nextPutLine: name.
].
"Return HGBranch here"
^ aStringOrHGBranch isString ifFalse:[
aStringOrHGBranch
] ifTrue:[
repository branchWithName: name createIfAbsent: true.
]
"Created: / 10-12-2012 / 03:04:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
changeset
"Return an HGChangeset representing the checked-out changeset
(revision) of the receiver"
| id dirstate |
dirstate := root asFilename / '.hg' / 'dirstate'.
dirstate exists ifFalse:[
"No changeset yet - fresh repository"
^ HGChangeset null
].
dirstate readingFileDo:[:s|
s binary.
id := HGChangesetId fromBytes: (s next: 20).
].
^repository changesetWithId: id.
"Created: / 13-11-2012 / 21:47:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 14-01-2013 / 13:37:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
heads
"Return heads of currently checked-out branch"
^self branch heads
"Created: / 27-11-2012 / 21:51:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
path
"Return a path to the root directory of the receiver as *Filename*.
Use #root to get the root working copy file"
^repository path
"Created: / 17-10-2012 / 13:53:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
pathName
"Return a path to the root directory of the receiver as *String*
Use #root to get the root working copy file"
^repository pathName
"Created: / 05-12-2012 / 19:25:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
repository
^repository
"Created: / 15-11-2012 / 09:48:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
root
^ root
! !
!HGWorkingCopy methodsFor:'actions'!
commit: message
"Commits all uncommited changes with given message"
^self commit: message files: nil
"Created: / 12-11-2012 / 22:35:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
commit:message files:files
"Commit given files with given message. If files
is nil, all tracked modified files are commited"
^ self commit:message files:files author: nil"means - default"
"Created: / 12-11-2012 / 22:36:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified (format): / 17-11-2012 / 01:01:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 07-12-2012 / 11:44:14 / jv"
!
commit:message files:files author: authorOrNil
"Commit given files with given message. If files
is nil, all tracked modified files are commited"
| author |
authorOrNil isNil ifTrue:[
author := HGAuthorQuery query.
author isNil ifTrue:[
author := repository config get: #(ui username) default: nil.
author isNil ifTrue:[
HGCommitError newException
parameter: { repository . message . files };
messageText: 'Commit author not specified!!';
raiseRequest
].
].
].
^ (HGCommand commit)
workingDirectory:root pathName;
message:message;
files:files;
author: author;
execute
"Created: / 07-12-2012 / 11:41:52 / jv"
"Modified: / 07-12-2012 / 15:45:38 / jv"
!
update
"Update the working copy to the latest rev in current branch"
^self update: self branch name
"Created: / 10-12-2012 / 11:25:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
update: revisionOrBranch
^HGCommand update
workingDirectory: self path;
revision: revisionOrBranch asString;
execute
"Created: / 21-11-2012 / 00:21:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopy methodsFor:'initialization'!
setRepository: aHGRepository
super setRepository: aHGRepository.
root :=HGWorkingCopyFile wc: self path: repository path.
"Created: / 19-09-2012 / 09:43:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 19-10-2012 / 15:44:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopy methodsFor:'inspecting'!
browse
"Opens a file browser on the working copy"
root browse
"Created: / 04-02-2012 / 17:14:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 15-11-2012 / 17:00:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopy methodsFor:'instance creation'!
/ aString
^root construct: aString
"Created: / 24-09-2012 / 13:49:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
construct: aString
^root construct: aString
"Created: / 24-09-2012 / 13:50:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopy class methodsFor:'documentation'!
version_HG
^ '$Changeset: <not expanded> $'
!
version_SVN
^ '§Id:: §'
! !