Hệ thống kiểm soát phiên bản nào có thể quản lý tất cả các khía cạnh? [đóng cửa]


17

Vài tháng trước tôi đã đào sâu vào Subversion và GIT và thất vọng. Họ xử lý MÃ NGUỒN tốt nhưng không phải là các khía cạnh khác. Ví dụ: một trang web dưới sự kiểm soát phiên bản cần quản lý quyền sở hữu tệp / thư mục, quyền truy cập đọc và ghi tệp / thư mục, Danh sách điều khiển truy cập, dấu thời gian, nội dung cơ sở dữ liệu. và các liên kết bên ngoài. Có một hệ thống kiểm soát phiên bản nào có thể thực hiện đảo ngược hoàn hảo như tải lại từ bản sao lưu cũ không?


12
Có vẻ như bạn muốn một hệ thống sao lưu thay thế?
Macke

2
Bạn đã xem xét việc chạy trang web của bạn dưới OS X trên máy Mac chưa? Time Machine có lẽ là giải pháp sao lưu đơn giản nhất hiện có và giúp bạn dễ dàng quay lại nếu cần.

1
Nếu bạn thực sự quan tâm đến chủ đề này, bạn nên xem nghiên cứu về phiên bản hệ thống tệp và cơ sở dữ liệu phiên bản, vượt ra ngoài hệ thống kiểm soát phiên bản cho mã nguồn.
Jakob

Có gì sai khi viết một chút kịch bản để xử lý những thứ mà scm không xử lý? bằng cách đó bạn có được những gì bạn muốn VÀ có được nó dưới sự kiểm soát nguồn.
Newtopian

Câu trả lời:


44

Bạn đang bối rối về vai trò của một hệ thống kiểm soát phiên bản. Nó không phải và không bao giờ được dự định là một hệ thống sao lưu cho một trang web đang chạy. Nó thực hiện một công việc cực kỳ tốt là quản lý nội dung tĩnh để nó chuyển sang sản xuất một cách có kiểm soát. Với việc sử dụng đúng cách gắn thẻ và kiểm tra tự động, ngay cả các trang web thay đổi nhanh cũng có thể được giữ trong một hệ thống kiểm soát phiên bản.

Một hệ thống kiểm soát phiên bản sẽ có thể cho bạn biết bạn đã nhận được từ trang web trông như thế nào vào tháng trước đến ngày hôm nay (ít nhất là đối với những thành phần nằm dưới sự kiểm soát nguồn). Nó nên bao gồm mọi thứ bạn cần để xây dựng lại trang web (không bao gồm nội dung động). Như những người khác đã lưu ý, mọi thay đổi về quyền và quyền sở hữu phải được viết theo kịch bản và tập lệnh đó có trong kiểm soát phiên bản.

Quyền truy cập cho các trang web thường khá đơn giản. (Về cơ bản, bạn cần đảm bảo rằng máy chủ web có thể đọc tất cả nội dung và viết rất ít nội dung đó.) Ngoại trừ quyền sở hữu thư mục của một vài thư mục cần có thể ghi bởi lật đổ máy chủ web và có thể là git, chắc chắn có thể xử lý quyền. Các thư mục có thể ghi được bởi máy chủ web thường chứa nội dung động (được tạo và cập nhật từ trang web), được quản lý tách biệt với nguồn của trang web.

Nếu tôi được yêu cầu làm việc với một trang web có quyền và ACL phức tạp trên trang web của bạn, tôi sẽ có những lo ngại nghiêm trọng về quy trình được sử dụng để quản lý trang web. Triển khai một hệ thống kiểm soát phiên bản và chuyển ACL sang nó sẽ là một trong những giải pháp tôi sẽ xem xét nghiêm túc.

Nội dung động, chẳng hạn như các mục blog hoặc bình luận, thường được chứa trong cơ sở dữ liệu hoặc kho dữ liệu khác thay vì kiểm soát phiên bản được sử dụng để xây dựng trang web. Kho lưu trữ dữ liệu có thể được sắp xếp để cung cấp kiểm soát phiên bản nội dung của nó (như phần mềm này). Nhiều Wikis sử dụng một hệ thống kiểm soát phiên bản để theo dõi các phiên bản.

BIÊN TẬP:

Khắc phục tôi đang sử dụng là (a) Không có kiểm soát phiên bản nào cả, (b) Trang web sản xuất là trang chính, (c) Lưu trữ mỗi khi có bất cứ điều gì thay đổi, (d) Tập lệnh lưu trữ sẽ loại bỏ rác như ACL và (e) tập lệnh cài đặt sửa các thứ linh tinh khác như quyền truy cập tập tin.

