Quy trình làm việc GIT của một nhà phát triển (chuyển từ FTP đơn giản)


11

Tôi đang cố gắng quyết định xem việc chuyển sang VCS có hợp lý với tôi không. Tôi là một nhà phát triển web duy nhất trong một tổ chức nhỏ (5 người). Tôi đang nghĩ về VCS (Git) vì những lý do sau: kiểm soát phiên bản, sao lưu ngoại vi, kho lưu trữ mã tập trung (có thể truy cập từ nhà).

Hiện tại tôi làm việc trên một máy chủ trực tiếp. Tôi FTP, thực hiện các chỉnh sửa của mình và lưu chúng, sau đó tải lại và làm mới. Các chỉnh sửa thường là các tệp chủ đề / plugin cho CMS (ví dụ Concrete5 hoặc Wordpress). Điều này hoạt động tốt nhưng không cung cấp sao lưu và không kiểm soát phiên bản.

Tôi đang tự hỏi làm thế nào tốt nhất để tích hợp VCS vào thủ tục này. Tôi dự tính sẽ thiết lập máy chủ Git trên máy chủ web của công ty, nhưng tôi không rõ cách đẩy các thay đổi ra khỏi tài khoản khách hàng (thường là VPS trên cùng một máy chủ) - hiện tại tôi chỉ cần đăng nhập vào SFTP với các chi tiết của họ và thực hiện Những thay đổi trực tiếp.

Tôi cũng không chắc chắn những gì hợp lý sẽ đại diện cho một kho lưu trữ - mỗi trang web của khách hàng sẽ có một kho riêng của họ?

Bất kỳ hiểu biết hoặc kinh nghiệm sẽ thực sự hữu ích. Tôi không nghĩ rằng tôi cần toàn bộ sức mạnh của Git, nhưng kiểm soát phiên bản cơ bản và truy cập trên thực tế trên đám mây sẽ thực sự hữu ích.

EDIT: Tôi đã thu hẹp nó xuống hai tùy chọn có vẻ hợp lý nhất. Đầu tiên dựa trên câu trả lời của ZweiBlumen , theo đó các chỉnh sửa được thực hiện trên máy chủ trực tiếp và được cam kết từ đó đến máy chủ Git (bên ngoài). Điều này có lợi thế là quy trình làm việc của tôi sẽ không thay đổi nhiều (có thêm bước thực hiện các cam kết, nhưng nếu không thì nó giống hệt nhau).

Tùy chọn thứ hai là làm việc cục bộ bằng XAMPP, sau đó cam kết thay đổi từ máy cục bộ. Chỉ khi trang web hoạt động, tôi mới tải bài viết đã hoàn thành lên máy chủ web từ máy cục bộ (ngay sau khi cam kết cuối cùng với Git). Về lý thuyết điều này có vẻ ổn, nhưng nếu sau đó trang web yêu cầu sửa đổi và tôi thực hiện chúng trên máy chủ trực tiếp (như tôi thường làm) thì tôi sẽ cần sao chép thủ công các tệp đã thay đổi trong repo cục bộ của mình, sau đó cam kết những thay đổi đó với Máy chủ Git. Điều này có vẻ quá phức tạp và có lẽ là quá nhiều so với quy trình làm việc hiện tại của tôi.

Tôi nghĩ về sự cân bằng tôi sẽ đưa ra lựa chọn số 1 và xem cách tôi tiếp tục.


1
Điều cần nhớ về git (hoặc bất kỳ VCS phân tán nào khác) là tất cả các kho lưu trữ, ít nhất là về mặt kỹ thuật, kho lưu trữ cục bộ của bạn giống như "thực" trên máy chủ trực tiếp hoặc kho lưu trữ dự phòng. Chính sách quy trình công việc của bạn cung cấp cho họ cấu trúc - vì vậy nếu bạn thực sự muốn tiếp tục thực hiện công việc chính trên máy chủ trực tiếp, bạn có thể ...
sắp diễn ra vào

Cảm ơn, đó là điều tốt để biết. Tính linh hoạt vốn có của Git khiến bạn khó có thể tìm ra điểm xuất phát 'thực tiễn tốt nhất' - đó là một điểm mạnh từ POV của người dùng có kinh nghiệm nhưng có thể cho rằng điểm yếu từ một người mới!
melat0nin

Câu trả lời:


3

Những gì tôi làm (với Subversion, nhưng cũng sẽ hoạt động với Git) là cam kết mọi thứ với một kho lưu trữ Subversion, nhưng rõ ràng là chia thành các dự án, nhánh, thẻ khi cần thiết. Sau đó tôi kiểm tra các kho lưu trữ này đến máy chủ trực tiếp. Do đó, khi tôi thực hiện thay đổi trên máy dev của mình và cam kết điều này với kho lưu trữ, thường chỉ đơn giản là một trường hợp cập nhật bản sao đã kiểm tra trên máy chủ trực tiếp để thực hiện các thay đổi trực tiếp. Phần thưởng thêm vào là nếu tôi cần sửa nhanh trên máy chủ trực tiếp, tôi cam kết điều này với kho lưu trữ từ máy chủ và cập nhật bản sao làm việc trên máy dev của tôi.

