2013-05-02 24 views
13

Làm cách nào để buộc git-client chỉ sử dụng bảng điều khiển/thiết bị đầu cuối. Khi tôi ssh vào máy tính/headless linux từ xa của tôi và cố gắng chạy:sử dụng máy khách git trên máy chủ Linux không đầu

git clone https://[email protected]/xxx/xxx.git

git than phiền và mang lại cho tôi lỗi này: (gnome-ssh-askpass: 2769): Gtk-CẢNH BÁO * *: không thể mở hiển thị:

Tôi không muốn sử dụng giao diện đồ họa cũng như ssh -X. Tôi chỉ muốn cấu hình git-client để chỉ sử dụng thiết bị đầu cuối.

Im sử dụng CentO và nhận ứng dụng git-client với cài đặt git yum.

+0

Bản sao có thể có của ["git push" tạo ra Gtk-WARNING] (http://stackoverflow.com/questions/16077971/git-push-produces-gtk-warning) – Alberto

Trả lời

3

Bạn cần thay đổi lệnh ssh-askpass của mình thành một thứ không sử dụng giao diện người dùng (tại đây là gnome-ssh-askpass như được thấy trong thông báo lỗi).

26

Bạn có thể tắt gnome-ssh-askpass trong phiên hiện tại bằng cách unsetting biến SSH_ASKPASS môi trường:

unset SSH_ASKPASS 

Bạn có thể có thể thêm nó vào .bashrc hoặc .profile của bạn với một tấm séc có điều kiện xem người dùng đăng nhập bằng SSH. Một cái gì đó như:

[ -n "$SSH_CONNECTION" ] && unset SSH_ASKPASS 

BTW, someone else cũng đã phàn nàn về hành vi của git của giản gọi chương trình SSH_ASKPASS một cách mù quáng mà không xác định nếu nó là một phiên GUI hay không. Nếu bạn đọc toàn bộ chuỗi, nó sẽ giải thích rằng không thể sử dụng biến môi trường DISPLAY để phát hiện điều này. Ngoài ra không có đề cập đến việc liệu miếng vá đó có được chấp nhận hay không.

+0

bạn có thể xây dựng thêm một chút về [-n "$ SSH_CONNECTION"] ?? khung vuông có nghĩa là gì ?? Vỏ bash của tôi dường như không chấp nhận chúng. –

+0

@WeishiZeng - Dấu ngoặc vuông cho biết biểu thức kiểm tra.Lệnh này kiểm tra xem nếu shell hiện tại đang chạy trong một phiên SSH, và nếu vậy, hãy bỏ biến môi trường SSH_ASKPASS. Thông tin thêm về các biểu thức kiểm tra tại đây: http://linux.die.net/man/1/test – Tuxdude

2

Xuất

GIT_ASKPASS=true 

sẽ vô hiệu hóa bất kỳ nhắc.

Bắt đầu với Git 2.3, bạn có thể sử dụng

GIT_TERMINAL_PROMPT=0 

hoặc viết một kịch bản ngắn mà không echo quit=1 và sử dụng nó cho core.askpass.

+0

Tôi sử dụng HTTPS chứ không phải SSH. Sau nhiều nghiên cứu "xuất GIT_ASKPASS = true" trước khi "git pull" là thứ duy nhất làm việc cho tôi. Nâng cấp lên GIT 1.8 có thể hoạt động tốt nhưng đây không phải là một lựa chọn cho tôi. – user1097111

5

Dựa trên câu trả lời Tobu, tôi đã kết thúc với điều này trong tôi ~/.bashrc - Tôi đoán bạn sẽ muốn nó trong ~/.bash_profile nếu bạn đang sử dụng git từ một phiên ssh:

export GIT_ASKPASS= 

mà dường như để ngăn chặn sự gây phiền nhiễu hộp thoại gnome-ssh-askpass, sử dụng lời nhắc mật khẩu CLI.

Unsetting SSH_ASKPASS, đó là lời khuyên có vẻ phổ biến nhất, có lẽ là có thể có một số tác dụng phụ không mong muốn.

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