Những vấn đề này có thể được xử lý bằng cách nhập trang web vào hệ thống kiểm soát phiên bản và thay đổi quy trình của bạn để trang web chính được cập nhật thông qua hệ thống đó. (a), (b) và (c) được xử lý trực tiếp bởi kiểm soát phiên bản. Bạn có thể muốn gắn thẻ phát hành để làm cho (c) hoạt động tốt hơn. (d) thường không phải là vấn đề nếu bạn chỉ có hệ thống triển khai thay đổi trang web của mình. Tôi chưa bao giờ cần ACL trên nội dung trang web.

(e) chỉ cần được chạy trên sáng tạo ban đầu và những thay đổi lớn. Nó cũng có thể bao gồm tập lệnh cập nhật trang web từ kiểm soát phiên bản và chạy thường xuyên. Các tập lệnh này có xu hướng khá đơn giản khi bạn giữ cho trang web của bạn trong hệ thống kiểm soát ác cảm.

Nhưng tại sao không ai xây dựng một hệ thống chung để làm việc này?

Bởi vì nó không cần thiết nếu bạn sử dụng hệ thống kiểm soát phiên bản.

Một hệ thống kiểm soát phiên bản COULD theo dõi tất cả những thứ này, nhưng không có gì.

Cả CVS và Subversion đều theo dõi những gì bạn cần theo dõi nếu bạn đang sử dụng chúng. Họ sẽ không theo dõi thứ bạn cần theo dõi vì bạn không sử dụng hệ thống kiểm soát phiên bản, cũng không nên theo dõi. Họ theo dõi những gì bạn cần theo dõi khi bạn đang sử dụng một hệ thống kiểm soát phiên bản.

Tôi đã làm việc với một số trang web quản lý nội dung của họ bằng cách sử dụng kiểm soát phiên bản. Tất cả đều có các yêu cầu khác nhau về trang web dàn dựng, tần suất triển khai và tính đầy đủ của các bản cập nhật. Khi các trang web nằm trong kiểm soát phiên bản, các yêu cầu còn lại tương đối dễ đáp ứng. Tài liệu cho cả CVS và Subversion đưa ra gợi ý cho các phương pháp cập nhật có thể.

Bạn có thể cần ACL để giới hạn quyền truy cập vào các khu vực cụ thể trong nội dung được kiểm soát phiên bản. Tuy nhiên, tôi có xu hướng làm việc trên cơ sở tin tưởng. Kiểm soát phiên bản giúp dễ dàng xem ai đã làm gì khi nào. Nếu bạn không định dạng lại các tệp, có thể dễ dàng nhận được lịch sử chú thích của tệp cho biết ai đã thêm dòng nào khi nào.


+1 vì đã nêu ra lý do tại sao câu hỏi sai ngay từ đầu.
Macke

2
+1 Tuy nhiên, thật tốt khi câu hỏi đã được hỏi để người khác có thể hưởng lợi từ câu trả lời của bạn.
oliver-clare

Một hệ thống kiểm soát phiên bản được cho là cung cấp cho tôi khả năng nói "OK, trên máy tính khác ở đây, hãy xây dựng trang web cho tôi vào ngày 28 tháng 7". Kiểm soát phiên bản hiệu quả hơn so với sao lưu vì nó theo dõi các thay đổi. Nếu không, có, một bản sao lưu hàng ngày sẽ làm công việc OK.
Andy Canfield

Có, cách khắc phục tôi đang sử dụng là (a) Không có kiểm soát phiên bản nào cả, (b) Trang web sản xuất là trang chính, (c) Lưu trữ mỗi khi có bất cứ điều gì thay đổi, (d) Tập lệnh lưu trữ sẽ loại bỏ rác như ACL và ( e) tập lệnh cài đặt sửa các thứ linh tinh khác như quyền tập tin. Nhưng tại sao không ai xây dựng một hệ thống chung để làm việc này? Một hệ thống kiểm soát phiên bản COULD theo dõi tất cả những thứ này, nhưng không có gì.
Andy Canfield

+1: Câu trả lời tuyệt vời. Tuy nhiên, tôi muốn thêm rằng không có hệ thống kiểm soát phiên bản nào theo dõi nội dung đó vì chúng KHÔNG THỂ. Các quyền và tên người dùng là dành riêng cho máy chủ lưu trữ và định dạng của chúng là dành riêng cho hệ thống; không có cách nào công cụ có thể tự động chuyển chúng sang máy chủ khác, đặc biệt là khi nó là hệ điều hành khác.
Jan Hudec

10

Tất cả trong số họ và không ai trong số họ.

Đó là một ý tưởng tồi để có được kiểm soát nguồn để quản lý trực tiếp các chi tiết đó, theo cách mà câu hỏi của bạn bắt đầu.

