2011-09-27 5 views
45

Tôi xin lỗi nếu điều này hiển nhiên hoặc dễ dàng, tôi đã xem xét một số hướng dẫn git/github và đọc các bài viết khác, nhưng tôi muốn hãy chắc chắn rằng những gì tôi đang làm là đúng.Cách thích hợp để sử dụng Git/GitHub - Hệ thống PHP với máy chủ Dev/Testing/Production

Tôi muốn kết hợp VC (vì lý do hiển nhiên) vào nhóm phát triển và quy trình phát triển của mình.

quá trình phát triển hiện tại (sử dụng Dreamweaver):
* Nhận vé (hoặc trật tự công việc)
* Tải tập tin trên máy chủ Phát triển
* Thực hiện thay đổi vào file
* nộp Tải lên trở lại máy chủ phát triển
* Những thay đổi thử nghiệm/kiểm tra
* Gửi đến máy chủ sản xuất


tôi đang cố gắng tìm ra cách để làm cho developme mới của chúng tôi nt quá trình với việc sử dụng Git.

Tôi đang chuyển sang PHPStorm (đây là một IDE PHP thực tế có tích hợp trực tiếp với Git).

Nó sẽ là một cái gì đó giống như

  • Nhận vé (hoặc trật tự công việc)
  • Checkout/Cập nhật/Tải file (s)
  • Thay đổi tập tin
  • tập tin tải lên (mà tôi giả định là cũng là thư mục làm việc hiện tại ...?)
  • Vào cuối ngày, hãy thực hiện cam kết
  • Xây dựng tập lệnh gửi dữ liệu đến máy chủ thử nghiệm (buil hàng đêm d)

Hoặc nó sẽ là tốt hơn để làm điều gì đó như

  • Nhận vé (hoặc trật tự công việc)
  • Checkout/Cập nhật/Tải file (s)
  • Thay đổi tập tin
  • Tải lên tệp/cam kết
  • Có xây dựng tập lệnh gửi dữ liệu đến máy chủ thử nghiệm (bản dựng hàng đêm)

Hoặc có cách nào khác không? Có một chút rắc rối khi hiểu được dòng chảy tối ưu là gì?

Mọi trợ giúp sẽ được đánh giá cao.


Sửa

Tôi đang cố gắng xem nếu nó là tốt nhất để có một phiên bản của máy chủ tại địa phương (mỗi nhà phát triển), và nếu như vậy, làm thế nào mà làm việc nếu bạn có 7 hoặc lâu hơn chi nhánh?

Nếu không, bạn xử lý 7 hoặc nhiều chi nhánh với họ trên web như thế nào? Bạn có tập tin FTP hoặc sử dụng Git Hooks để cập nhật tự động không?

Cập nhật 07/26/2012

Sau khi làm việc thành công với Git cho khá trong một giờ tôi đã làm theo mô hình phân nhánh này với thành công rực rỡ: A Successful Git Branching Model

Câu trả lời cho trên được có - chắc chắn phải có phiên bản máy chủ cục bộ.

+4

Đây là lựa chọn phổ biến để quản lý chi nhánh và luồng công việc của bạn: http://nvie.com/posts/a-successful-git-branching-model/ –

+0

@ Mike - đó là một mô hình tuyệt vời và tôi dự định sử dụng nó. Bạn có biết họ làm việc như thế nào không? Ý tôi là ... họ có một máy chủ riêng biệt hay một phần của thiết lập máy chủ cho mỗi chi nhánh hay mọi người đều có bản sao máy chủ cục bộ trên máy của họ và chúng hoạt động trong mỗi nhánh hoặc cách hoạt động? –

Trả lời

67

Giả sử bạn có máy chủ trực tiếp và máy chủ phát triển, tôi sẽ thực hiện điều gì đó dọc theo các dòng này.

Trước khi thậm chí bắt đầu với một chu kỳ phát triển tôi ít nhất sẽ có hai nhánh:

  1. Thạc sĩ - máy chủ phát triển chạy trên nhánh này
  2. Ổn định - máy chủ trực tiếp chạy trên chi nhánh này.

Vì vậy, nếu một nhà phát triển được một vé hoặc một trật tự công việc anh/cô ấy sẽ thực hiện các thao tác sau:

  1. git pull nguồn gốc chủ
  2. git branch featureBranch (có tên là id vé hoặc mô tả tốt cho đơn đặt hàng công việc)
  3. tính năng thanh toán gitBranch
  4. Thực hiện các thay đổi sẽ thực hiện thay đổi mong muốn. Cam kết thường xuyên là cần thiết. Làm điều này bởi vì bạn sẽ tạo ra lịch sử có giá trị. Ví dụ, bạn có thể thử một cách tiếp cận cho một vấn đề và nếu nó không hoạt động, hãy từ bỏ nó. Nếu một ngày sau đó bạn nhìn thấy ánh sáng và muốn áp dụng lại các giải pháp, đó là trong lịch sử của bạn!
  5. Khi đối tượng địa lý được phát triển đầy đủ và được thử nghiệm tại địa phương, chủ nhân thanh toán.
  6. git merge featureBranch
  7. git push nguồn gốc chủ
  8. Kiểm tra các thay đổi được áp trên máy chủ phát triển của bạn. Đây là thời điểm để chạy mọi thử nghiệm bạn có thể nghĩ đến.
  9. Nếu tất cả đang hoạt động, hãy hợp nhất đối tượng địa lý hoặc sửa thành nhánh ổn định. Bây giờ, thay đổi này là trực tiếp cho khách hàng của bạn.

