Как добавить дочерний модуль maven в .gitignore - PullRequest
1 голос
/ 04 ноября 2019

Я пытаюсь настроить скрипт для автоматической перестановки изменений из ветки разработки в ветки, содержащие дочерние модули Maven.

Способ настройки этого проекта заключается в том, что ветвь разработки содержит родительский модуль. Все изменения поступают в этот модуль и объединяются с веткой разработки. Для того чтобы дочерние модули могли получить эти ошибки, их необходимо перенести на разработку. Сами дочерние модули никогда не должны изменяться в rebase.

Когда я пытаюсь использовать свой сценарий для перебазирования дочерней ветви в разработку, я получаю конфликт, в котором говорится, что дочерний модуль был удален в ветви разработки. Это имеет смысл, так как этот модуль не существует в разработке. Мне нужно, чтобы rebase игнорировал все, что связано с дочерним модулем, поэтому я добавил эту строку в .gitignore в проекте:

*_module/

Соглашение об именах каждого дочернего модуля имеет в конце _module,так что с *, тогда каждая ветвь должна иметь возможность игнорировать рассматриваемый дочерний модуль, независимо от имени. Однако это не сработало. Я еще ничего не нашел в отношении этого варианта использования, и мне интересно, есть ли у кого-нибудь еще какие-либо советы о том, как действовать.

Вот общая структура файлов ветви разработки:

project+
       |
       +-src+ #parent module
       |    |
       |    +-main #where changes to the code occure
       |
       +.gitattributes
       |
       +.gitignore
       |
       +pom.xml

А вот структура ветки с дочерним модулем:

project+
       |
       +-test1_module+ #child module in maven.  Need to ignore this in .gitignore, or some equivalent
       |             |
       |             +-src+ 
       |                  |
       |                  +-assembly
       |                  |
       |                  +-main
       |
       +-src+ #parent module
       |    |
       |    +-assembly
       |    |
       |    +-main 
       |
       +.gitattributes
       |
       +.gitignore
       |
       +pom.xml

РЕДАКТИРОВАТЬ: Чтобы было ясно, я не хочу удалять этот дочерний модуль из репозитория git;Я просто хочу игнорировать или пропустить любые изменения во время ребазинга.

1 Ответ

0 голосов
/ 05 ноября 2019

.gitignore может игнорировать только неотслеживаемый контент.

Поэтому каждая ветвь должна:

git rm -r --cached test*_module
echo "*_module/">>.gitignore

И добавлять и фиксировать.
Тогда перебазирование не приведет к конфликту.

Но: это не то, что следует за OP, а это значит, что .gitignore в любом случае не является решением.

В этом случае сценарий rebase должен нуждаться в конфликте (длядочерний модуль),

  • принимать изменения от "своих" (через, git checkout -- theirs -- test1Module).
  • добавить и возобновить перебазирование (git add .; git rebase --continue) ЭтоПредположим, что модуль maven может быть выбран автоматически через зависимость maven, что означает, что он не должен быть версионирован в родительском репозитории.
...