Tuy nhiên, bạn có thể viết tập lệnh bash (* nix) hoặc tập lệnh powershell (Windows) để đạt được bất kỳ hoặc tất cả các mục tiêu đó. Kịch bản này có thể được lưu trữ trong kiểm soát nguồn.

Sau đó, bạn có thể biến tập lệnh đó thành một trong các tạo phẩm xây dựng của mình và chạy nó như là một phần của việc triển khai.


Điều này. Ý tưởng có tất cả các nguồn là bạn có thể rút chúng ra khỏi VCS của mình và sử dụng chúng để xây dựng thành phẩm.
Blrfl

2

IMHO một hệ thống kiểm soát phiên bản tự nó không được sử dụng theo cách đó.

Nhưng những gì tôi có xu hướng làm là đảm bảo rằng bạn có thể có được một phiên bản từ kiểm soát nguồn, bạn chỉ cần chạy một tệp xây dựng / tệp powershell và mọi thứ sẽ hoạt động trở lại.

Đối với điều này, bạn cần phải:

  • tất cả các thư viện mà ứng dụng của bạn phụ thuộc vào kiểm soát nguồn
  • một tập tin xây dựng thiết lập môi trường của bạn
  • một hướng dẫn về các yêu cầu của môi trường của bạn (bạn không muốn đặt cài đặt máy chủ sql trong kiểm soát nguồn của mình)

1

Tôi tin rằng những gì bạn cần trong trường hợp của bạn là một công cụ quản lý cấu hình . Cái mà tôi đã sử dụng là con rối .

Trích dẫn bạn:

quản lý quyền sở hữu tập tin / thư mục, truy cập đọc và ghi tập tin / thư mục,

Tôi đã thực hiện điều đó với một dòng (đảm bảo người dùng tồn tại, đảm bảo thư mục tồn tại, v.v.) ...

Danh sách kiểm soát truy cập,

Nếu đây là windows ACL thì có các công cụ CM cụ thể cho windows ...

dấu thời gian,

một lần nữa lệnh touch unix trong một dòng trong kịch bản múa rối có thể làm điều này cho bạn.

nội dung cơ sở dữ liệu.

Đó là xây dựng trong nhiều khuôn khổ, một công việc định kỳ đảm bảo mọi thứ đều có mặt khác?

và các liên kết bên ngoài.

Không biết gì về điều đó.

Tất nhiên sau khi bạn viết mã Quản lý cấu hình, bạn có thể muốn đặt mã (hoặc truy xuất mã đó trong các hệ thống có liên quan) trên hệ thống kiểm soát phiên bản. Bạn sẽ không tránh khỏi những điều đó :-).


Tôi không hiểu ý của bạn là gì bởi "dấu thời gian - một lần nữa một lệnh unix trong một dòng trong kịch bản múa rối có thể làm điều này". Trên trang web của tôi, để có được phiên bản trang web, nó sẽ quét toàn bộ sitetree và trả về ngày và giờ của tệp mới nhất. Tôi muốn kiểm soát phiên bản của mình "Checkout" để cung cấp cho các tệp dấu thời gian giống như lúc chúng đăng ký, không được đặt là 'bây giờ'. Làm thế nào để bạn làm điều đó trong một lệnh unix?
Andy Canfield

tất nhiên, bạn đang tìm kiếm "cảm ứng", hãy kiểm tra điều này: en.wikipedia.org/wiki/Touch_(Unix) . Nói chung khi kiểm tra thời gian hiện tại sẽ được áp dụng, nhưng nếu vì lý do nào đó bạn muốn có dấu thời gian khác thì đây là cách thực hiện.
Dimitrios Mistriotis

Tôi thực sự thích lý do của câu hỏi của bạn, bạn muốn tự động hóa càng nhiều càng tốt, đó là "cách đúng đắn", bạn cần một số bí quyết về cách thực hiện và những gì đi đến VControl và những gì không. Tôi ước có nhiều người trong ngành công nghiệp đã suy nghĩ giống nhau ...
Dimitrios Mistriotis

0

Có một hệ thống kiểm soát phiên bản cuối cùng quản lý tất cả các khía cạnh của tất cả các tài liệu kỹ thuật số. Nó được gọi là Xanadu và được tạo ra bởi Theodor Holm Nelson vào năm 1960, ngay cả trước khi những thứ như hệ thống tập tin phổ biến. Vì vậy, trong lý thuyết mọi thứ đều được giải quyết hoàn hảo. Trong thực tế, Xanadu chưa bao giờ được thực hiện như hình dung của Nelson, nhưng nó đã truyền cảm hứng cho nhiều hệ thống chuyên biệt hơn, bao gồm cả hệ thống kiểm soát phiên bản và Web. Các tác phẩm của Nelson vẫn đáng để đọc - và họ có thể trả lời câu hỏi tại sao không có VCS chung nào quản lý tất cả các khía cạnh.

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.