Bắt mã trên máy chủ

Việc cập nhật các máy chủ không phải là một vấn đề. Về cơ bản tôi sẽ thiết lập chúng như người dùng giống như bạn là nhà phát triển. Tại công ty của tôi, chúng tôi đã thiết lập máy chủ là người dùng chỉ đọc. Về cơ bản có nghĩa là các máy chủ không bao giờ có thể đẩy bất cứ điều gì nhưng luôn có thể kéo. Thiết lập này không phải là tầm thường mặc dù, vì vậy bạn cũng có thể xây dựng một webinterface đơn giản mà chỉ đơn giản là chỉ cho phép một git kéo.Nếu bạn có thể giữ các nhà phát triển của bạn từ làm công cụ trên hiện thực sống bạn đang an toàn :)

[EDIT]

Để đối phó với những câu hỏi cuối cùng hỏi trong các ý kiến ​​của phản ứng này:

tôi không biết nếu tôi hiểu câu hỏi của bạn một cách chính xác, nhưng về cơ bản (đơn giản một chút) đây là cách tôi sẽ làm điều này, là tôi trong giày của bạn. Example setup

Máy kiểm tra (hoặc webroot hoạt động như thử nghiệm triển khai) có mã nguồn dựa trên kho git có nhánh chính đã được kiểm tra. Trong khi tạo kho lưu trữ này, bạn thậm chí có thể loại bỏ tất cả các tham chiếu khác đến tất cả các nhánh khác, do đó bạn sẽ chắc chắn rằng không thể kiểm tra một nhánh sai trong kho lưu trữ này. Vì vậy, về cơ bản máy thử nghiệm có kho lưu trữ Git chỉ với một nhánh chính được kiểm tra.

Đối với các máy chủ trực tiếp, tôi sẽ thực hiện chính xác như cũ, nhưng lần này với nhánh ổn định đã được kiểm tra. Nhà phát triển nên có một kho lưu trữ cục bộ được nhân bản trong đó tất cả các nhánh tồn tại. Và triển khai cục bộ của phần mềm bạn xây dựng. Phần mềm này lấy nguồn từ kho lưu trữ git cục bộ. Nói cách khác: từ chi nhánh hiện đã được kiểm tra trong kho lưu trữ này.

mã hóa thực tế

Khi một tính năng mới đang bị truy nã, một chi nhánh tính năng địa phương có thể được thực hiện dựa trên tổng thể hiện nay. Khi chi nhánh được kiểm tra, các thay đổi có thể được thực hiện và được kiểm tra cục bộ bởi nhà phát triển (vì phần mềm hiện đang chạy trên nguồn của nhánh tính năng).

Nếu mọi thứ dường như theo thứ tự, các thay đổi sẽ được hợp nhất từ ​​chi nhánh tính năng thành chính và được chuyển đến "máy git" của bạn. "github của bạn" để nói chuyện. Thử nghiệm bây giờ có thể kéo các thay đổi để mọi kiểm tra cần thiết có thể được thực hiện bởi QA. Nếu họ quyết định mọi thứ đều ổn, nhà phát triển có thể hợp nhất các thay đổi từ chủ thành ổn định và đẩy lại.

Tất cả những gì còn lại bây giờ là kéo mẫu máy trực tiếp của bạn.

+0

Cảm ơn bạn rất nhiều vì câu trả lời đó - rất hữu ích. Từ quan điểm của máy chủ, cách tải lên/tải xuống các tệp hoạt động như thế nào? Như để kiểm tra trong PHP tôi cần phải thực sự nhìn thấy nó trên máy chủ (rõ ràng), bất cứ lúc nào tôi đang làm việc chỉ cần sử dụng máy chủ phát triển (và được FTP như tôi thường làm gì?) Cảm ơn! –

+0

Từ quan điểm máy chủ của xem, tôi muốn họ git kéo có thông tin. Tôi sẽ thêm thông tin chi tiết hơn vào câu trả lời chính nó – hoppa

+0

Cảm ơn bạn đã cập nhật, điều đó thật tuyệt, nhưng bạn có kích hoạt máy chủ-kéo mỗi lần bạn cập nhật tệp của mình (nói về máy chủ phát triển) không? Tôi biết làm thế nào máy chủ sản xuất của tôi sẽ kết thúc (Tôi sẽ sử dụng một máy chủ CI), nhưng chỉ cho những thay đổi nhanh chóng về phát triển là những gì tôi đang xem xét. Hoặc bạn có một thiết lập móc để mỗi khi một cái gì đó là cam kết trên chi nhánh phát triển, nó kéo nó (có vẻ như có thể làm việc miễn là nó khá tức thời) –