В настоящее время я разрабатываю приложение, в котором репозиторий GIT используется в качестве единицы сохраняемости для набора файлов свойств, приложение обрабатывает сохранение файлов свойств в тестовом репо перед публикацией (отправкой) изменений в производственное репо. .
Приложение использует JGit для интеграции с репозиторием Git.
Сложность заключается в том, что пользователи должны иметь возможность добавлять и удалять коммиты из тестового репозитория, прежде чем отправлять release
в производство, каждый коммит сопоставляется с изменениями в отдельном файле свойств. Все коммиты, которые не отправляются в удаленный рабочий репозиторий, должны оставаться un-pushed
.
Итак, представьте следующую ситуацию:
Тестовое репо имеет 4 коммитов
c1-c2-c3-c4
Но пользователь предпочитает нажимать только коммиты c1
и c4
.
Ожидаемый производственный коммит после пуша должен быть c1-c4
, но коммиты, которые не были переданы в производственное репо, должны оставаться в тестовом репо.
Я рассмотрел несколько различных собственных GIT-решений, но не могу реально добиться желаемого результата с помощью JGIT, вот несколько решений, на которые я смотрел:
- JGit Rebase: JGIT не поддерживает
DROP
действия с коммитами, EDIT
тоже не работает
- JGit Cherry Pick: создайте отдельную ветвь для тестовых значений, затем cherrypick значений, которые хотите опубликовать для производства, на master. Но как бороться с коммитами, оставленными в отдельной ветке?
- Также пытались сбросить JGit, вернуть JGit и т. Д., Но ни одна из собственных операций git не соответствовала всем требованиям проекта.
Наверное, мой вопрос: кто-нибудь знает о нативной операции git, которую поддерживает JGit, которая обеспечит ожидаемую функциональность?
Я пришел к выводу, что документации по JGit практически нет или нет, лучшее место для проверки API JGit - посмотреть эти примеры . Если есть еще документы, которые я не нашел, я также был бы признателен за ссылку.