การรวมคำตอบของ@David Underhillและ@kixorz เข้าด้วยกันฉันสร้างโซลูชัน (ขั้นสุดท้าย) ของตัวเอง
มันเป็นเปลือย Repos และไม่ใช่เปลือย Repos มีความแตกต่างเพียงเล็กน้อยระหว่างกัน แต่ด้วยวิธีนี้ชัดเจนกว่า
BARE REPOSITORY
cd <repo.git>/ # Enter inside the git repo
git config core.sharedRepository group # Update the git's config
chgrp -R <group-name> . # Change files and directories' group
chmod -R g+w . # Change permissions
chmod g-w objects/pack/* # Git pack files should be immutable
find -type d -exec chmod g+s {} + # New files get directory's group id
ที่ไหน:
<repo.git>
คือไดเร็กทอรีที่เก็บเปล่าโดยทั่วไปอยู่บนเซิร์ฟเวอร์ (เช่นmy_project.git/
)
<group-name>
เป็นชื่อกลุ่มสำหรับผู้ใช้ git (เช่นผู้ใช้ )
ไม่ยอมแลก
cd <project_dir>/ # Enter inside the project directory
git config core.sharedRepository group # Update the git's config
chgrp -R <group-name> . # Change files and directories' group
chmod -R g+w . # Change permissions
chmod g-w .git/objects/pack/* # Git pack files should be immutable
find -type d -exec chmod g+s {} + # New files get directory's group id
ที่ไหน:
<project_dir>
คือไดเร็กทอรีโปรเจ็กต์ที่มีไฟล์ .git
โฟลเดอร์
<group-name>
เป็นชื่อกลุ่มสำหรับผู้ใช้ git (เช่นผู้ใช้ )