Tôi chắc chắn có nhiều cách khác để quản lý việc này, nhưng tôi thấy điều này khá đơn giản và tôi hoàn toàn giống như bạn: nhà phát triển duy nhất trong một tổ chức nhỏ (4 người).


1
Cảm ơn vì đã trả lời! Điều đó có nghĩa là bạn kéo ảnh chụp nhanh vào máy cục bộ của mình, thực hiện và cam kết thay đổi, sau đó thực hiện yêu cầu kéo từ máy chủ trực tiếp (bằng cách SSH vào)? Điều gì xảy ra nếu sự thay đổi thực sự nhỏ? Bạn có chạy một máy chủ web địa phương để phát triển? (Tôi không thể trải qua quá trình đó để thay đổi CSS đơn giản .. Tôi sẽ phát điên!)
melat0nin

1
Đối với một thay đổi CSS nhỏ, tôi sẽ thực hiện thay đổi trực tiếp trên máy chủ và sau đó cam kết thay đổi đó với kho lưu trữ từ máy chủ. Khi tôi phải thực hiện một số lượng công việc nghiêm túc hơn trên trang web, sau đó tôi sẽ cập nhật trang web trên máy dev của mình với phiên bản mới nhất của trang web từ kho lưu trữ. Tôi đoán nó không thực sự quan trọng khi bạn thực hiện thay đổi (máy chủ hoặc máy dev) miễn là bạn cam kết nó với kho lưu trữ.
ZweiBlumen

Vì vậy, những công cụ nào bạn sử dụng cho việc này? FTP để thực hiện thay đổi tệp trực tiếp trên máy chủ, sau đó phiên SSH mở dưới nền để thực hiện các cam kết với máy chủ Git bây giờ và một lần nữa?
melat0nin

1
Vâng, về cơ bản là vậy. Trong thực tế, tôi sử dụng Subversion. Chúng tôi có các trang web trên Windows cũng như các máy chủ Linux. Trên Windows tôi từ xa máy tính để bàn lên chúng, thực hiện thay đổi CSS và cam kết sử dụng TortoiseSVN. Trên Linux, tôi sử dụng phiên SSH và vim để thực hiện các thay đổi (nhưng bạn cũng có thể FTP các thay đổi của mình tôi đoán).
ZweiBlumen

Tôi đã đi với đề xuất chỉnh sửa của bạn trên máy chủ sau đó cam kết từ đó thông qua SSH, điều mà tôi đã làm được vài ngày nay. Có vẻ để làm việc thực sự tốt, cảm ơn!
melat0nin

2

Thật dễ dàng để tạo một post-updatehook , nó tự động cập nhật (xuất với git archiveưu tiên bảo mật) thư mục dữ liệu máy chủ web khi bạn đẩy đến một nhánh cụ thể.

Vì vậy, có một kho git được thiết lập ở đâu đó (vì lý do bảo mật tôi sẽ đặt nó trên máy chủ khác với web) với hook như vậy. Tất nhiên bạn sẽ cần máy chủ thử nghiệm để kiểm tra các thay đổi lớn hơn, có thể là trên máy cục bộ của bạn hoặc được cập nhật bằng cách đẩy sang các nhánh khác. Trong cả hai trường hợp, bạn có thể bỏ qua nó để sửa lỗi chính tả và sửa lỗi CSS đơn giản bằng cách thực hiện cam kết và đẩy.


1

Tôi sẽ làm theo các bước sau:

  1. Thiết lập máy chủ từ xa với cặp khóa công khai / riêng phù hợp để đẩy / kéo từ xa
  2. Thiết lập hai nhánh thử nghiệm và phát hành
  3. Phát triển cục bộ với môi trường thử nghiệm trong nhánh thử nghiệm
  4. Khi bạn hài lòng hợp nhất với nhánh phát hành và đẩy đến máy chủ từ xa
  5. Móc máy chủ từ xa để cập nhật lên phiên bản phát hành mới nhất

Thiết lập một repo trên mỗi trang web, để giữ cho chúng không lộn xộn lẫn nhau. Các nhánh riêng biệt cho phép bạn tránh việc khóa phiên bản "tốt" hiện tại bước sang những gì bạn đang làm việc, có thể có hoặc không hoạt động.


Vì vậy, tôi hiểu chính xác - có hai máy chủ (1) cho Git, (2) máy chủ web trực tiếp và một máy phát triển cục bộ. Dev được thực hiện cục bộ sau đó được đẩy đến máy chủ Git có móc để cập nhật máy chủ trực tiếp?
melat0nin

@ melat0nin Đó là một cách để làm điều đó. Bạn có thể có máy chủ trực tiếp kéo từ máy chủ git như một công việc định kỳ. Hoặc, bạn có thể có 2 máy. Máy dev cục bộ và máy chủ web sản xuất trực tiếp. Bằng cách đó, đẩy repo từ máy dev sang máy sản xuất cập nhật lên nhánh phát hành mới nhất bất cứ khi nào bạn đẩy.
Spencer Rathbun
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.