업데이트될 때 사용자 정의 패치를 업스트림 패키지에 자동으로 병합하는 방법이 있습니까? 지금까지 수집한 내용에 따르면 소스 코드를 수정하려면 유지 관리해야 하는 패키지의 별도 분기를 유지해야 합니다.
일부 패키지 관리자나 다른 도구가 업데이트할 때마다 작은 변경 사항(다른 키 바인딩, 아이콘 등)을 자동으로 패치할 수 있었으면 좋겠습니다.
이건 해서는 안되는 일인가요? 이것의 목적은 사용자가 사용자 정의 변경 사항을 "호깅"하고 업스트림에 기여하는 것을 방지하는 것입니까?
답변1
ObXkcd:https://xkcd.com/1319/
다른 모든 것과 마찬가지로 이 작업도 자동화될 수 있지만 몇 가지 제한 사항이 있습니다. 특히 변경 사항이 더 이상 최신 업스트림에 적용되지 않을 수 있습니다.
패키지가 아닌 업스트림 프로젝트를 추적하는 경우 분기를 변경하고 주기적으로 분기를 리베이스할 수 있습니다. 예를 들어 크론 작업은 다음을 수행할 수 있습니다.
cd /path/to/local/repo
git fetch upstream
git rebase upstream/main
지정된 리포지토리의 현재 브랜치를 업스트림 리포지토리의 마스터 브랜치로 리베이스합니다(원격 이름이 "upstream"이라고 가정). 성공하면 리포지토리가 적용한 변경 사항으로 업데이트됩니다. 그렇지 않으면 이메일을 받게 됩니다. 수신되었으며 문제를 수동으로 해결해야 합니다.
원하는 경우 리베이스를 자동으로 중단할 수 있습니다.
git rebase upstream/main || git rebase --abort
이것이 성공한 것처럼 보이더라도 결과가 작동하지 않을 수 있습니다. 업스트림 변경으로 인해 패치 적용이 허용되는 동안 다운스트림 패치가 무효화되는 것이 전적으로 가능합니다.
패키지를 추적하는 경우 도움이 될 수 있는 도구가 있을 수 있습니다. 예를 들어 데비안 파생물에는apt-src
, 소스에서 패키지를 설치하는 데 사용할 수 있습니다. upgrade
로컬 변경 사항을 유지하면서 로컬에 설치된 소스 패키지를 업그레이드하는 작업을 지원합니다 .