2010-06-01 32 views

Trả lời

153

Một số công cụ thời gian gần đây được bổ sung vào Git wiki:

git-ftp by René Moser is a simple shell script for doing FTP the Git way. Use git-ftp.sh to upload only the Git tracked files to a FTP server, which have changed since the last upload. This saves time and bandwith. Even if you play with different branches, git-ftp.sh knows which files are different. No ordinary FTP client can do that.

git-ftp by Edward Z. Yang is a simple script written in python for uploading files in a Git repository via FTP, only transferring new files and removing old files.

+0

thats perfect, thanks – Roch

+20

Các bạn đã thử cả hai? Bạn thích cái nào hơn? – trusktr

+2

sử dụng git-ftp, có cách nào để chỉ đẩy thư mục con (ví dụ: thư mục xuất bản của bản mẫu html5) vào thư mục ftp được chỉ định không? – gang

0

Nếu bạn đang đưa mã vào sản xuất, tôi khuyên bạn nên sử dụng "trình cài đặt" chẳng hạn như gói RPM để cài đặt mã của bạn. Bằng cách đó, nó sẽ là phiên bản được đóng dấu và bạn sẽ có thể tận dụng gói cài đặt để hỗ trợ các bản cập nhật cho mã sản xuất. Git không thực sự được thiết kế để hỗ trợ cài đặt sản xuất, nó được thiết kế để theo dõi các thay đổi đối với chính mã đó.

Trong mọi trường hợp, với một .RPM (hoặc EXE hoặc bất kỳ) được xây dựng, bạn chỉ có thể FTP nó vào hệ thống sản xuất và cài đặt nó giống như bất kỳ gói nào khác.

+5

Vâng, git có thể tận dụng khá tốt cho mục đích này trong thực tế. Hãy kiểm tra thẻ và tạo các móc sau, sau khi hợp nhất, sau khi hợp nhất để xử lý mọi thủ tục cài đặt cần thiết. Chúng tôi đã từng sử dụng gói RPM nhưng sau khi chuyển sang git, nó chỉ đơn giản là quá mức cần thiết. – d11wtq

0

Thêm nó làm điều khiển từ xa, sau đó bạn có thể đẩy nó, tuy nhiên chỉ cần đẩy mã là không đủ, nó cần phải được hợp nhất với cây làm việc. Cách dễ nhất là để đi theo cách khác quanh, có một cây làm việc trên máy chủ và lấy và hợp nhất vào đó.

5

Đó không phải là điều mà git dành cho, nói đúng. Tuy nhiên, nếu nguồn của bạn là thứ không cần biên dịch hoặc xử lý, hãy nói một trang web bao gồm hoàn toàn tệp html và javascript và các loại tương tự, bạn có thể sao chép repo trên máy chủ web của mình và sử dụng git pull từ máy chủ giữ cho nó luôn cập nhật. Lưu ý, tôi sẽ cấu hình máy chủ web của bạn để ẩn thư mục git và như vậy. Và đó mới chỉ là khởi đầu của những lo ngại về an ninh.

Nếu bạn có bất kỳ loại biên soạn hoặc chế biến, bạn nên bắt đầu xem xét Ant, Maven, BuildR, SBT vv

+27

Vấn đề duy nhất với điều này là khi bạn không có quyền truy cập vào máy chủ sản xuất, tức là nó có thể là lưu trữ được chia sẻ đơn giản, chỉ với quyền truy cập FTP. –

10

