我应该解析 git status 还是使用 gitsharp?
-
22-09-2019 - |
题
我想将 git 集成到生产管道中以暂存 3dsmax 文件。虽然可以通过 TortoiseGit 使用 git,但我想从 Maxscript 与它进行通信,以将自定义菜单命令添加到 3dsmax。
我应该解析吗 git status
输出文本来确定文件夹状态,或者我应该使用一些包装工具来与 git 正确通信?
我在想 gitsharp
因为从 Maxscript 调用 dotNet 对象很容易,但我没有使用外部 dotNet 程序。
解决方案
我自己尝试解决这导致解析git的状态。似乎更清洁和更容易实现。在另一方面我'找前页创建一个特殊制作的XML文件来获得一个更“干净”的方式所需要的信息。
其他提示
从 git 1.7.0 版本开始,出现了 --porcelain
选项 git status
. 。输出:
git status --porcelain
...设计供脚本使用 - 输出的紧凑表示,其格式在各个版本中保持一致。正如手册页所说:
瓷器格式
瓷器格式与短格式类似,但保证不会在 git 版本之间或基于用户配置以向后不兼容的方式进行更改。这使得它非常适合通过脚本进行解析。上面对短格式的描述也描述了瓷器格式,但有一些例外:
- 不尊重用户的 color.status 配置;颜色总是会消失。
- 不尊重用户的 status.relativePaths 配置;显示的路径将始终相对于存储库根目录。
还建议使用另一种 -z 格式进行机器解析。在这种格式中,状态字段是相同的,但其他一些事情发生了变化。首先,省略了 -> from 重命名条目,字段顺序颠倒(例如,从 -> 到 变成 from)。其次,每个文件名后面都有一个 NUL (ASCII 0),将空格替换为字段分隔符 和终止换行符(但状态字段与第一个文件名之间仍有一个空格分隔)。第三,包含特殊字符的文件名不是特别的 格式 化;不执行引用或反斜杠转义。
因此,如上所述,您可能还想考虑使用:
git status -z
...以获得更强大的输出格式。
GIT中通常含有“瓷”,专为日常用户交互高级命令,和“管道”,其是低级命令其具有简单,稳定的接口建立更多的瓷器。您可以在混帐男人页的列表。要使用谢尔戈的例子,git ls-files
是git status
管道。包裹管道比瓷器更容易,更安全,虽然它可能需要一些令人费解弄清楚什么设置管道映射到什么样的瓷器。
我发现git ls-files
和我完全与它的输出格式满足。 git status
太人性化用于分析。
我宁愿Mercurial
到git
其清晰状态的命令,但与大型二进制文件似乎git
工作更好地为我。
我不知道任何关于MAXScript的,但如果你弄清楚如何调用.NET程序集,那么你可以使用gitsharp,我认为这将是最好的和最简单的选项!
有看看gitsharp API的单元测试。它们显示如何获得状态和其他高级别操作,如提交,开关支路,检查出,观看的变化提交等等。
- 的henon
许多最大的已在使用.NET组件。这应该是制定上最容易的事情。除了解析文本....是如此的脆弱。我只是忘了解析文本。