views:

312

answers:

4
+2  Q: 

parsing git output

I'd like to integrate git into production pipeline to stage 3dsmax files. While it is alright to work with git through TortoiseGit, I'd like to communicate with it from the Maxscript to add custom menu commands to 3dsmax.

Should I parse git status output text to determine folder status or should I use some wrapping tool to correctly communicate with git?

I was thinking about gitsharp since it is easy to call dotNet objects from Maxscript, but I didn't use external dotNet programs.

A: 

My own attempt to solve this resulted in parsing git status. Seems cleaner and easier to implement. On the other hand i'am looking forword to create an special crafted XML File to get the needed Information in a more "clean" Way.

bastianneu
Thank you, bastianeu!And where you're planning to get that XML file from? Is git itself could be forced to make such file? Sorry, I'm novice in git management.
sergo
As i parsed git output by myself i am able to create an XML File.That can be used for various things...
bastianneu
Parsing "porcelain" commands is a very bad idea. The output is intended for humans, and as such, the format may change between git versions (eg if they add more useful info, or re-arrange it to be easier for people to read). The correct answer is to use the "plumbing" commands, as Schwern lists below.
davr
+1  A: 

I've discovered git ls-files and I'm totally satisfied with its output format. git status was too human-oriented for parsing.

I would prefer Mercurial to git with its clear status command, but with large binary files it seems that git works better for me.

sergo
+3  A: 

git generally contains "porcelain", high level commands designed for everyday user interaction, and "plumbing" which are low level commands which have simple, stable interfaces to build more porcelain. You can find a list in the git man page. To use sergo's example, git ls-files is the plumbing for git status. Wrapping the plumbing is easier and safer than the porcelain, though it may require some puzzling to figure out what set of plumbing maps to what porcelain.

Schwern
A: 

hey, I don't know nothing about maxscript but if you figure out how to call .net assemblies then you can use gitsharp and I think it would be the best and easiest option!

have a look at the unit tests of the gitsharp API. they show how to get the Status and other high level operations such as committing, switching branches, checking out, viewing changes of a commit and so on.

-- henon

henon
Thank you, henon. I've finally find the method to run gitsharp from maxscript (by Assembly.LoadFrom method). It works fine, but I'm not strong in C#, so it's little hard for me to search through the sources. Will bug people at gitsharp's google-groups.
sergo
no problem, you are welcome! There is also a new API documentation which we need to improve more, but still it's better than nothing. see http://henon.github.com/GitSharp/
henon