Asp.net

實時 Sitecore 網站的 Git 原始碼控制策略

  • May 17, 2011

首先,我為這個問題的規模深表歉意,因為我確信我提出的在實施方面是一個“大問題”,並且可能本身可能是三個或四個單獨的問題。我不會問我是否迫切需要幫助。

我被賦予了一項艱鉅的任務,即針對我們的線上工作修改我公司的風險管理程序。

由於我們不進行備份,也不保護我們的數據,我決定,就像參與專業程式的任何人都應該做的那樣,我們將通過原始碼控制來保護我們的工作。我目前在本地使用 Git 執行此操作,但其他人不使用原始碼控制,最終我們失去了原始碼控制提供的很多好處。我寧願我們有一個每個人都使用 Git 的系統,並讓它強制執行規則,即如果它不在原始碼控制中,它就不會保留。顯然,我們需要一個備份計劃,但作為開發人員,我認為首先要做的是在整理備份解決方案之前整理事物的編碼方面 - 顯然,任何關於此的建議也非常受歡迎.

我們執行一個帶有 SQL Server 2005 後端的 ASP.NET 網站,執行 Sitecore 作為我們選擇的 CMS。在一個理想的世界裡,我希望這個 CMS 站點的所有變化部分都處於原始碼控制之下,包括數據庫。

目前,我知道這不是最好的主意,我為 Sitecore 中內置的所有子佈局執行一個解決方案。這是在原始碼控制下,多虧了 Git,我能夠添加分支並推送新功能並輕鬆修復錯誤(使用 Git-flow 作為我的工作流解決方案)。不過,我對 Git 還是很陌生,所以除了送出、忽略某些文件等之外,我沒有管理任何過於復雜的事情。

最重要的是,我還想使用原始碼控制來獲取原始碼控制下的數據庫內容。據我了解,您可以將 Sitecore 內容項序列化為文件系統中的一棵巨大的樹(如果我沒記錯的話,保存為 .item 文件?)。如果這是理想的解決方案,我還想將這些添加到原始碼管理中,儘管我不知道它們將保存在文件系統的確切位置。我現在的文件系統是這樣的:

- Data      (Logs, indexes, etc - is this needed to be in source control?)
- Source    (Helper files, although occasionally modified)
- Website   (Containing all the files I edit, and other essential Sitecore stuff)

如前所述,我目前的儲存庫僅在我的系統上,它由一個解決方案文件夾組成,其中包含一堆 .ascx、.ascx.cs、.ascx.cs.designer 和一兩個奇怪的 .aspx 文件。上傳時,這往往會讓我的生活更輕鬆,就像使用

我想輸入的是對所有開發人員進行管理的理想方式。儘管使用了 DVCS,但我更願意將實時伺服器視為主記憶體儲庫,並讓所有其他開發人員從中推拉,以及相互推拉。我們將使用git-flow 工作流解決方案,因為它很好地符合我們的開發方式。顯然,我擔心的是正確設置它,而不會破壞沒有備份的伺服器上目前非常昂貴、高流量的站點。

關於將伺服器上的多少數據保留在儲存庫中的提示和建議、有關如何在 Sitecore 中處理序列化數據以及可能如何使用原始碼控製本身作為備份到單獨儲存庫的一種方式的指導,將受到歡迎. 這是我第一次必須為實時網站建構原始碼控制系統/工作流程,因此任何關於什麼對我來說最好的事情的指導和建議將不勝感激。


編輯:我將對此給予獎勵,以嘗試獲得更多關於人們如何使用 Git 處理 Sitecore 的指南。

為了澄清我自己,我不是在尋找一種方法來備份我的工作,而是一種讓許多開發人員可以工作並確保網站上的程式碼與中央儲存庫保持最新的方法。例如,我之前提到過我將使用 git-flow 來管理我的工作流程。原始儲存庫將存在於共享伺服器上(最終可能會成為測試環境),並且所有開發人員都將擁有該伺服器的複製以進行工作和推送。從這裡開始,我希望能夠將更改從共享驅動器上的原始儲存庫推送到實時伺服器,然後在發現錯誤時再次返回。我還想在我的倉庫中包含序列化的內容項。

修改問題後的修改答案:

好的,當我們從您那裡獲得更多背景資訊時,讓我現在擴展我最初的想法。由於您說您只有一次 Sitecore 許可證,並且不能擁有單獨的測試伺服器等,我們總是可以稍微修改一下,仍然可以達到相同的效果。

如果您在執行實時 Sitecore 的同一台伺服器上有多個儲存庫會怎樣?如果您可以將 Sitecore 設置為在同一文件系統上使用不同的根/儲存庫,例如,您將 url 更改為http://yoursite.com/blahblah/test以在測試模式下執行 Sitecore。這當然取決於您擁有什麼樣的許可證,即它是否綁定到特定的機器。無論如何,這樣您就可以在將內容合併到 master 並讓它上線之前,在另一個分支(例如,測試儲存庫中的開發分支)上測試您的站點。

因此,您可以在伺服器上擁有一個裸儲存庫,每個人都可以從中進行推送和拉取。並且您可以在同一台伺服器上擁有兩個額外的非裸儲存庫,一個簽出主分支,另一個簽出開發分支。如果您想在 Sitecore 站點的測試版本上測試新功能,通過 ssh 登錄,您可以輕鬆地在測試儲存庫中執行“git pull”。當您對更改感到滿意時,合併到 master 並在您的裸倉庫上推送到 master 並以相同的方式更新實時倉庫。

我認為您需要嘗試找到一種方法來擁有您的網站的兩個版本,以便您可以在更改上線之前對其進行測試。


原帖:

我強烈建議您將實時伺服器與您目前正在處理的內容分開,即另一個儲存庫,您也可以在其中推送您的工作(並從中提取),它作為一個集成儲存庫工作。這樣,您可以在將程式碼推送到實時伺服器之前集成程式碼並在本地(您的組織本地)對其進行測試,因此沒有人會意外地將程式碼/數據庫/任何內容直接推送到實時伺服器。

我還建議您為中央儲存庫備份數據,換句話說,git 應該用作版本控制系統,而不是用作備份系統。甚至 git 也可能失敗並導致儲存庫損壞,然後如果您沒有任何備份,您就會被熏死。

此外,如果可能,請嘗試將實際站點內容與處理數據的邏輯分開,即嘗試保持良好的模型/視圖概念。通過這種方式,您可以輕鬆地使用獨立於程式碼的測試數據庫設置測試環境,並且無需送出數據庫。當然,除非你真的想送出它們:)

查看 HedgeHog 的 Team Development Soultions(3.0 是最新版本)。它可以滿足您與 Visual Studio、Sitecore Rocks、Team City(或其他建構伺服器)一起使用時的許多需求。訪問http://hhogdev.com/了解更多詳情。

引用自:https://stackoverflow.com/questions/5895533