ฉันจะคอมไพล์คอมไพล์ไฟล์ในโฟลเดอร์ symlinked ได้อย่างไร


19

ฉันมีสองโฟลเดอร์:

  • /home/me/code/project/
  • /srv/www/projectfiles/

ใน/home/me/code/projectโฟลเดอร์ที่ผมได้ symlinked staticไป/srv/www/projectfiles/

เช่น/home/me/code/project/static/->/srv/www/projectfiles/

เมื่อฉันพยายามคอมมิทตอนนี้ก็ไม่เห็นไฟล์ใด ๆ ที่อยู่ด้านหลัง symlink และพยายามที่จะคอมไพล์ symlink เป็นไฟล์แทน

ฉันจะส่งไฟล์ (เช่น/srv/www/projectfiles/style.css) ที่อยู่หลัง symlink ได้อย่างไร

คำตอบ:


12

วิธีแก้ปัญหาคือให้ / srv / www / projectfiles เป็น symlink ไปที่ / home / me / code / project / static ดังนั้น git ไม่เห็น symlink


ดังนั้นคุณจะกลับตรรกะโดยทั่วไปหรือไม่ เก็บไฟล์ / โฟลเดอร์ที่ต้องการในโฟลเดอร์ Git จากนั้นใส่ symlink ไว้ที่อื่น (ที่ไฟล์ / โฟลเดอร์ดั้งเดิมใช้เพื่ออยู่)
RusI

@Rusl ใช่แน่นอน
user151019

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

การปรับแต่งในเครื่องจะไม่อยู่ในคอมไพล์
user151019

3

หากคุณกำลังใช้ลินุกซ์ผมชอบโดยเฉพาะการแก้ปัญหาให้โดยGitBLSR มันเป็นห้องสมุดที่โหลดผ่าน LD_PRELOAD ซึ่งมีการเชื่อมโยง dereferences ที่โปร่งใสไปยังไฟล์และโฟลเดอร์นอกที่เก็บ

ในการติดตั้งสำหรับบัญชีผู้ใช้ในพื้นที่นั้นทำได้ง่าย:

git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh

สิ่งนี้จะรวบรวมไลบรารีและสร้างนามแฝงดังต่อไปนี้ใน~/.bashrc:

alias git="LD_PRELOAD=/path/to/gitbslr.so git"

การใช้นามแฝงนี้เปิดใช้งานการยกเลิกการเชื่อมโยงแบบโปร่งใส


1
นั่นแย่มาก! แต่มันใช้งานได้ดีมันเยี่ยมมาก ขอขอบคุณ!
เคย์รู้สึกผิดหวังใน SE

แปลก! ฉันชอบมันมาก
Marcos Besteiro López

2

พิจารณาใช้จุดเชื่อมต่อเพื่อเมานต์โฟลเดอร์ปลายทาง (ซึ่งคุณ symlink ปัจจุบัน) เพื่อให้ปรากฏในตำแหน่งที่คุณต้องการภายใต้โครงการคอมไพล์ ฉันใช้วิธีนี้สำเร็จแล้ว


1

ย้ายไฟล์ไปยังโฟลเดอร์และลบ symlink Git ไม่ได้สำรวจ symlink

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


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

1

วิธีแก้ปัญหาอื่น - เพียงคนเดียวที่ฉันพบว่าทำงานได้กับไดเรกทอรีด้วย - คือการเปลี่ยนแผนผังการทำงานคอมไพล์สำหรับการกระทำที่เฉพาะเจาะจง

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