tôi đã thấy:Chạy lệnh git trên điều khiển từ xa?
- How to run GIT commands on remote repository - "SSH vào máy chủ" hoặc "
git fetch
;gitk --all
" - Run git commands on remote working tree (GIT_WORK_TREE=/path) - câu trả lời là về
git push --tags
- How to "git show" on a remote repo? - "Sử dụng git fetch để có được điều khiển từ xa lịch sử, sau đó lấy lại tệp từ kho lưu trữ đối tượng cục bộ. "
- How to run git command remotely? - "
ssh [email protected] "cd my/repo/path && git show"
" - How can I manually run the hook post-receive on git? "Một móc là một kịch bản shell thực thi Bạn có thể thực hiện nó từ dòng lệnh nếu bạn cần phải chạy nó bằng tay, mặc dù xây dựng inuput stdin dự kiến là hơi tẻ nhạt nếu repo của bạn. có nhiều hơn một đầu (nghĩa là, bạn sử dụng các nhánh). "
- Detecting changes to remote branch - "Không theo dõi các tệp trong hoạt động bên trong của git theo cách thủ công. Sử dụng git để kiểm tra mọi thứ cho bạn. Trong trường hợp này
git rev-parse --verify origin/master
sẽ hiển thị cho bạn SHA bản sao gốc/bản gốc của bạn vàgit ls-remote origin master
để nhận SHA từ xa. " - Commit history on remote repository - "
git log remotename/branchname
- Bạn không thể kết nối trực tiếp với máy chủ để kiểm tra nhật ký ở đó, những gì bạn làm là tải trạng thái của máy chủ xuốnggit fetch
và sau đó xem nhật ký của các nhánh từ xa."
Đánh giá của thành viên này, cho những gì tôi muốn làm, tôi phải đăng nhập qua ssh
và chạy một kịch bản trên máy chủ từ xa; nhưng tôi đã hy vọng cho một giải pháp tích hợp git hơn, vì vậy hãy để tôi giải thích những gì tôi muốn làm.
Tôi có một repo từ xa, đó là git-svn; sau đó tôi có một repo git-chỉ địa phương mà là một bản sao của điều khiển từ xa. Vì vậy, địa phương có tham chiếu đến URL từ xa trong remote.origin.url
(xem qua git config --list
).
Điều tôi muốn làm, chạy tương đương với git svn log
(có thể với một số xử lý hậu kỳ) trên điều khiển từ xa, nhưng với cuộc gọi được bắt đầu từ máy địa phương/repo - và nhận lại kết quả, máy địa phương/repo. Tất nhiên, git-svn
thậm chí có thể không được cài đặt trên máy cục bộ, điều đó có nghĩa là chỉ có điều khiển từ xa mới có thể hiểu được lệnh như vậy.
Tôi sẵn sàng mã hóa móc cho repo từ xa - nhưng theo như tôi có thể thấy, móc chỉ có thể chạy ở các sự kiện được chỉ định (ví dụ: pull
, update
...) - bạn không thể gọi chúng một cách tùy ý: Tôi nhớ, một khi tôi đã phát triển một kịch bản post-update
; và để gỡ lỗi nó, tôi đã phải đặt nó để trả về một lỗi luôn, và sau đó tôi sẽ "đẩy" một cam kết "giả", mà có thể chạy kịch bản, và khi tiếp nhận lỗi, roll-back repo - tất nhiên, đây không phải là cách tôi tưởng tượng kịch bản từ xa nên chạy.
Một điều khác có thể là viết mã bí danh cho repo cục bộ, sau đó gọi SSH theo số remote.origin.url
- có thể điều đó sẽ làm cho hoạt động của git svn log
từ xa dễ dàng hơn một chút?Cuối cùng, đây là câu hỏi của tôi - tôi có những tùy chọn nào để chạy một lệnh tương đối tùy chỉnh git
(như git svn log
hoặc git
bí danh được định nghĩa từ xa) trên repo từ xa, bằng cách tận dụng tối đa dữ liệu đã có có sẵn trong repo địa phương (có nghĩa là, tôi muốn tránh viết một tập lệnh bash
, với các đường dẫn/URL được mã hóa lặp lại, sẽ gọi ssh
và thực hiện bất kỳ điều gì cần thiết trên điều khiển từ xa) - có thể, theo cách tương tự như điều khiển từ xa post-update
git
móc trả về giá trị của nó cho người gọi địa phương, bắt đầu bằng "remote:"?
Cảm ơn vì điều đó, @GregHewgill - sự nghi ngờ của tôi nữa, tốt để xác nhận; mặc dù tôi đã hy vọng có thể có một cơ chế cho, ví dụ, gọi các bí danh git được xác định từ xa, điều này sẽ làm cho tác vụ này được tích hợp nhiều hơn/dễ dàng hơn nhiều. Chúc mừng! – sdaau