13
rsync ไม่รวมตาม. gitignore & .hgignore & svn: ละเว้นเช่น --filter =: C
Rsync มีตัวเลือกที่ดี--cvs-excludeในการ“ ละเว้นไฟล์ในลักษณะเดียวกับ CVS” แต่ CVS ล้าสมัยไปหลายปีแล้ว มีวิธีใดบ้างที่จะทำให้มันยกเว้นไฟล์ที่ระบบควบคุมเวอร์ชันใหม่จะถูกละเลย (Git, Mercurial, Subversion) ตัวอย่างเช่นฉันมีโครงการ Maven จำนวนมากที่ตรวจสอบจาก GitHub โดยทั่วไปแล้วจะมี.gitignoreรายชื่ออย่างน้อยtargetไดเร็กทอรี Maven build เริ่มต้น (ซึ่งอาจอยู่ในระดับบนสุดหรือในโมดูลย่อย) เนื่องจากเนื้อหาของไดเรกทอรีเหล่านี้เป็นแบบใช้แล้วทิ้งทั้งหมดและอาจมีขนาดใหญ่กว่าซอร์สโค้ดได้มากฉันจึงขอยกเว้นเมื่อใช้ rsync ในการสำรองข้อมูล แน่นอนว่าฉันสามารถพูดได้อย่างชัดเจน--exclude=target/แต่จะตั้งใจระงับไดเรกทอรีที่ไม่เกี่ยวข้องซึ่งเพิ่งเกิดขึ้นเพื่อตั้งชื่อtargetและไม่ควรละเลย และฉันจะจัดหารายการที่สมบูรณ์ของเส้นทางที่แน่นอนสำหรับชื่อไฟล์และรูปแบบที่กล่าวถึงในที่ใด ๆ.gitignore, .hgignoreหรือsvn:ignoreสถานที่ให้บริการบนดิสก์ของฉัน แต่นี้จะเป็นรายการใหญ่ที่จะต้องได้รับการผลิตโดยการจัดเรียงของสคริปต์ เนื่องจาก rsync ไม่มีการรองรับการชำระเงิน VCS ในตัวนอกเหนือจาก CVS มีเคล็ดลับที่ดีในการป้อนรูปแบบการละเว้นหรือไม่? หรือระบบโทรกลับบางประเภทโดยสามารถถามสคริปต์ผู้ใช้ว่าควรรวมไฟล์ / ไดเร็กทอรีที่กำหนดไว้หรือไม่? อัปเดต : --filter=':- .gitignore'ตามที่แนะนำโดย LordJavac ดูเหมือนว่าจะทำงานได้ดีสำหรับ Git เช่นเดียว--filter=:Cกับ CVS อย่างน้อยก็ในตัวอย่างที่ฉันพบแม้ว่าจะไม่ชัดเจนว่าไวยากรณ์นั้นตรงกันทุกประการ --filter=':- .hgignore'ไม่ได้ผลดีสำหรับ …