Должен ли я анализировать статус git или использовать gitsharp?

StackOverflow https://stackoverflow.com/questions/1979609

Вопрос

Я хотел бы интегрировать git в производственный конвейер для подготовки файлов 3dsmax.Хотя с git можно работать через TortoiseGit, мне бы хотелось общаться с ним из Maxscript, чтобы добавлять в 3dsmax команды пользовательского меню.

Должен ли я разобрать git status вывести текст, чтобы определить состояние папки, или мне следует использовать какой-нибудь инструмент для упаковки, чтобы правильно общаться с git?

я думал о gitsharp поскольку объекты dotNet легко вызывать из Maxscript, но я не использовал внешние программы dotNet.

Это было полезно?

Решение

Моя собственная попытка решить эту проблему привела к анализу статуса git.Кажется чище и проще в реализации.С другой стороны, я ищу возможность создать специальный XML-файл, чтобы получить необходимую информацию более «чистым» способом.

Другие советы

Начиная с версии git 1.7.0, появилась --porcelain вариант для git status.Вывод:

git status --porcelain

...предназначен для использования сценариями — компактное представление вывода, формат которого будет оставаться неизменным во всех версиях.Как говорится на странице руководства:

Фарфоровый формат

Формат фарфора аналогичен короткому формату, но гарантированно не будет изменяться обратно несовместимым образом между версиями git или в зависимости от конфигурации пользователя.Это делает его идеальным для анализа скриптами.Приведенное выше описание краткого формата также описывает формат фарфора, за некоторыми исключениями:

  1. Конфигурация пользователя color.status не учитывается;цвет всегда будет выключен.
  2. Конфигурация пользователя status.relativePaths не учитывается;Показанные пути всегда будут относиться к корню репозитория.

Для машинного анализа также рекомендуется использовать альтернативный формат -z.В этом формате поле статуса такое же, но некоторые другие вещи меняются.Во -первых, -> пропущено из переименования записей, и порядок поля поменяется вспять (например, от -> до).Во -вторых, NUL (ASCII 0) следует за каждому имени файла, заменяя пространство в качестве сепаратора поля и завершающую новую линию (но пространство все еще отделяет поле состояния от первого имени файла).В -третьих, имена файлов, содержащих специальные символы, не специально отформатированы;кавычки или экранирование обратной косой черты не выполняются.

Итак, как говорится, вы также можете рассмотреть возможность использования:

git status -z

...для еще более надежного формата вывода.

git обычно содержит «фарфор», команды высокого уровня, предназначенные для повседневного взаимодействия с пользователем, и «сантехнику», представляющую собой команды низкого уровня, которые имеют простые и стабильные интерфейсы для создания большего количества фарфора.Список вы можете найти в git man-страница.Если использовать пример Серго, git ls-files это водопровод для git status.Обернуть сантехнику проще и безопаснее, чем фарфором, хотя может потребоваться некоторое недоумение, чтобы выяснить, какой набор сантехнических карт соответствует какому фарфору.

Я обнаружил git ls-files и меня полностью устраивает формат вывода. git status был слишком ориентирован на человека для анализа.

я бы предпочел Mercurial к git с командой четкого статуса, но с большими двоичными файлами кажется, что git у меня работает лучше.

Я ничего не знаю о maxscript, но если вы разберетесь, как вызывать сборки .net, вы сможете использовать gitsharp, и я думаю, что это будет лучший и простой вариант!

взгляните на модульные тесты API gitsharp.они показывают, как получить статус и другие операции высокого уровня, такие как фиксация, переключение ветвей, извлечение, просмотр изменений фиксации и так далее.

-- хенон

Многие макси уже используют сборки .NET.Это должно быть проще всего для разработки.Помимо разбора текста....такой хрупкий.Я бы просто забыл о разборе текста.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top