2012-10-21 21 views
9

Tôi có cài đặt Redmine trên cùng một máy chủ như kho chứa gitolite của tôi.Redmine + Gitolite - Vấn đề với quyền của kho lưu trữ và nhiều hơn nữa

Để liên kết kho của tôi để dụ Redmine của tôi, tôi ở địa phương nhân bản repo với lệnh sau đây:

git clone --bare --local /home/git/repositories/my-repo.git 

Cũng như tôi sao chép thành công repo trên máy chủ, tôi có thể điều hướng thông qua repo trên Redmine, như mong đợi.

Điều là, ngay sau khi tôi làm điều đó, tôi không thể đẩy bất cứ điều gì nhiều hơn để repo từ xa trên máy địa phương của tôi.

Khi tôi cố gắng

git push 

tôi nhận được các lỗi sau đây:

Counting objects: 15, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (7/7), done. 
Writing objects: 100% (8/8), 695 bytes, done. 
Total 8 (delta 6), reused 0 (delta 0) 
fatal: loose object 455f30c5243ec5b5cc698b1e51bdfb23ee6c1b22 (stored in  ./objects/45/5f30c5243ec5b5cc698b1e51bdfb23ee6c1b22) is corrupt 
error: unpack failed: unpack-objects abnormal exit 
To [email protected]:my-repo.git 
! [remote rejected] master -> master (n/a (unpacker error)) 
error: failed to push some refs to '[email protected]:my-repo.git' 

Bất kỳ ý tưởng về điều đó?

EDIT # 1

Các bản ghi gitolite hiển thị như sau:

2012-10-22.10:59:59  13121 ssh  ARGV=drgomesp SOC=git-receive-pack 'my-repo.git' FROM=187.65.248.7 
2012-10-22.11:00:00  13121   access(my-repo, drgomesp, W, 'any'),-> refs/.* 
2012-10-22.11:00:00  13121   trigger,Writable,access_1,ACCESS_1,my-repo,drgomesp,W,any,refs/.* 
2012-10-22.11:00:00  13121 pre_git my-repo  drgomesp  W  any  -> refs/.* 
2012-10-22.11:00:00  13121   system,git,shell,-c,git-receive-pack '/home/git/repositories/my-repo.git' 
2012-10-22.11:00:00  13121 END 

Trả lời

16

tôi quản lý để có được nó làm việc chỉ repo gốc để Redmine, vì cả hai ngồi trên cùng một máy, bằng cách làm theo một số bước đơn giản:

  1. Thêm một kho lưu trữ trên Redmine với repo gốc của kho gitolite của . Đường dẫn sẽ có dạng như /home/git/repositories/my-repo.git.

  2. Ban đầu, Redmine không có bất kỳ điều khoản để đọc các kho lưu trữ, vì vậy chúng tôi giải quyết vấn đề bằng cách thêm người dùng Redmine (thường www-data hoặc apache) vào nhóm git bằng cách chạy usermod -a -G git www-data (nhận thức được cấu hình của máy chủ của bạn, bởi vì đó có thể là một chút khác nhau, theo cách bạn configurated gitolite.

  3. Thay đổi UMASK tài sản trên các tập tin .gitolite.rc, từ giá trị mặc định của 0077-0022, tương đương với 755 (rwxr-xr-x) cho thư mục và 644 (rw-r--r--) cho các tập tin.

  4. Đối với các hợp đồng mua hiện có, bạn có thể cần phải chạy một chmod -R g+rX

Nếu bạn vẫn gặp những rắc rối quyền với Redmine, nơi mà nó sẽ mở ra một 404 thay cho repo trên tab kho, bạn có thể có để chạy một số chmod -R g+rX trên toàn bộ /home/git/repositories, để đảm bảo người dùng Redmine có thể đọc tất cả các cách thức thông qua repos.

+2

Âm thanh tốt. Phản hồi thú vị. +1 – VonC

+1

Tuyệt vời, điều này cũng giải quyết http://stackoverflow.com/q/19122319/41977 – gc5

+1

Cảm ơn gợi ý. Một 'setfacl -R -m git: rX ~ git/repositories /' đã làm thủ thuật cho tôi –

1

Nếu một git repack remote/origin/master không khắc phục vấn đề, kiểm tra umask của bạn (umask 0002) để tránh bất kỳ vấn đề cho phép bằng văn bản, như đã đề cập trong "git: can't push (unpacker error)".

Bên cạnh đó, "Unpacker error Git-pushing from bare repo to staging server" tóm tắt tất cả các điểm khác cần kiểm tra.

+0

Lệnh repack không khắc phục được sự cố.Về umask, không có gì xuất hiện. Tôi không chắc chắn đây là vấn đề về quyền. Bất kỳ lựa chọn thay thế? –

+0

@DanielRibeiro thiết lập 'umask 0002' trên máy chủ vẫn được đề nghị mặc dù, chỉ để xem nếu có bất kỳ mang về vấn đề hiện tại. Hầu hết các lựa chọn thay thế tôi biết được liệt kê trong hai câu hỏi SO tôi tham khảo trong câu trả lời. – VonC

+0

Và làm cách nào để làm điều đó? Chỉ cần thực thi lệnh trên máy chủ? –

Các vấn đề liên quan