저는 때때로 커밋하여 조직 모드 파일을 GitHub 저장소와 동기화 상태로 유지하는 간단한 크론 작업을 작성하려고 합니다. 어떤 이유로든 항상 파일을 커밋하지만 git push
명령줄에서 스크립트를 실행해도 출력이 표시됩니다.
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 329 bytes | 329.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To github.com:my/repo.git
df98efb..0d4943b master -> master
git status
여전히 밀어붙여야 한다고 말하고 있습니다.
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
이것은 내 스크립트입니다.
#!/bin/sh
message="auto-commit from $USER@$(hostname -s) on $(date)"
GIT=`which git`
REPO_DIR=~/org
cd ${REPO_DIR}
${GIT} add --all .
${GIT} commit -m "$message"
${GIT} push [email protected]:my/repo.git master
내 crontab에서는 다음과 같습니다.
* * * * * echo ["$(date)"] "$(echo "$(~/cron/scripts/org-commit.sh | tail -1)" | xargs)" >> ~/cron/log/org-commit.log 2>&1
에서 ~/cron/log/org-commit.log
나는 이것을 보았다:
[Wed Jun 12 16:44:00 CDT 2019] nothing to commit, working tree clean
[Wed Jun 12 16:45:00 CDT 2019] 1 file changed, 1 insertion(+)
첫 번째 줄은 변화 없이 달릴 때의 위치이고, 두 번째 줄은 변화가 있을 때의 위치입니다. git push
해당 로그 라인은 다음에서 유래하므로 실행된 적이 없는 것 같습니다 git commit
.
이 원인을 어떻게 찾을 수 있나요?
답변1
나는 당신의 문제가 git push
실제로 비동기라고 생각합니다. 결과를 변수에 할당한 다음 결과를 에코하면 작동합니다. 다음과 같은 내용이 예상한 응답을 출력해야 합니다.
#!/bin/sh
message="auto-commit from $USER@$(hostname -s) on $(date)"
GIT=`which git`
REPO_DIR=~/org
cd ${REPO_DIR}
${GIT} add --all .
${GIT} commit -m "$message"
gitPush=$(${GIT} push -vvv [email protected]:my/repo.git master 2>&1)
echo "$gitPush"