2009-12-30 140 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程序集。这应该是最容易发展的事情。除了解析文本....是如此脆弱。我只是忘了解析文本。