Kiểm soát phiên bản của một trang web: dev / sản xuất tập tin front-end


9

Tôi đang cố gắng nghĩ ra một cách tốt hơn để kiểm soát phiên bản dự án trang web của chúng tôi. Hãy nhớ rằng tôi chỉ là một nhà phát triển phía trước vì vậy tôi không có kiến ​​thức sâu sắc về VCS.

Quy trình làm việc đang thay đổi và thói quen kiểm soát phiên bản trước đây trở nên lỗi thời. Vấn đề chính là có 2 mảng tập tin front-end cho mỗi trang web.

Môi trường dev (ít tệp hơn, js không nén, hình ảnh, v.v.). Môi trường xây dựng, "gulpified" (mọi thứ bị nén và không thể đọc được bởi con người).

Nhưng bạn không thể bán một trang web với các tệp nguồn của nó. Vâng, nó cảm thấy không hoàn toàn đúng.

Có giải pháp là có 2 repos: một bản dựng, một bản phát hành, với gulp gửi các tệp dev đến thư mục bản dựng. Nhưng thật khó để duy trì, với các công ty nhỏ tôi không nghĩ nó tuyệt như vậy. Nó tạo ra rất nhiều repos và mọi người phải quản lý với một vài repos, đôi khi ngay cả với một repo svn, vấn đề phát sinh.

Vì vậy, cũng có giải pháp có 1 repo: các tệp nguồn và các tệp prod trong cùng một svn. Nhưng sau đó, cần phải xóa các tệp nguồn khi trang web đi từ máy chủ dev cục bộ đến máy chủ sản xuất (vì vậy có các tệp khác nhau trong một kho lưu trữ, dựa trên vị trí, dev hoặc sản xuất của nó ..). Từ những gì tôi nghe được, nó không tốt

Cách chính xác để quản lý một luồng công việc phía trước liên quan đến hệ thống kiểm soát phiên bản là gì?

Câu trả lời:


13

Một quy tắc cơ bản của kiểm soát nguồn là bạn chỉ cần đặt các tạo phẩm thủ công bằng văn bản vào repo (các tệp nguồn gốc), mọi thứ có thể được "biên dịch" hoặc "tạo ra" không cần phải được lưu trữ ở đó, vì nó sẽ tạo ra sự dư thừa . Người ta có thể (tùy chọn) lưu trữ các đầu ra / bộ phận trung gian của quá trình xây dựng trong repo (đôi khi còn được gọi là tạo tác), khi các bước để tạo lại chúng không hoàn toàn tự động hoặc cho mục đích lưu trữ, khi các bước xây dựng để tái tạo đầu ra chậm .

Vì vậy, nếu bạn có một quy trình hoàn toàn tự động để tạo các tệp sản xuất từ ​​các tệp nguồn dev của mình, bạn chỉ cần đặt các tệp dev vào kiểm soát nguồn (cùng với các tập lệnh để tạo các tệp sản xuất). Nếu không, thiết lập một quá trình như vậy. Hãy chắc chắn rằng không ai phải loay hoay với các tệp sản xuất theo cách thủ công sau khi chúng được tạo từ nguồn. Nếu bạn muốn triển khai "trực tiếp" từ VCS của mình, hãy đảm bảo rằng bạn có tập lệnh triển khai kéo các tệp nguồn dev ra khỏi kiểm soát nguồn, thực hiện "điều chỉnh" và chuyển các tệp kết quả sang sản xuất trong một bước.

Tất nhiên, nếu bạn muốn sử dụng kiểm soát nguồn cũng như một "bản sao lưu người nghèo" hoặc làm bộ đệm cho các tệp sản xuất của mình, bạn có thể thiết lập một repo thứ hai cho mục đích này và đặt bản sao cấu trúc tệp sản xuất sau khi tạo. Repo này sẽ không phục vụ cho sự phát triển và sau khi nó được thiết lập, bạn không cần phải duy trì thủ công. Vì vậy, hãy đảm bảo rằng sẽ không có các bước thủ công liên quan đến việc tạo bản sao lưu vào "prod repo" này - bao gồm các bước cần thiết vào tập lệnh triển khai để tạo bản sao lưu tự động. Hãy suy nghĩ về việc thêm một tập lệnh sao lưu riêng nếu bạn không thể cấm các thay đổi thủ công đối với sản xuất sau khi triển khai. Bằng cách đó, bạn có thể duy trì quá trình duy trì ngay cả khi bạn có nguồn lực hạn chế.

Và vâng, đây phải là một repo thứ hai, tách biệt nghiêm ngặt, bởi vì nó có một mục đích hoàn toàn khác và một vòng đời khác với bạn dev repo. Bạn chỉ sử dụng nó để sao lưu, không phải để kiểm soát nguồn, đây là một quá trình khác nhau.


điều đó có nghĩa là khi trang web đi vào sản xuất, cần phải xây dựng nó từ máy chủ sản xuất? hoặc có thể chỉ lưu trữ bản dựng (chưa được phiên bản sau đó)
Antonin Cezard

@topleft: Từ "máy chủ sản xuất"? Không nhất thiết, mã nguồn nằm trong repo, bạn có thể xây dựng nó từ mọi nơi mà bạn có quyền truy cập vào kiểm soát nguồn và hệ thống tệp của máy chủ sản xuất. Vì vậy, bất cứ nơi nào bạn thích, từ một máy dev, từ một máy xây dựng decicated, hoặc có thể trực tiếp trên máy prod. Nhưng cũng xem đoạn thêm của tôi sau khi bạn viết bình luận của bạn.
Doc Brown

3
Từ ngữ của bạn là khó hiểu. "Artifacts" thường đề cập đến đầu ra của trình biên dịch hoặc trình tạo, không phải đầu vào.
Daenyth

Điều này không chính xác luôn luôn đúng: đối với các trình biên dịch bootstrapping, bạn có thể cần phải đặt các tệp được tạo trong VCS. Một ví dụ điển hình là các tệp bytecode boot/ocamlchoặc GCC melt/generated/*.cc
MELT

1
@Daenyth: AFAIK từ artifact có nghĩa các bộ phận được sản xuất thủ công trong phát triển phần mềm. Bạn đúng rằng trong một số bối cảnh, người ta nói về "tạo tác", bởi vì những gì trình biên dịch tạo ra gián tiếp là kết quả của hành động lập trình thủ công.
Doc Brown
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.