2011-11-23 231 views
35

我主要是Java EE開發人員。我被要求探索在即將到來的Web項目中使用Smalltalk/Seaside的可能性。正如你可以想象的那樣,這導致了許多有趣的問題。Smalltalk/Seaside的版本控制?

一個開發團隊如何使用Smalltalk/Seaside實現軟件版本控制和修訂控制。你可以使用Subversion或Git嗎?

據我所知,Smalltalk使用圖像而不是將每個類保存到它自己的文件中。這會如何影響管理源代碼版本的能力,尤其是在整個團隊中?

非常感謝您提供的任何見解!

回答

39

設置爲Pharo(和Gemstone

每個開發人員的工作在他自己的形象。每次對他所做的方法所做的更改都會保存在更改文件中。這允許在圖像崩潰時恢復。通過創建monticello文件來完成提交,該文件具有包名稱,序列號和開發人員的姓名。它知道它的祖先。該文件被保存到WebDAV服務器。在這裏它被Jenkins task拾起。這將運行單元和集成測試並創建新圖像,因此開發人員可以每天從新圖像(至少)開始。以下是使用monticello的merging的一些細節。產品組成(包裝結構)是包含metacello說明的另一個monticello文件。這也允許在Pharo上開發並部署在寶石上。偶爾需要添加班級遷移。

對於非Smalltalk的依賴關係和開發,測試驗收和生產差異,添加使用vagrantchef-solo(或puppet,希望很快Coral)的virtualbox圖像,veewee的創建。他們當然使用git進行版本管理。

除了使用靜態代碼質量控制工具(smallLint,還檢查的Smalltalk方言之間的差異),加入Moose並創建自己的上下文相關,該項目(humane assessment)

的動態可視化在VisualWorks Smalltalk的本地開發商使用STORE和關係數據庫(例如PostgreSQL)存儲本地提交。代碼以捆綁包的形式進行組織,包含名稱空間。複製腳本用於將本地版本複製到中央數據庫或從中央數據庫複製。從那裏,流量與Pharo設置相同。

[更新]在Esug2012上,Dale Henrichs提出了使用git和github管理多種方言的小代碼的工作。基本上,定義了文件結構(用於VisualWorks的Amber,Gemstone,Pharo,Squeak,VisualAge,STIGCypress)以將smalltalk方法存儲在目錄中。目前這更多地是針對方言之間的代碼交換,而不是替代原生SCM。

5

Smalltalk有自己的打包/版本控制系統,其中源代碼包受控制,拆分,合併等。您打算使用哪種Smalltalk方言? Pharo有Monticello和Metacello,Squeak有Monticello,VisualWorks有STORE。

0

VA SmalltalkEnvy

你選擇哪個Smalltalk,我想你會非常喜歡Seaside。

+0

請[不要使用簽名](http://stackoverflow.com/faq#signatures);正如常見問題解答所述,您的信息已經在右側的用戶卡中提供。另外,不要以爲每個人都知道Envy是什麼 - 看起來這個開發者沒有!我建議編輯解決這些問題。 –

+0

「掌握ENVY /開發者」作者:Joseph Pelrine,Alan Knight,Adrian Cho。 http://books.google.com/books?id=ld6E19QIMo4C – igouy

11

簡短的回答:你不能(現在)使用Git或Subversion。

甚至更​​短的回答:你不需要它:)

大答案:參見菲羅它自身是如何創建的:)) 當然,如果你使用基於文件系統的斯蒂芬解釋,這初學者會感到奇怪,但一旦開始工作,您將意識到您擁有所需的版本控制所需的所有工具(monticello - 這是替代Git/Subversion),並且用於創建複雜的安裝(metacello - 這是替換maven等東西)。通過一些工作(與任何平臺一樣,你可以選擇),你可以設置自己的持續集成服務器(jenkins或hudson或其他),很快你就可以像其他環境一樣工作,但有一個很大的好處:你將開發Seaside/Smalltalk:P

5

在Smalltalk中的開發通常更高效 - 但您必須首先了解新工具:用於打包的Monticello/Metacello(將它想像爲將包保存在自己的ZIP文件中,使用mcz擴展名和每次提交時的版本號)。 Metacello提供Monticello軟件包合適的信息,並且應該加載以提供完整的工作應用程序(類似於Maven中的POM,但是在特定的類文件ConfigurationOfXXX中,其中XXX是組件名稱)。 除非你想管理像圖片或數據庫腳本這樣的外部資源,否則你不需要像Subversion這樣的非Smalltalk版本控制工具。

也看看哈德遜/詹金集成,因爲這也將幫助您自動化圖像建設和持續集成。

7

有一些Svn/Git的工具,但恕我直言,這是更好的去與這裏的流和使用蒙蒂塞洛,因爲蒙蒂塞洛給你一個非常類似的經驗,因爲git,但更簡單的使用和更多的集成「Smalltalk方式」。

你沒有指定哪個Smalltalk,但是如果你打算使用Pharo,那肯定是Monticello(當事情變得複雜的時候--Metacello在上面)來使用。

2

您也可能參與Amber