Làm cách nào để kiểm tra quyền ghi vào kho lưu trữ Git từ xa (“tôi có thể đẩy không?”)


83

Tôi đang xây dựng một ứng dụng khách Git (hơi hạn chế). Để thiết lập kho lưu trữ, bạn nhập URL đến kho lưu trữ từ xa. Tôi muốn kiểm tra xem người dùng có quyền đọc + ghi vào kho lưu trữ đó hay không. Nếu không, tôi trình bày một hộp thoại xác thực.

Tôi kiểm tra quyền truy cập 'đọc' với git ls-remote <url>.

Có cách nào tương tự để kiểm tra quyền truy cập 'ghi' mà không cần sao chép repo trước không? (Tôi biết tôi có thể git clone <url>và sau đó git push --dry-run)


2
Về mặt kỹ thuật, để đẩy một cam kết vào một repo, bạn không cần phải sao chép nó trước. Nhưng hãy nhớ rằng việc đẩy một chuỗi cam kết và cập nhật các tham chiếu từ xa là hai hoạt động khác nhau và bạn có thể có quyền đối với thao tác trước, nhưng không có quyền đối với thao tác sau. Ngoài ra, một số tài liệu tham khảo nhất định có thể không sửa đổi được.
user3159253

'git push --dry-run' được đề cập trong bài đăng này như một cách để kiểm tra quyền ghi khi bạn đã nhân bản. tuy nhiên đối với một số điều khiển từ xa của tôi, điều này sẽ mở ra lời nhắc mật khẩu và bị treo vô thời hạn. dường như không có cách nào không tương tác để kiểm tra xem bạn có quyền ghi hay không, ngay cả khi bạn có bản sao của repo. Làm cách nào để kiểm tra quyền ghi vào kho lưu trữ git, nếu tôi có bản sao của nó?
rektide

Một cách rất dễ dàng để kiểm tra là bạn có thấy biểu tượng 'bút chì' chỉnh sửa ở trên cùng bên phải của README.MD trên trang Mã chính của repo hay không (cuộn xuống nó nếu có một danh sách dài các tệp / thư mục cấp cao nhất) . Rõ ràng là làm điều này khi bạn đã đăng nhập vào Github.
Spike

Câu trả lời:


61

Nếu git repo nằm trong github, hãy mở bất kỳ tệp nào trong repo, sau đó nhấp vào 'chỉnh sửa', github sẽ hiển thị như sau:

Bạn đang chỉnh sửa tệp trong dự án mà bạn không có quyền ghi. Chúng tôi đã tạo một nhánh của dự án này để bạn thực hiện các thay đổi được đề xuất. Việc gửi thay đổi đối với tệp này sẽ ghi tệp đó vào một chi nhánh mới trong ngã ba của bạn, vì vậy bạn có thể gửi yêu cầu kéo. Mã trung tâm tại đây


21
Bạn không sai - Github thực sự cho thấy hành vi này. Tuy nhiên, OP đã yêu cầu một cái gì đó tương tự như git ls-remotecông cụ mới của họ có thể sử dụng, vì vậy giao diện người dùng web Github có thể sẽ không phù hợp với họ.
RJHunter

11
Có nhiều kho lưu trữ git hơn chỉ là kho lưu trữ github;)
René Roth

4
Về GUI, chú giải công cụ cũng có thể cho biết bạn có thể "Chỉnh sửa" hoặc "Chuyển rồi chỉnh sửa" nếu không có quyền truy cập. Điều này đúng với cả Github thích hợp và GH Enterprise.
Scott Prive

1
Forking repo sao chép toàn bộ repo, phải không? Repo có thể rất lớn. Đó dường như là một hoạt động khá nhượng chỉ để kiểm tra mức độ truy cập của bạn là ...
Kyle Delaney

2
@KyleDelaney Bạn không cần nhấp vào nút chỉnh sửa, chỉ cần di chuột qua nó. Nó sẽ hiển thị "Chỉnh sửa tệp này" hoặc "Chỉnh sửa tệp trong nhánh của dự án này" tùy thuộc vào việc bạn có quyền ghi hay không.
joulev

3

Bạn có thể thực hiện git push git+ssh://host.org/path/to/repo some_refmà không cần nhân bản. Nhưng hãy xem bình luận của tôi ở trên


2
Phương pháp này sẽ hoạt động từ một thư mục đang hoạt động với một tham chiếu. Có cách nào để thực hiện việc này mà không cần thiết lập repo giả và tạo cam kết trước không?
Yang Meyer

15
Vâng, ai muốn tất cả những cam kết giả ngẫu nhiên này? Không có cách nào sạch hơn?
Dan Bolser
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.