Какова стандартная процедура исправления стороннего пакета при возможности дальнейшего обновления? - PullRequest
0 голосов
/ 19 сентября 2018

Я знаю только основы git, поэтому я не уверен, как это сделать или есть лучший / более простой способ.Предположим, у вас есть сторонний пакет от NPM, и мне нужно изменить его, чтобы добавить функцию / исправление и т. Д., Но далее разработчики этого пакета выпускают обновление.Как мне обновить пакет самой новой версией или конкретными файлами, а также объединить изменения, которые уже были там?

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

1 Ответ

0 голосов
/ 21 сентября 2018

Ну, стандартная процедура с git - обновление из апстрима.Найдите исходный репозиторий для заинтересованного модуля npm, клонируйте его в локальное хранилище, создайте отдельную ветку и внесите в него изменения.Каждый раз, когда вы обнаруживаете, что хранилище модуля npm было изменено, вы обновляете основную ветку в своем локальном хранилище:

git fetch origin master:master

и объединяете мастер с вашей веткой:

git merge master  # to the current branch

Или выможете выбрать rebase вместо слияния

git rebase master  # rebase the current branch on top of master

Убедитесь, что ваши патчи применены правильно:

git diff master  # compare the branch with master

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

Если модуль npm не имеет доступного вам хранилища, создайте его самостоятельно.Создайте новое git репо, получите код модуля и передайте его в репо в ветке master.Создайте ветку с вашими патчами.Каждый раз, когда вы обнаруживаете, что вышестоящий код был изменен, вы скачиваете код и обновляете master:

git checkout master
# Update code
git add -A .
git commit
git checkout your-patched-branched
git merge master  # or rebase
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...