Gemfury опускает папку из пакета, когда она находится в .gitignore

Компания, в которой я работаю, размещает пакеты на Gemfury. Недавно я присоединился к разработке репозитория JavaScript. Все кажется довольно стандартным, но я заметил, что артефакты сборки быстро проверяются в системе контроля версий. Поэтому, недолго думая, я добавил папку dist в .gitignore.

Однако с тех пор пакет, размещенный на Gemfury, больше не содержит эту папку, когда мы делаем выпуск. Я сталкивался с этой проблемой раньше с пакетами NPM и всегда мог решить ее, добавив файл .npmignore, где папка dist не упоминается. Однако в данном случае это не помогает, как и добавление области «файлы» в package.json (все упомянутые там файлы отображаются в пакете, кроме папки dist).

Я не совсем уверен, как Gemfury создает пакет. Способ использования Gemfury заключается в том, чтобы передать ему исходный код (добавить Gemfury как удаленный и git push fury master), и Gemfury предположительно улавливает, что ему нужно выполнить сборку, и утверждает, что успешно справился с этой задачей:

Initializing build: done.
-----> Building package...
       npm package build detected
       Packing my-project-1.0.0.tgz
-----> Pushing to "my-company" account
       my-project-1.0.0.tgz ... ok
-----> Done!

Это все, что мне удалось выяснить, и я понятия не имею, как сделать так, чтобы папка dist снова появилась. По очевидным причинам я не хочу возвращать его обратно в систему управления версиями.

Репозиторий использует пряжу и содержит следующий скрипт сборки в package.json:

"build": "babel src -d dist -D"


person Hans Roerdinkholder    schedule 06.09.2019    source источник
comment
Простое добавление папки dist в .gitignore не повлияло бы на отслеживание Git папки dist и любых ранее существовавших файлов в ней, потому что они ранее отслеживались. .gitignore работает только в том случае, если файлы/папки, которые нужно игнорировать, еще не существуют. Однако любые файлы/подпапки, добавленные в будущем в папку dist (добавленные после изменения .gitignore), будут игнорироваться. Измененные файлы не будут игнорироваться. Если вся папка dist больше не существует в репозитории, кто-то должен был git rm или git rm --кэшировать папку.   -  person goofology    schedule 14.09.2019
comment
если папка dist действительно была помечена для игнорирования (ha) системой контроля версий с помощью .gitignore, а затем очищена с помощью git rm или git rm --cached и фиксации, то любые последующие нажатия на Gemfury будут delete< /b> dist-папка из Gemfury   -  person goofology    schedule 14.09.2019


Ответы (1)


Если методом передачи файлов в Gemfury является git push, и если Gemfury нужно увидеть папку dist, то git должен знать о папке dist.

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

#create new branch
git checkout -b Gemfury

#force tracking of dist folder even though it is .gitignored
git add -f dist
git commit -m "included dist folder for Gemfury"

*Я не знаком с Gemfury

person goofology    schedule 14.09.2019
comment
Я искал решение, в котором мне не нужно было бы добавлять папку в git, потому что я не хочу, чтобы каждый PR включал множество изменений в скомпилированные файлы. Но пока не доказано обратное, я приму этот ответ как единственную возможность. Я надеюсь на решение, в котором dist-папка может быть создана удаленно на Gemfury. - person Hans Roerdinkholder; 16.09.2019
comment
Извинения. Должен был понять это конкретное требование. Изменил мой ответ. - person goofology; 16.09.2019
comment
модифицированная команда git add для включения каталога dist (и подкаталогов), а не только файлов в папке dist - person goofology; 01.10.2019