ตรวจสอบ Folder OSX สำหรับการเปลี่ยนแปลงไฟล์จากนั้นเรียกใช้สคริปต์ทุบตี [ซ้ำ]


10

เป็นไปได้ซ้ำ:
ดูระบบไฟล์ในเวลาจริงบน OS X และ Ubuntu

ฉันกำลังมองหาวิธีที่มีประสิทธิภาพในการตรวจสอบไดเรกทอรีท้องถิ่นใน OSX และหากมีการเปลี่ยนแปลงไฟล์ใด ๆ ในไดเรกทอรีนั้นให้ใช้สคริปต์ทุบตีเพื่อยืนยันไฟล์เป็น github

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


1
คำถามนี้เป็นคือเป็นเส้นเขตแดนคำแนะนำซอฟแวร์ที่ไม่ได้รับอนุญาตโดยทั่วไปบนSuper User ลอง rephrasing เพื่อถามคำถามรูตของคุณ "ฉันจะยอมรับการเปลี่ยนแปลงโดยอัตโนมัติและผลักดันจาก repo git เมื่อใดก็ตามที่มีการเพิ่ม / ลบ / เปลี่ยนแปลงไฟล์"
Darth Android

@ ดาร์ทแอนดรอยด์และถามคำถามที่พบบ่อยคำถามนี้ใช้ได้ดี OP ไม่ได้ขอคำแนะนำในการซื้อหรือการซื้อ
ephsmith

1
@eph OP กำลังขอคำแนะนำสำหรับบางสิ่งซึ่งค่อนข้างปิดหัวข้อ แม้ว่าปัญหาหลักคือพวกเขาไม่ได้อธิบายปัญหาของพวกเขาและขอวิธีแก้ปัญหาของพวกเขาเท่านั้น
slhck

ปัญหานั้นง่าย มอนิเตอร์ไดเร็กทอรีสำหรับการเปลี่ยนแปลงและคอมมิตการเปลี่ยนแปลงเหล่านั้นไปยังที่เก็บ ทุกอย่างอยู่ในคำถามของ OP ลิงค์ที่คุณระบุมีคำตอบ โทรดีมาก
ephsmith

คำตอบ:


19

ใช้fswatchจากที่เก็บของคุณ:

fswatch . 'git commit -avm "snapshot at ${date}"'

ตัวอย่างง่ายๆนี้จะตรวจจับการเปลี่ยนแปลงกับไฟล์ที่มีอยู่แล้วในที่เก็บ


ซึ่งสามารถทำได้ด้วยการกระทำของโฟลเดอร์ที่สร้างไว้ใน OS X ดูคำตอบผ่านลิงค์ที่ slhk ที่ระบุไว้ด้านบน
ephsmith

1
คุณสามารถขยายคำตอบของคุณโดยเพิ่มตัวอย่างอธิบายสิ่งที่ OP ต้องการบรรลุ ไม่สนับสนุนการโพสต์ลิงก์
slhck

สิ่งนี้ดูมีกำลังใจ ฉันคิดว่าฉันสามารถเรียกใช้. /fswatch / บาง / dir ./some/dir/bash_script.sh
Tegan Snyder

+1 - ฉันลองfswatchหลังจากอ่านคำตอบของคุณ ยูทิลิตี้ที่ยอดเยี่ยม - คล้ายกับinotifyลินุกซ์มากและใช้ประโยชน์จาก OS X ดั้งเดิมfsevent
cwd

2

ทางเลือกหนึ่งคือเพียงแค่ใช้ launchd บันทึกรายการคุณสมบัติเช่นนี้เป็น~/Library/LaunchAgents/com.superuser.445907.plistและโหลดด้วยlaunchctl load ~/Library/LaunchAgents/com.superuser.445907.plistหรือโดยออกจากระบบและกลับเข้ามา

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.superuser.445907</string>
    <key>Program</key>
    <string>/Users/username/script</string> <!-- ~/ doesn't work -->
    <key>WatchPaths</key>
    <array>
        <string>/Users/username/Folder/</string>
    </array>
    <key>ThrotteInterval</key>
    <integer>0</integer> <!-- run at most every 0 seconds, by default 10 -->
</dict>
</plist>

Launchd จะลงทะเบียนเฉพาะการเปลี่ยนแปลงไฟล์เมื่อมีการบันทึกแบบอะตอมหรือลบและสร้างใหม่ทุกครั้งที่มีการบันทึก แอปพลิเคชั่น OS X ส่วนใหญ่จะมีการบันทึกปรมาณูเป็นค่าเริ่มต้น แต่ตัวอย่างเช่น TextMate และ vim จะไม่บันทึก ไม่พบการเปลี่ยนแปลงในโฟลเดอร์ย่อยของโฟลเดอร์ที่จับตาดู

launchctl unload $path && launchctl load $path นำการเปลี่ยนแปลงไปใช้กับผู้วางแผน

ดูman launchdและman launchd.plistสำหรับข้อมูลเพิ่มเติม


แนวทางที่น่าสนใจ ฉันจะดูมันและกลับไปหาคุณ ขอบคุณสำหรับความคิดเห็น.
Tegan Snyder

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