실행 중 업데이트됨

실행 중 업데이트됨

Git 저장소에 bash 스크립트가 있습니다. git pull내부 스크립트를 사용하여 업데이트합니다. 하지만 가끔 스크립트 자체를 변경하면 실행 중에 변경되었기 때문에 전체 스크립트가 충돌하는 경우가 있습니다. 이 파일을 업데이트하고 싶지만 실행 중에는 업데이트할 수 없습니다.

어떻게 해야 하나요?

답변1

일반적인 방법

이런 종류의 문제를 해결하는 일반적인 방법 중 하나는 두 가지 버전의 스크립트(실행용과 저장소에 저장용)를 사용하는 것입니다. 웹에서 스크립트를 다운로드한 경우에도 모든 버전 제어 시스템에서 작동합니다.

예를 들어 다음을 수행할 수 있습니다 update.sh.in(저장소에 추가).

#!/bin/bash
git pull
if [ update.sh.in -nt update.sh ]; then cp update.sh.in update.sh; fi

# actual work of the script
# any line here can be changed in the next version of the script

파일을 수동으로 복사하여 에 update.sh포함시킵니다 .gitignore.update.sh

여기서 중요한 점은 처음 세 줄을 수정해서는 안 된다는 것입니다. .sh.in복사본이 .sh스크립트의 동일한 위치에 유지되는 한 아무런 문제 없이 실행됩니다.

.in확장은 템플릿 파일에서 실제 스크립트나 소스 코드를 생성하는 다양한 도구에 대한 전통적인 확장입니다.

자식 후크

일반적이지만 덜 일반적인 또 다른 방법은 git Hooks를 사용하는 것입니다. 이는 GIT 관련 방법입니다. 다른 스크립트를 작성하여 .git/hooks디렉토리 에 넣을 수 있습니다 . Git은 다양한 실행 지점에서 이러한 스크립트를 호출합니다.

그 이상으로 무엇을 해야 하는지 지정하지 않았습니다 git pull. 하지만 어쩌면 당신은 당신의 특별한 직업을 .git/hooks/pre-rebase또는 에 넣을 수도 있습니다 .git/hook/post-merge. 자동으로 호출됩니다 git pull.

전체 후크 목록을 보려면 여기를 읽어보세요.https://git-scm.com/docs/githooks

관련 정보