Nếu bạn đang trên một mac và có Transmit, tôi muốn giới thiệu kịch bản git-tranmit sau đây (https://gist.github.com/379750). Nó sử dụng DockSend để gửi chỉ các tập tin cập nhật mới nhất. Nếu bạn không quen với DockSend, hãy xem http://www.panic.com/blog/2010/11/15-secrets-of-transmit/.

Setup:

  1. cp git-transit/usr/sbin /.
  2. cd/usr/sbin
  3. chmod + x git-truyền
  4. Cài thả gửi cho các ứng dụng trực tiếp của bạn
  5. Run git-truyền trong kho git của bạn.
+1

Kịch bản này khá vụng về việc chọn 'tệp được cập nhật lần cuối'. Kiểm tra [ngã ba này] (https://gist.github.com/quickshiftin/8809435) để có giải pháp thanh lịch hơn. – quickshiftin

+0

Ngoài ra, bạn có thể chỉ truyền các tệp được theo dõi và không được theo dõi. Đây là một tập lệnh nhỏ mà chỉ làm như vậy: https://gist.github.com/borisdiakur/37b8f512f6f8865b79c7 – borisdiakur

1

Có tập lệnh Ruby tại đây - Ruby git-deploy via FTP or SSH chỉ tải lên các tệp đã thay đổi trong git repo qua FTP hoặc SSH.

Như đã đề cập trong câu trả lời khác, dưới đây là Python git-ftp.py script thực hiện điều tương tự.

Và đây là phiên bản tệp shell của git-ftp.

Ngoài ra còn có một dự án đá quý Ruby được gọi là git-deploy cho phép bạn thiết lập triển khai tùy chỉnh qua điều khiển từ xa bằng cách sử dụng lệnh git push, giống như các dịch vụ Heroku và Azure.Đối với điều này, bạn có thể cần phải viết các phương thức tùy chỉnh để triển khai thông qua FTP và tôi nghĩ rằng nó giả sử bạn có quyền truy cập SSH vào máy chủ sản xuất của mình.

13

Nếu bạn thích giao diện đồ họa, sử dụng SourceTree, bạn có thể dễ dàng thiết lập một hành động Custom sử dụng git -ftp được đề cập ở trên. Một mô tả ngắn gọn về thiết lập (dành cho Mac) tại Push a Git repository to an FTP

enter image description here

+2

hình ảnh thực sự tuyệt vời, bạn đã tạo ra nó chưa? – Julix

+0

@Julix Đối với bài viết được đề cập. – Geri

9

tôi đã tìm thấy PHPloy một công cụ tuyệt vời cho việc gửi Git của bạn cam kết đến các máy chủ từ xa thông qua FTP. Nó hoạt động từ dòng lệnh và được viết bằng PHP (và thậm chí phát hiện các thay đổi trong mô-đun con).

https://github.com/banago/PHPloy

git commit ... 
phploy -s staging 
phploy -s production 

Xong!

(Disclaimer: sau khi sử dụng nó trong một thời gian bây giờ tôi đã đóng góp một số bản vá lỗi mã và cải tiến, làm cho nó tương thích với Windows.)

+1

Rất dễ tìm, trông đơn giản và đủ mạnh mẽ, tôi chắc chắn sẽ dùng thử. – GTCrais

0

Tôi đã phải vật lộn rất nhiều để tìm ra điều này. Tôi đã tìm ra cách dễ dàng để thực hiện việc này từ nhiều nguồn khác nhau (git-ftpINSTALL, git-ftpUPLOAD, git-ftpIssue, git-ftpPUSH). Bạn có thể đọc để tham khảo nhưng không có nhu cầu vì tôi đã đề cập từng bước quá trình dưới đây.

Điều đầu tiên đầu tiên: Cài đặt git và cuộn tròn sử dụng bia trên MAC OS

brew install git 
brew install curl --with-ssl --with-libssh2 
brew install git-ftp 

Chạy các lệnh sau:

git clone https://github.com/git-ftp/git-ftp.git 
cd git-ftp 
git tag # see available tags 
git checkout <tag> # checkout the latest tag by replacing <tag> 
sudo make install 

Đang cập nhật sử dụng git

git pull 
git tag # see available tags 
git checkout <tag> # checkout the latest tag by replacing <tag> 
sudo make install 

Cài đặt

git config git-ftp.url YourFtpServerName.Net 
git config git-ftp.user FtpUserName 
git config git-ftp.password YourPassword 

Tải lên tất cả các file

git ftp init 

Hoặc nếu các tập tin đã có

git ftp catchup 

làm việc và triển khai

echo "Hello StackOverflow" >> index.txt 
git commit application/libraries/index.txt -m "I love StackOverflow" 
git ftp push 

Nếu có một lỗi: chỉ số pathspec '. txt 'không khớp với bất kỳ tệp nào đã biết đến git. Nó có nghĩa là tệp chưa được dàn dựng, vì vậy hãy thêm tệp và sau đó thử cam kết.

git add application/libraries/index.txt 
git commit application/libraries/index.txt -m "I love StackOverflow" 

Hy vọng điều này sẽ hữu ích.

2

Bạn có thể thử FTPloy ...

https://ftploy.com

"Push changes to GitHub or Bitbucket."

"Deploy Changes automatically to your server"

Bạn có một dự án miễn phí để thử nó ra với. Tôi hiện đang sử dụng cho một trang web php nhỏ và nó hoạt động khá tốt. Một vài lỗi trên trang web, nhưng nó là một dự án hoạt động nên ít nhất họ đang làm việc trên nó.

+1

Tôi đã đăng câu trả lời này sớm. FTPloy không hoàn toàn là 'sản xuất đã sẵn sàng' và có rất nhiều lỗi. Tôi không thể làm cho nó hoạt động được. Tôi đang sử dụng DeployHQ hoạt động rất tốt. –

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