2010-12-15 64 views
13

因此,我是一個源代碼管理白癡,請這個清單幽默我。視覺工作室的merilial白癡清單2010

我終於決定爲我的下一個項目使用Mercurial + TortoiseHg +(VS2010 + HgSccPackage)+窯。

我看過http://hginit.com/,我玩了很多次,但對源代碼控制不太瞭解,所以我不想在這裏犯錯,我目前的項目是我最大也是最有價值的項目。

因此,這裏是我的清單:

創造

  1. 我在網上建立在窯內新的回購協議。
  2. 然後克隆它在我的電腦上。
  3. 我複製我的整個項目文件夾(解決方案與該文件夾下的多個項目)到回購。
  4. 我將this content添加到回購根目錄中的.hgignore文件中。
  5. TortoiseHg我點擊添加文件
  6. 我偶爾從VS提交。
  7. 當我準備好了,我去SYNC->推
    (所以這是所有好的吧?)

一個問題我在這裏是。我在HgScc中找不到添加文件等價物,我注意到當我從VS-IDE添加新文件時,它沒有源代碼控制的圖標。 (它沒有添加到mercurial?)

所以我最終通過IDE添加文件,他們沒有檢查。再經過(我不記得和其他的東西)少數提交我注意到有一個額外的分支或東西: alt text

現在如果我去嘗試推我讓"(did you forget to merge? use push -f to force)"。 (是的,我打來電,我有沒有在即將到來的變化)

無論如何,只是一個操場**,我剛剛意識到使用TortoiseHG->添加文件每次我創建文件從VS修復的東西? **(或者是有更好的辦法嗎?)

分支:

所以我是一個有點困惑命名分支,但由於窯自己的分公司/克隆啄。我read instructions here

  1. 所以,在線,我有選項,在窯中創建一個「分支」在線。
  2. 然後,我將在本地克隆這個新的回購(好像它是一個新的回購)
  3. 我會做我的更改,承諾,推動。
  4. 然後,我將從主要回購拉動並從我的分支回購推到主要。

所以我沒有真正看到任何合併選項在這裏,我猜mercurial處理自己合併?所以我沒有看到存儲庫資源管理器的分支?這是應該如何完成的?

最後一個問題,就是查看歷史記錄和查看變更日誌選項,什麼汞柱選項做自己對應?:

alt text


更新之間的區別:忘記提到我是這個項目中唯一孤獨的開發者。 = P

+1

