2011-06-30 30 views
5

Tôi là người mới bắt đầu trong DVCS (Tôi đến từ thế giới SVN) và bây giờ tôi đã thành thạo repo địa phương của mình, tôi muốn thiết lập một máy tính từ xa (Amazon EC2) để giữ các tệp web của mình để tôi có thể dễ dàng cập nhật các ứng dụng web mà không cần FTP hoặc một số sorta điềuLàm thế nào để làm cho Hg/Git một repo từ xa?

tôi muốn kết thúc bằng:

hg push http://hg.domain.com/webserver/hello 

hoặc git

git push myAmazon master 

tôi phải làm gì để cấu hình ở máy chủ từ xa của tôi (cài đặt Hg/Git) làm cho một thư mục một repo sử dụng init và những gì sẽ được tiếp theo?


Có lẽ tôi không phải là 100% rõ ràng với câu trả lời ở trên, vì vậy đây là một câu hỏi đơn giản

Tôi muốn thay thế FTP Upload bằng cách sử dụng Git/Hgpush, làm cách nào tôi có thể thực hiện việc này?

Vì vậy, chúng ta hãy tưởng tượng kịch bản này:

C:\Inetpub\wwwroot\mybrandNewWebApplà gốc rễ của một trang web lưu trữ trong IIS (đây là một máy tính từ xa, ví dụ: trong Amazon EC2), tại thư mục này tôi bắt đầu lập một kho lưu trữ sử dụng git init/hg init.

Làm cách nào tôi có thể định cấu hình kho lưu trữ này từ máy tính xách tay của riêng tôi Tôi có thể thực hiện push remote để "Tải lên thay đổi của tôi"?

Tôi làm cách nào để định cấu hình kho lưu trữ này thành Có thể tiếp cận và có thể đẩy?


Câu hỏi từ đọc tất cả nhận xét?

Tôi có nên tạo thư mục khác làm repo và sử dụng khi đẩy tốt tôi có thể chạy tập lệnh thực sự cập nhật thư mục gốc của trang web không?

+0

tức là bạn muốn sử dụng VCS để triển khai trang web của mình –

+0

Bạn đang sử dụng loại công nghệ trang web nào? Bạn có cần phải xây dựng mã, ví dụ? Bạn có đơn vị kiểm tra? –

+0

@Lasse V. Karlsen ** IIS ** có nghĩa là Windows Server, tôi có thể dễ dàng chạy 'build.exe' và chạy thử nghiệm Đơn vị từ dòng lệnh, nếu tôi cần, tôi chỉ không biết cách thiết lập mọi thứ cho đến repo hoạt động như một điều khiển từ xa:/ – balexandre

Trả lời

1

Đối với Mercurial, bạn cần thiết lập hgweb máy chủ web mà Mercurial đi kèm, ít nhất là trong phiên bản nguồn.

Các bước thực hiện (theo thứ tự có thể không chính xác):

  1. Thiết lập IIS trên máy chủ của bạn
  2. Tải nguồn Mercurial, và làm theo hướng dẫn về các tập tin để cung cấp sẵn trong ứng dụng IIS bạn thiết lập
  3. Cấu hình IIS để chạy chương trình python (hgweb Mercurial là một kịch bản python cgi)
  4. Configure hgweb cho lưu trữ của bạn cần

Có rất nhiều hướng dẫn trên web, không có hướng dẫn nào trong số đó hoàn thành 100% theo nghĩa là nếu bạn theo dõi từng bước, tất cả sẽ hoạt động, nhưng với một lượng nhỏ tinkering nó sẽ hoạt động.

Dưới đây là một vài:


Sửa: Câu trả lời của tôi cho bạn biết làm thế nào để thiết lập một máy chủ web Mercurial mà bạn có thể push to. Vì mục tiêu của bạn là để cập nhật các máy chủ web bằng cách đẩy ra thay đổi của bạn, có những lựa chọn khác:

