Лучший способ сделать параллельные этапы?
Я хочу размещать файлы параллельно и фиксировать в разных ветках одновременно.
Будет многократный доступ одновременно. API repo.Index.Stage / repo.Commit работает в том же текущем каталоге, поэтому я думаю, что об этом не может быть и речи.
Ребята, можете ли вы дать мне несколько советов о том, как это может быть достигнуто? Общая идея?
1 ответ
С точки зрения осуществимости, я могу думать о двух разных вариантах:
Рассматривая "файлы сцены параллельно" как ограничение
Слово "постановка" на языке git подразумевает использование индекса.
Чтобы размещать файлы параллельно, можно открыть много экземпляров репозитория, каждый из которых принимает разные пары Working Directory/Index. Все они создают объекты в одной объектной базе данных.
Это может быть достигнуто благодаря RepositoryOptions
параметр Repository
конструктор.
Посмотрите этот тест, чтобы получить первое представление о том, как это достижимо.
Альтернативное предложение, Barebone Edition
Другой вариант - не использовать индекс и создавать объекты непосредственно в базе данных объектов. Однако это означает, что ничто не будет "организовано", и что Blobs, Trees и Commits придется создавать вручную.
API более низкого уровня допускает подобные манипуляции. Этот API даже позволил бы "фиксировать" против пустого хранилища.
См. Наборы тестов ObjectDatabaseFixture и TreeDefinitionFixture для получения дополнительной информации о том, как этого добиться.
Этот API будет только создавать объекты в базе данных. Вам придется обновить кончик веток самостоятельно. Это может быть достигнуто благодаря Repo.Refs.Add()
а также Repo.Refs.UpdateTarget()
методы.