2012-01-25 66 views
2

我已經通過了git相關問題,並且我還沒有做出決定。使用git進行多個擴展開發的正確策略

我有很多擴展,我已經開發,我想從svn移動到git,以便能夠使用更好的分支和組織。

我爲Magento開發擴展,其中擴展的部分不在1文件夾下,但分散在文件夾結構中。

我的擴展在以下文件夾中的文件:

  • /應用/代碼/社區/ myNameSpace對象
  • /應用程序/設計/前端/基/默認/佈局/ myNameSpace對象
  • /應用/設計/前端/鹼/默認/模板/ myNameSpace對象
  • /應用的/ etc /模塊/皮膚/前端/鹼/默認/ CSS/myNameSpace對象
  • /皮膚/前端/鹼/默認/ JS/myNameSpace對象

這些文件夾也都包含來自其他擴展名的文件。

我希望能夠獨立開發和測試擴展。我知道我可以使用這個分支/變化或功能,這是偉大的。

儘管我希望能夠檢查出來/擴展名,這意味着只有那些屬於某個擴展名的文件被拉出。

我可以做以下嗎?

  • 將每個擴展名放到它自己的存儲庫中?
  • 將每個擴展插入到一個包含主要magento代碼的超級存儲庫中,以便可以使用子樹或子模塊來測試擴展嗎?

這種方法能工作嗎? 有沒有其他方法我不知道?

非常感謝。

編輯:

我應該創建一個空的回購,然後分支空回購到儘可能多的分支機構擴展。 然後我應該能夠將代碼合併回主,並在各個分支上進行開發。在這種情況下,將事件添加到主服務器後會發生什麼情況我需要爲新擴展添加一個新的空分支?我可以創建一個空的分支和分支嗎?這甚至有可能嗎?

感謝傢伙,我的事情我越來越接近一個很好的解決方案。

回答

0

。出於測試目的,在它自己的獨立文件夾中創建一個空白的安裝,您可以爲任何想要開發的Magento版本進行安裝。然後創建符號鏈接到你在這個適當的地方提到的5個文件夾。

對於測試開發創建一個項目,其中只包含該存儲庫的內容,但由於沒有主要源代碼的開發令人困惑,因此大多數IDE允許您包含來自其他文件夾的代碼,因此添加您所使用的任何版本的Magento開發測試,以便您可以輕鬆引用代碼庫。

現在你應該能夠在工作時進行測試,發佈模塊可以是一個簡單的git導出和壓縮內容的例子。然後,您可以像其他任何分佈式Magento模塊一樣使用簡單的zip文件,即不需要Magento核心文件。

我實際上剛開始使用基於phing的構建工具來簡化Magento Extension的開發(可以在https://github.com/pocallaghan/mephing找到它),但它處於早期階段,目前缺少任何文檔。

+0

感謝這一點,Phing看起來像ANT的語法。它看起來像是你想在這裏實現的一個好主意。 – Istvano

+0

Yer,phing是基於ANT語法構建的。在我們的辦公室,我們一直在考慮對某些工作採用持續集成周期,並決定爲此提供幫助。我一直在圍繞擴展的最佳開發週期玩耍一段時間,phing似乎是一套工具的有用基礎。 –

+0

太棒了,你會寫一個博客,或者我可以看到你的開發週期,特別是CI如何與它合作?我正在努力建立同樣的想法,並想知道你是否樂意分享你的想法。 – Istvano

1

如果每個擴展都獨立於另一個擴展,則可以將每個擴展維護在一個單獨的分支(而不是您建議的自己的存儲庫)中。

例如如果你開發了3個分機,你會在你的Git樹四個發展分支:

master 
extn1 
extn2 
extn3 

每次Magento的代碼修改,你把它變成主人,然後變基上的掌握最新的變化頂部的三個發展分支。

如果您想全部測試,只需創建一個新的測試分支並將master,extn1,extn2和extn3合併到它中。

+0

您好,感謝這個,這似乎是沒有子樹的併發症,一個很容易的解決方案。我可以只保留屬於分支中的擴展名的文件嗎?並仍然合併到主?由於我不想在每個分支中保留所有與magento相關的文件,這會起作用嗎? – Istvano

+0

如果您每次更改主設備時重新綁定,您將丟失開發歷史記錄,並且永遠無法再生成舊版本的代碼。這正是錯位的原因。在這種情況下,你應該合併,而不是重新組合。 –

+0

@Istvano git不會'浪費'任何空間,如果這是你所擔心的。你的分支將包含對主內通用代碼的引用(直到你修改它)。 – idlethread

0

答案非常簡單,我猜NomadCoder提出了很好的方法來解決這個問題。我的建議是讓開發部門和發佈部門幫助指導工作流程。而且合併分支很容易,這將有助於您的工作流程透明化。這裏的Git代碼列表你可以在你的情況下,如果你的模塊是完全相互無關的我會在自己的倉庫中創建它們放在手邊

Git Brushup

+0

感謝這是一個很棒的列表 – Istvano

0

是的,這可以做,也是我爲我的擴展開發所做的。我實現了這個問題的方法是使用下面的步驟:

  1. 創建每個擴展我開發
  2. 克隆1回購到我的Magento安裝回購
  3. 合併的克隆文件到Magento的,並把git的文件在我的Magento的根。我現在可以從這個擴展中拉/推
  4. 接下來,我將Magento .git%s的根目錄中的.git文件重命名,其中%s是表示擴展的2個字符的字符串。
  5. 接下來,將第二個擴展回購克隆到Magento中。
  6. 重複步驟3-6,直到所有分機都在Magento

在此之後,我在我的Magento的根目錄下面的git安裝文件:

  1. .gitwp
  2. .gitbp
  3. .gitwps
  4. 。gitas

現在,我可以同時處理所有項目。例如,如果,我想從WP項目推我的變化,我可以運行下面的命令:

mv .gitwp .git 
git push origin master 
mv .git .gitwp 

使用上述系統,我可以很容易地在所有我在同一個Magento的環境擴展的工作,同時保持單獨的版本庫。

我希望這有助於