Pharo gitFileTree:如何阻止提交(仅限阶段)

时间:2017-04-29 11:43:03

标签: git smalltalk pharo

如何配置gitFileTree / Monticello不提交项目保存?

我在本地git repo中有一些out-of-tree文件(自动生成的源) 而我想手动提交

  • 第一阶段Smalltalk系统中的所有更改,然后
  • 暂存所有外部文件和
  • 立即提交所有更改

2 个答案:

答案 0 :(得分:1)

假设您要将名为Somewhere的程序包“导出”到名为breaking-mcz的GitFileTree存储库。

"get the package"
package := 'Somewhere' asPackage.

"find the repo"
repo := MCRepositoryGroup default repositories detect: [ :each | (each isKindOf: MCFileTreeGitRepository) and: [ each location includesSubstring: 'breaking-mcz' ] ].

"working copy is the current in-image state"
workingCopy := package mcWorkingCopy.

"this will create an in-memory only version; the message doesn't matter"
pseudoVersion := workingCopy newVersionWithMessage: 'Message will not be used' in: repo.

"this will file-out the current state to disk, and `git add` it to git index (no commit)"
repo internalStoreVersion: pseudoVersion.

注1:请记住,GitFileTree的工作方式是清除磁盘上的旧代码并再次转储所有内容,因此如果您已经在代码中进行了一些未提交的修改(在磁盘),你应该先git stash

注意2:我假设您使用的是无元数据的GitFileTree(一年左右的默认值),否则我不确定历史/祖先会发生什么

注3:这不是典型的用例,因此没有GUI,但我们可以在Iceberg处考虑

答案 1 :(得分:1)

你可以简单地添加一个filetree存储库,它只是将软件包存储到磁盘而不进行任何git版本控制。然后你手动提交。这实际上曾经是GitFileTree之前的工作流程。