Tôi có cùng một loại thiết lập, nhưng những gì tôi đã làm như sau:

  1. Tôi tạo ra một tài khoản trực tuyến tại một trong các công ty lưu trữ (tôi sử dụng Kiln, nhưng những người khác sẽ dễ dàng làm)
  2. Sau đó tôi đã định cấu hình kho lưu trữ để ping máy chủ web của mình bất cứ khi nào tôi đẩy vào kho lưu trữ. Về cơ bản, khi tôi đẩy, máy chủ Kiln sẽ gọi một tập lệnh cgi trên máy chủ của riêng tôi với một số thông tin
  3. Cgi-script đó của tôi được ping sau đó thực hiện lệnh bình thường hg pull -u trong bản sao cục bộ và sau đó là ROBOCOPY phản ánh tất cả mọi thứ (trừ một số tập tin gỡ lỗi, và thư mục .hg) vào thư mục trang web chính

Điều này có nghĩa rằng:

  1. tôi không có để lưu trữ kho của riêng tôi
  2. tôi làm không cần phải trải qua những rắc rối khi thiết lập Mercurial/Git của riêng tôi erver
  3. Tôi không cần phải xử lý (đọc: lo lắng về) sự an toàn của thiết lập mà
  4. tôi vẫn nhận được push-to-update-website chức năng
+0

Câu hỏi: Các bước của bạn có cần cài đặt và chạy Mercurial như Web không? Tất cả những gì tôi muốn là tạo một Website công cộng mà tôi đang lưu trữ trong đó một kho lưu trữ, vì vậy từ máy tính của tôi, tôi có thể 'đẩy' các cam kết của mình và cập nhật ứng dụng web ... như FTP, nhưng sử dụng Hg/Git. – balexandre

+0

Có, bạn cần phải cài đặt và chạy kịch bản ứng dụng máy chủ web Mercurial cgi để làm điều này (đối với Mercurial.) Tôi không biết bạn sẽ làm gì cho Git. –

+0

Tôi sẽ chỉnh sửa câu trả lời bằng một tùy chọn khác. –

1

Nếu chạy ssh của bạn trên máy chủ, bạn có thể sử dụng mercurial và git với các giao thức ssh.

Bạn thậm chí có thể tạo ra các kho trên máy chủ như vậy:

hg clone ~/myrepo ssh://[email protected]/hg/clone 
+0

có thể là đường dẫn, tôi sẽ đọc thêm về các giao thức SSH và xem làm thế nào tôi có thể kích hoạt nó trong máy chủ từ xa của mình. – balexandre

+0

@balexandre: Tôi đã thiết lập SSH (máy chủ, sshd) trên các máy Windows có Cygwin trước đây, vì vậy nó không hoạt động. Tuy nhiên, tôi không có ý tưởng nếu nó phù hợp cho các máy Windows Amazon EC2 (mà có vẻ là những gì bạn đang nhắm mục tiêu). Đó là một câu hỏi riêng biệt. ;) – Macke

0

Bạn có thể sử dụng cả hai Mercurial và Git cho mục đích này. Nếu bạn đẩy thứ gì đó từ máy tính của bạn, công cụ sẽ sao chép dữ liệu mới vào máy chủ từ xa.

Vấn đề là dữ liệu chỉ nằm trong kho lưu trữ từ xa nhưng bạn muốn nó ở nơi máy chủ Web có thể nhìn thấy nó, đó là bạn đang thiếu bước "cập nhật" (sao chép dữ liệu từ kho lưu trữ vào Hệ thống tệp của máy chủ web).

Để làm cho nó rõ ràng hơn:

  • commit di chuyển dữ liệu từ hệ thống tập tin địa phương của bạn vào kho lưu trữ tại địa phương.
  • push di chuyển dữ liệu giữa các vị trí lưu trữ (bỏ qua những gì trong hệ thống tệp)
  • update/pull cập nhật hệ thống tệp. Bạn phải làm điều này trên máy chủ web của bạn.

Đề xuất của tôi là viết một tập lệnh nhỏ chạy hg update hoặc git pull mỗi giờ hoặc lâu hơn. Cài đặt tập lệnh đó làm tác vụ trong cửa sổ.

+0

Tôi vẫn đang làm động não trước để tôi có thể kiểm tra các bước cần thực hiện để làm cho kho lưu trữ của tôi "Có thể tiếp cận và có thể đẩy", nhưng đó là ý tưởng hay khi tôi đang ở điểm triển khai. Thxs. – balexandre

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