Должен ли я анализировать статус git или использовать gitsharp?
-
22-09-2019 - |
Вопрос
Я хотел бы интегрировать 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 или в зависимости от конфигурации пользователя.Это делает его идеальным для анализа скриптами.Приведенное выше описание краткого формата также описывает формат фарфора, за некоторыми исключениями:
- Конфигурация пользователя color.status не учитывается;цвет всегда будет выключен.
- Конфигурация пользователя 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.Это должно быть проще всего для разработки.Помимо разбора текста....такой хрупкий.Я бы просто забыл о разборе текста.