2009-07-30 48 views
5

Tôi thường xuyên sshing vào một máy chủ, chuyển sang một thư mục cụ thể và chạy svn cập nhậtTự động cập nhật svn

Tôi đang nghĩ rằng có lẽ là một cách rất dễ dàng để tự động hoá này, vì vậy tôi có thể đơn giản cụ thể một thư mục con khi tôi chạy kịch bản và nó sẽ đăng nhập thông qua SSH, cd vào thư mục bên phải và chạy svn-update.

Đây có phải là công việc dành cho capistrano hoặc có thể là một tập lệnh bash đơn giản thực hiện công việc không?

+3

Đó là một công việc để thực hiện. ssh user @ remote 'cd/path/tới/project && svn update' – LiraNuna

+0

Cảm ơn, tôi đã giả mạo tập lệnh này một chút và nó sẽ cập nhật khi tôi chạy ./update-devsite :) – Tom

Trả lời

5

Có vẻ như một công việc cho cron. Execute crontab, và thêm một mục như vậy:

 
#min hour date month day command 
0 * * *  * ssh [email protected] '(cd path/to/working/copy; svn update)' 

Bạn có thể cần phải thiết lập ssh passwordless authentication with ssh-agent để nó sẽ không nhắc.

EDIT (mỗi ý kiến ​​dưới đây):

Giả sử bạn có đủ quyền để làm như vậy, chạy

 
ssh [email protected] crontab -e 

Sau đó thêm một mục như vậy:

 
#min hour date month day command 
0 * * *  * (cd path/to/working/copy; svn update) 

Bạn có thể bỏ qua một phần phía trên bản chỉnh sửa, trừ khi máy chủ của bạn không cho phép bạn sử dụng cron.

+0

Tại sao không có cron-job chạy trên máy mục tiêu? – innaM

+0

Đó là một câu hỏi rất hay ... Tôi đã ở trong tình huống tương tự, nơi tôi có đủ đặc quyền trên máy chủ để chạy "cập nhật svn", nhưng không đủ đặc quyền để tạo các công việc cron của riêng tôi, và đơn giản giả định rằng Tom đang ở trong một sitution tương tự . Tuy nhiên, bây giờ mà bạn mang nó lên, đó là một giả định ngớ ngẩn để làm ... nó chắc chắn sẽ tốt hơn để chạy cron job trên máy tính của máy chủ. –

2

Có lẽ bạn nên tự hỏi tại sao bạn thực hiện hành động này?

Máy chủ xây dựng như CruiseControl hoặc Hudson có giải quyết được trường hợp tổng quát hơn (biết khi nào một cam kết svn đã được thực hiện) không?

Nếu bạn cần giám sát trên máy chủ svn cụ thể và bạn có quyền truy cập quản trị, bạn có thể bật móc sau cam kết cho máy chủ, ví dụ để gửi cho bạn email trên mọi cam kết (hoặc chỉ trên một số cụ thể loại cam kết).

Sẽ hữu ích nếu bạn có thể làm rõ tình huống của mình.

0

tập lệnh bash đơn giản sẽ làm điều đó, thêm lệnh svn update vào tệp/etc/profile của bạn.

Xem chế độ xử lý tập lệnh here for bash login.

Nếu bạn muốn chạy nó từ một hộp khác (tức là không đăng nhập), hãy nhớ rằng ssh sẽ không thoát nếu có quá trình đang chạy, vì vậy bạn có thể chạy bản cập nhật dưới nền, với tất cả chuyển hướng đến/dev/null.

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