2009-12-30 138 views
5

我想將git整合到生產管道中,以便爲3dsmax文件創建階段。雖然可以通過TortoiseGit使用git,但我希望通過Maxscript與它進行通信,以向3dsmax添加自定義菜單命令。我應該解析git狀態還是使用gitsharp?

我應該解析git status輸出文本來確定文件夾狀態,還是應該使用一些包裝工具來正確地與git溝通?

我在考慮gitsharp,因爲它很容易從Maxscript中調用dotNet對象,但我沒有使用外部的dotNet程序。

回答

2

我自己試圖解決這個問題導致解析git狀態。看起來更乾淨,更容易實施。另一方面,我正在尋找創建一個特製的XML文件,以更「乾淨」的方式獲得所需的信息。

+0

謝謝你,bastianeu! 你打算從哪裏獲得該XML文件? git本身可能被迫做出這樣的文件?對不起,我是git管理的新手。 – sergo 2009-12-30 12:17:41

+0

當我解析自己輸出的git時,我能夠創建一個XML文件。 可用於各種事物... – bastianneu 2009-12-30 12:27:14

+1

解析「瓷器」命令是一個非常糟糕的主意。輸出用於人類,因此,格式可能會在git版本之間改變(例如,如果他們添加更多有用的信息,或者重新安排它以使人們更容易閱讀)。正確的答案是使用「管道」命令,正如Schwern在下面列出的那樣。 – davr 2010-05-26 05:30:35

2

我發現了git ls-files,我對它的輸出格式非常滿意。 git status解析過於人性化。

我更喜歡Mercurialgit其明確的狀態命令,但與大二進制文件似乎git對我來說更好。

7

git一般包含「瓷器」,專爲日常用戶交互設計的高級命令,「管道」是低級命令,它們具有簡單穩定的界面來構建更多的瓷器。你可以在git man page找到一個列表。以sergo爲例,git ls-filesgit status的管道。包裹管道比瓷器更容易和更安全,但可能需要一些疑惑來弄清楚什麼瓷器的管道圖。

0

我對maxscript一無所知,但如果你弄清楚如何調用.net程序集,那麼你可以使用gitsharp,我認爲這將是最好的和最簡單的選擇!

看看gitsharp API的單元測試。他們展示瞭如何獲取狀態和其他高級操作,如提交,切換分支,檢出,查看提交的更改等。

- 儂

+0

謝謝,henon。我終於找到了從maxscript運行gitsharp的方法(通過Assembly.LoadFrom方法)。它工作正常,但我在C#中並不強壯,所以我很難通過源搜索。將在gitsharp的谷歌羣組中錯誤的人。 – sergo 2010-01-03 23:10:04

+0

沒問題,歡迎您!還有一個新的API文檔,我們需要進一步改進,但仍然比沒有好。見http://henon.github.com/GitSharp/ – henon 2010-01-08 21:36:12

8

由於Git版本1.7.0,出現了對git status一個--porcelain選項。輸出:

git status --porcelain 

...由腳本專爲使用 - 其格式輸出的緊湊表示將保持跨版本保持一致。由於該男子頁說:

瓷格式

瓷器格式類似於短格式,但保證不會在git的版本之間的向後兼容的方式更改或根據用戶的配置。 這使得它非常適合通過腳本進行分析。以上短格式的描述還描述了瓷器格式,但有一些例外:

  1. 用戶的color.status配置不受尊重;顏色將始終關閉。
  2. 用戶的狀態。relativePaths配置不受尊重;顯示的路徑將始終與存儲庫根目錄相關。

還有一種推薦用於機器解析的備用-z格式。在這種格式下,狀態字段是相同的,但其他一些事情會改變。首先, - >從重命名條目中被省略爲 ,並且字段順序被顛倒(例如從 - >變爲)。其次,NUL(ASCII 0)跟在每個文件名之後,將空格替換爲字段分隔符 和終止換行符(但空格仍將狀態字段與第一個文件名隔開)。第三,包含特殊字符的文件名格式不是特別的 ;不執行引用或反斜槓轉義。

所以,上面寫着,你可能還需要考慮使用:

git status -z 

...一個更強大的輸出格式。

0

很多max已經在使用.NET程序集。這應該是最容易發展的事情。除了解析文本....是如此脆弱。我只是忘了解析文本。