ฉันจะสร้างงาน cron ที่จะมอบหมายการเปลี่ยนแปลงโครงการของฉันเพื่อคอมไพล์เป็นรายสัปดาห์ได้อย่างไร


8

ฉันใช้คอมไพล์เพื่อจุดประสงค์ในการทำบันทึกการเปลี่ยนแปลงทางประวัติศาสตร์ของโครงการของฉัน ฉันเข้าใจว่ามันไม่ใช่การใช้ที่สมบูรณ์แบบ แต่เป็นรูปแบบการใช้งานที่ฉันเลือกด้วยเหตุผลต่าง ๆ ซึ่งฉันจะไม่เข้าใจเพื่อความกระชับ

ฉันจะสร้างงาน cron ที่จะคอมมิชชันการเปลี่ยนแปลงที่เก็บในแต่ละวันหรือสัปดาห์ได้อย่างไร?

ฉันใช้ git เวอร์ชันล่าสุดบน Ubuntu 10.10

คำตอบ:


9
0 20 * * 0 /path_to_script

ที่จะเรียกใช้คำสั่งที่ระบุ (แทนที่/path_to_script') เวลา 20:00 น. ตามเวลาท้องถิ่นทุกวันอาทิตย์ ไวยากรณ์สำหรับงาน cron นั้นค่อนข้างง่ายและมีเครื่องมือเรียบ ๆที่จะช่วยคุณสร้างงานเหล่านั้นโดยไม่จำตำแหน่งรหัส

ในกรณีนี้คำสั่งควรเป็นสคริปต์ที่รันคำสั่งสำหรับคุณ ฉันคิดว่ามันจะง่ายที่สุดในกรณีของคุณที่จะเขียนเชลล์สคริปต์อย่างรวดเร็วเพื่อเปลี่ยนเป็นไดเรกทอรีโคลนแล้วเรียกใช้คอมมิท สร้างไฟล์ที่~/commit.shและวางไว้ในนั้น (แทนที่/location/of/cloneแน่นอน)


#!/bin/sh
cd /location/of/clone
git-commit -m "commit message, to avoid being prompted interactively"

จากนั้นchmod +x ~/commit.shเพื่อให้สามารถเรียกใช้งานได้และให้ cron job run นั้น (อ้างถึงโดยเป็นพา ธ แบบเต็มแทนที่จะใช้~)


คำตอบที่ดี. โปรดทราบว่า cronjob (ชัด) เท่านั้นที่จะได้รับการดำเนินการหากคอมพิวเตอร์ของคุณทำงานในเวลาที่กำหนด (เช่นวันอาทิตย์ 20:00)
pableu

ฉันจะทำให้มันเป็นเหมือนการผลักดันไปยังเซิร์ฟเวอร์ได้อย่างไร?
Jason

นอกจากนี้ฉันจะเพิ่มไฟล์ที่ฉันเพิ่มได้อย่างไร
Jason

เพียงเพิ่ม git-push เข้ากับสคริปต์เพื่อให้มันส่งไปยังเซิร์ฟเวอร์เช่นกัน คุณสามารถใช้ตัวเลือก -a เพื่อ git-commit เพื่อให้มันเพิ่มไฟล์ทั้งหมดที่ถูกแก้ไขหรือลบโดยอัตโนมัติ
jcrawfordor

1
คุณไม่ต้องการเพิ่ม-aคำสั่งกระทำดังนั้นมันจะเพิ่มไฟล์ทั้งหมดที่ถูกติดตามไปยังพื้นที่จัดเตรียมโดยอัตโนมัติหรือไม่
Dror

2

เรียกใช้crontab -eเพื่อแก้ไข cronjob ผู้ใช้ของคุณและแทรกบรรทัดนี้:

0 20 * * 0 (cd /path/to/myproject && git add . && git commit -m "Automatic Commit" && git push)

แน่นอนคุณจะต้องตั้งค่า repo GIT ของคุณรวมถึงที่เก็บระยะไกลที่ใช้งานได้ แต่นั่นไม่ได้อยู่ในขอบเขตของคำถามนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.