2011-12-16 34 views
5

tôi muốn tạo một kịch bản shell rất đơn giản, mà cuối cùng sẽ được gọi bởi một ứng dụng khác, đó cập nhật một kho git địa phương:Tôi có thể giữ thông tin đăng nhập git trong các biến môi trường không?

#!/bin/bash 

cd $1 
sudo git pull 

Khi thực hiện này, tôi yêu cầu thông tin (tôi kéo từ kho lưu trữ BitBucket riêng).

Tôi có thể (ngắn gọn) lưu trữ thông tin đăng nhập trong các biến môi trường không?

#!/bin/bash 

export GIT_USERNAME=<user> 
export GIT_PASSWORD=<pass> 

cd $1 
sudo git pull 

Ở trên không có tác dụng. Có gì không? Tôi có thể sửa đổi url nguồn gốc theo lập trình nhưng điều đó có vẻ hơi cần thiết.

+4

git không sử dụng bằng chứng xác thực, nó dựa trên việc vận chuyển đang được sử dụng. Bạn đang sử dụng git trên ssh? Nếu vậy bạn nên xem các khóa ssh. –

Trả lời

0

Git không sử dụng bằng chứng xác thực, nó dựa trên việc vận chuyển đang được sử dụng.

9

Tôi biết rằng đó là câu hỏi rất cũ nhưng nếu bạn thực sự cần phải vượt qua tên truy cập và mật khẩu để xác thực cơ bản HTTP bạn chỉ có thể thiết lập helper như thế này:

git config credential.helper '!f() { sleep 1; echo "username=${GIT_USER}\npassword=${GIT_PASSWORD}"; }; f' 

UPDATE: Tôi đã thêm sleep 1 đến chức năng . Trong một số môi trường, nó có thể là cần thiết do điều kiện chủng tộc. Tôi có 2 máy ảo chạy Debian Jessie. Họ có cùng kiến ​​trúc nhưng CPU khác nhau và số lõi khác nhau. Trên một trong những máy trợ giúp này hoạt động tốt mà không cần sleep. Mặt khác thì không. Sau vài giờ gỡ lỗi, tôi chạy strace để xem điều gì đang xảy ra. Và nó kỳ diệu bắt đầu hoạt động. strace chỉ cần thực hiện git một chút chậm hơn.

+0

Cảm ơn rất nhiều! Hoạt động tốt cho các cú đẩy dựa trên HTTP! Đối với SSH tôi cũng sẽ bỏ phiếu cho các phím mặc dù. –

+0

Việc sử dụng dấu chấm than trong ''! F()' làm gì ở đây? Có vẻ như đây sẽ là một tham chiếu đến một lệnh trước đó trong lịch sử. Sử dụng 'bash' để thực hiện những gì trong chuỗi trợ giúp như một lệnh đơn giản gây ra lỗi với cú pháp này. Tôi tò mò tại sao nó hoạt động. – ely

+1

N/m - Tôi thấy bây giờ điều này là duy nhất cho git, nhưng tôi không thể tìm thấy nó trong tài liệu git. Dấu chấm than cho lệnh git xử lý tùy chọn cấu hình chuỗi như là mã trình bao thực thi. Ví dụ: đối với trình trợ giúp thông tin xác thực, nếu nó không xử lý nó như là có thể thực thi, thì nó sẽ cố thêm chuỗi vào đối số 'chứng chỉ' và theo nó bằng các tùy chọn khác được chỉ định trong chuỗi. – ely

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