我已經與添加新文件的最新版本HgSCC的問題。對我來說,它看起來像有一個錯誤或與該版本的東西。我已經切換到VisualHg(http://visualhg.codeplex.com),它也使用了TortoiseHg。 – 2010-12-15 12:15:30

+1

VisualHg整潔,自動添加/刪除解決方案中的文件沒有太多麻煩。 – Macke 2010-12-15 12:24:47

+0

另外請注意,Mercurial有一個聊天室,但人口並不稠密,但我在那裏可以適應我的日程安排,以及一些幫助構建Mercurial的人(我只是一個粉絲)。如果你有更多的討論問題,那可能就是這個地方。 http://chat.stackoverflow.com/rooms/39/mercurial – 2010-12-15 12:35:58

回答

13

以下是您的個人問題,每個部分一個,並附上我的意見/答案。


7.當我準備好了,我去SYNC->推(所以這是所有好權?

正確的。

的一件事可能在此有所不同工作流程是否有其他人也推送到同一個存儲庫,如果有的話,在某些時候,別人已經將更改集推送到本地沒有的存儲庫中,當你嘗試推送你的分支時會創建一個分支在線存儲庫,可以通過多個「頭像」顯示出來(如果你不願意,你應該在Mercurial環境中查找這個術語,不要理解我的意思。)通常你不允許發生這種情況,所以推送將被中止。

當它中止時,您可以將聯機存儲庫中的變更集下載到本地存儲庫中,將您的變更集頭合併到您剛剛拖出的頭部,然後重新嘗試推送,這通常會成功(除非您隨着HgSCC吉利和其他人在此期間推更多)


至於HgSCC和添加文件,我有問題,所以我切換到VisualHg - http://visualhg.codeplex.com,特別是因爲有似乎有點問題關於新文件的1.52版本的HgSCC。如果你找不到解決方案,我會建議你試用VisualHG。


你忘記合併了嗎?

您應該將您的更改合併在一起,以便您只有一個頭。您在該示例截圖中有3個「添加了按鈕以形成2」,「最終提交」和「第2 prj(2)」。您應該更新到您認爲是「大部分項目」的那個,選擇它,然後右鍵單擊其中一個頭,然後在TortoiseHg中選擇「合併...」,然後完成合並和提交。每個這樣的merge + commit都會刪除1個頭,所以你至少需要2個這樣的合併才能回到1個頭。


對於如何處理樹枝比其他許多人有一個不同的概念。他們建議你創建一個完全不同的分支倉庫,並在其中工作,而不是使用命名分支。一個命名分支類似於你在截圖中命名三個變更集(以「final commit」結尾的三個變更集),作爲添加新表單或修復大錯誤的分支。

所以不是你在這裏做了什麼,有3個頭,窯的「方式」將有3個克隆,每個克隆只有變化集到他們的分支頭。基本上你會有1個回購克隆,一切都是「添加第二個形式」,並繼續「第二個項目」,但是中間的變更集不會存在。第二個克隆將有「添加第二個表單」,然後一個額外的標記爲「添加按鈕形成」,第三個將有「添加第二個表單」,然後三個結尾與「最終提交」。

當然,最後,在推拉回到主存儲庫時,最終會得到這些分支,但他們建議您使用類似更大分支的分支庫,比如添加大特性,模塊等


即時猜測善變處理自身的兼併,合併?

如果您在原始存儲庫和分支存儲庫克隆中都有新的更改集,則僅在您的方案中進行合併纔會起作用。

如果你有這個想法,從分支倉庫推送到原始倉庫(或以另一種方式拉動)會在目標倉庫中添加新的頭部。這是合併會幫助你避免。

這樣,您的工作流程想如下:

  1. 推所有的你有你的分支庫(即從你需要擺在首位的分支庫的原因引起的變更,大變化錯誤修正,新功能,大改寫,無論如何)
  2. 嘗試從分支存儲庫推送到原始存儲庫,獲取消息,這將創建在目標存儲庫頭,所以你中止。
  3. 從原始存儲庫下拉到分支存儲庫。這將創造另一個頭。
  4. 從分支倉庫拉到你的本地庫,並在這裏做了合併,處理任何和所有的合併衝突,最後提交您的合併變更從本地存儲庫
  5. 推回支庫
  6. 敲定任何代碼審查你可能想在官窯之前做到這一點
  7. 將分支存儲庫推送到原始存儲庫(注意,這與步驟2相同,如果其他人(或您)在此期間在原始存儲庫中完成了更多工作,則跳轉返回步驟3並重復)
查看歷史記錄和查看變更日誌選項

之間差異

差異正是您查看它。查看歷史記錄總是顯示您選擇的歷史記錄,無論是文件還是解決方案文件本身,即。只是涉及該文件的變更集。

查看更改日誌查看存儲庫的更改集日誌,而不管您選擇了什麼。

+0

非常感謝。如果只有我可以upvote兩次! = P(哦,忘了提及我是唯一一個開發這個的人) – gideon 2010-12-15 13:16:26

3

如果你的項目還沒有被mercurial控制,那麼你應該使用「Add to source control」命令。在解決方案資源管理器中右鍵單擊解決方案或項目文件,並在上下文菜單中選擇命令。如果沒有一個,此命令還將在解決方案/項目位置創建一個存儲庫。

如果您將項目添加到Visual Studio之外的mercurial,那麼您需要在IDE中重新加載項目。否則HgSccPackage不知道該項目是受控的。

如果項目被控制,那麼從IDE添加現有或新的文件到該項目將自動添加到mercurial。

合併命令在「更改日誌」對話框中可用。要進行合併,需要將「Update」更改爲Rev1,然後選擇要合併的修訂(Rev2),然後使用工具欄命令或上下文菜單命令運行「合併」命令。

如果您認爲在HgSccPackage中發現了一個錯誤,那麼在HgSccPackage問題跟蹤器(http://bitbucket.org/zzsergant/hgsccpackage/issues)中創建一個步驟以重現問題。

+0

感謝sergant,我希望你能看到這篇文章。不幸的是,對於我來說,從IDE添加文件並不會將它們添加到mercurial中(即使在項目被控制時,由於IDE中所有其他文件都有圖標),我會嘗試確保所有內容並將其添加爲一個問題。我不確定這是一個錯誤還是未實現的功能。 – gideon 2010-12-15 17:37:04

+1

HgSccPackage v1.5.2中有一個「添加文件」命令的錯誤。當在mercurial配置文件中啓用caseguard mercurial extension時,它不起作用。 這個bug在HgSccPackage v1.5.3中修復,所以你可以再試一次。 – 2010-12-23 21:23:38

+0

嘿,謝謝,在此之前你沒有注意到你的評論。 – 2011-01-12 09:52:04

9

打印此文件,將其層壓並粘貼在牆上。我做到了。

http://secretgeek.net/mercurial_flow.asp

+2

+1謝謝! = D祕密極客真棒!我應該轉到他的博客! – gideon 2010-12-18 07:23:02

+0

+1我正在尋找類似的東西... – 2011-02-03 14:42:19