Git có nên được sử dụng cho tài liệu và quản lý dự án? Mã có nên ở trong một kho lưu trữ riêng biệt?


68

Tôi đang bắt đầu một kho lưu trữ Git cho một dự án nhóm. Liệu có ý nghĩa gì khi lưu trữ tài liệu trong cùng kho Git dưới dạng mã - có vẻ như điều này mâu thuẫn với bản chất của luồng sửa đổi git.

Dưới đây là tóm tắt câu hỏi của tôi:

  • Là kiểu sửa đổi Git sẽ gây nhầm lẫn nếu cả mã và tài liệu được kiểm tra vào cùng một kho lưu trữ ? Kinh nghiệm với điều này?

  • Git có phù hợp để kiểm soát sửa đổi tài liệu không?

  • Tôi KHÔNG hỏi liệu Hệ thống kiểm soát sửa đổi nói chung nên hay không nên được sử dụng cho tài liệu - nó nên.

Cảm ơn các phản hồi cho đến nay!


À, được rồi ... cảm ơn đã làm rõ. Tôi không hiểu tại sao nó lại là một vấn đề, nhưng tôi không có bất kỳ kinh nghiệm cá nhân nào với GIT (chỉ là một sự hiểu biết về lý thuyết), vì vậy tôi sẽ để một người có kinh nghiệm trực tiếp hơn trả lời câu hỏi đó.
Flimzy

1
Tôi không hoàn toàn thấy chủ đề này như thế nào. Bạn đang nói về tài liệu phần mềm và cam kết với DVCS
Tim Post

Có lẽ phụ thuộc vào tài liệu và nhu cầu của bạn. Bạn có cần diffs và nó ở một định dạng có thể xử lý nó? Nếu git cung cấp cho các dịch vụ cần thiết chắc chắn. Beats có một hệ thống quản lý tài liệu riêng biệt ...
Rig

Nếu tài liệu của bạn là văn bản đơn giản - tốt. Nếu nó là định dạng nhị phân, về cơ bản bạn cần một hệ thống kiểm soát phiên bản hiểu định dạng nhị phân - đây là khóa nhà cung cấp ở dạng tinh khiết nhất.

Câu trả lời:


53

Chúng tôi lưu trữ tài liệu trong SVN tất cả các thời gian. Trên thực tế, toàn bộ hướng dẫn sử dụng của chúng tôi được viết bằng LaTeX và được lưu trữ trong SVN. Chúng tôi chọn LaTeX đặc biệt vì đây là ngôn ngữ dựa trên văn bản và dễ dàng hiển thị các khác biệt theo từng dòng.

Chúng tôi cũng lưu trữ một số tệp không được định dạng văn bản, như tệp Microsoft Office .doc, bảng tính trải rộng, tệp .zip, v.v., khi cần thiết ... nhưng một số lợi ích của RCS bị mất khi bạn không thể thấy sự gia tăng khác biệt

Chìa khóa thực sự là đảm bảo tài liệu của bạn được tổ chức tốt, để mọi người có thể tìm (và cập nhật) tài liệu (và nguồn) khi họ cần.


11
Nếu bạn là cửa hàng của Microsoft, TortoiseSVN hỗ trợ các khác biệt theo từng dòng của MS Office.
Phil

2
Bỏ các định dạng tài liệu nhị phân sẽ làm cho thế giới tốt hơn. o cho rằng các tài liệu là văn bản thuần túy, sẽ không có vấn đề thực sự với DVCS.
Kai Inkinen

Ồ, và lần đầu tiên tôi nghe về TortoiseSVN và các tệp doc, vì vậy +1 cho điều đó. Tự hỏi nếu điều đó sẽ kết thúc trên Rùa [AnyDVCS] bất cứ lúc nào trong tương lai.
Kai Inkinen

@Phil: Làm thế nào để TortoiseSVN hoàn thành việc này? Trình xem doc-diff được tích hợp với ứng dụng khách SVN hay có thể được sử dụng độc lập không?
Flimzy

1
Một tùy chọn thú vị sẽ là sử dụng Pandoc để hầu hết các tài liệu của bạn nằm trong Markdown, nhưng các bit quan trọng vẫn có thể sử dụng TeX. Vì nó biên dịch Markdown thành LaTeX, kết quả trông giống nhau. Tuy nhiên, điều này cũng sẽ cho phép bạn xuất nó sang các định dạng khác nhau và sẽ giúp nguồn dễ đọc hơn.
Tikhon Jelvis

22

Vâng, nó phụ thuộc vào định dạng nào bạn sử dụng cho tài liệu. Nếu nó là một cái gì đó dựa trên văn bản thì tất cả đều tốt.

Git cũng có thể lưu trữ nội dung nhị phân và bạn có thể theo dõi các bản sửa đổi, nhưng đầu ra khác biệt sẽ không có ý nghĩa.

Cũng có thể lưu trữ tài liệu trong chính mã như perldoc pod, java cũng có một số định dạng / chú thích cho việc này.


Tôi đồng ý, trong khi có thể lưu trữ tài liệu phi văn bản, git sẽ làm tốt hơn rất nhiều nếu bạn lưu trữ văn bản thay thế. Đã có cuộc nói chuyện về một trình điều khiển khác biệt biết cách phân biệt các tài liệu từ (hoặc tương tự), nhưng tôi không chắc liệu nó có được thực hiện hay không
Sverre Rabbelier

Tôi mặc dù Word đã chuyển định dạng của chúng từ nhị phân sang XML.
cledoux

3
@ karargeteek6 Định dạng 'XML' của Word không thể đọc được. Và một dòng văn bản không tương ứng với một dòng XML của Word, thậm chí gần đúng. Vì vậy, nó cũng có thể là nhị phân.

Bạn có thể hướng dẫn Word để lưu đầu ra của bạn trong XML không nén. Chọn Save As, sau đó chọn Word XML Document (*.xml)thay vì mặc định Word Document (*.docx). XML khá phức tạp, vì vậy điều này không đảm bảo các thay đổi sẽ dễ đọc, nhưng ít nhất nó sẽ không phải là nhị phân.
Kyralessa

> nhưng đầu ra khác biệt sẽ không có ý nghĩa. Trong trường hợp khác biệt, chúng tôi có thể mở 2 bản sửa đổi của một tài liệu cạnh nhau và so sánh bằng mắt của chúng tôi :)
Luke

14

Tôi không thể tưởng tượng được tại sao bạn nghĩ rằng có thể có vấn đề khi sử dụng git hoặc bất kỳ hệ thống kiểm soát phiên bản nào khác, cho tài liệu. Giống như mã nguồn, tài liệu nên có lịch sử đầy đủ và khả năng hoàn nguyên về phiên bản cũ hơn nếu điều đó trở nên cần thiết. Một hệ thống kiểm soát phiên bản là hoàn hảo cho việc này.


6
Chỉ khi tài liệu ở dạng văn bản. Các đốm màu nhị phân không được hưởng lợi hoàn toàn từ kiểm soát phiên bản.

2
@ ThorbjørnRavnAndersen: Mặc dù vậy, trừ khi bạn có một hệ thống phiên bản dành riêng cho nhị phân, có lẽ tốt hơn là giữ các tệp nhị phân trong Git thay vì riêng chúng.
Tikhon Jelvis

@TikhonJelvis Tôi không thắc mắc liệu có nên đặt các tệp nhị phân trong git hay không - nếu chúng là các tạo phẩm gốc, thì đúng là như vậy. Tuy nhiên, hãy thử chạy "git diff" trên các tài liệu Word.

@ user1249: bạn có thể "xuất" 2 bản sửa đổi sang máy tính để bàn, giả sử my_docs numv15.docx và my_docs numv14.docx sau đó mở nó cạnh nhau và so sánh bằng mắt và não của bạn, nó không khó lắm :)
Luke

14

Rõ ràng rằng việc sử dụng một số loại Hệ thống kiểm soát phiên bản để lưu trữ tài liệu là một công cụ cao cấp. Phần thú vị hơn của câu hỏi là liệu có nên lưu trữ tài liệu ở vị trí CÙNG làm mã nguồn không? Vấn đề có thể xảy ra ở đây là khó có thể thiết lập các đặc quyền truy cập khác nhau cho mã và tài liệu trong trường hợp đó. Và trong nhiều trường hợp kinh doanh, mọi người sẽ cần truy cập vào tài liệu chứ không phải mã nguồn, như bộ phận tiếp thị hoặc BA.


3
Đúng, khía cạnh "cùng một vị trí" là một trong những phần chính của câu hỏi này!

Cùng một vị trí là tốt nếu bạn có thể quản lý nó, bởi vì nó tránh được sự cần thiết phải có kiến ​​thức của bộ lạc (biết nơi để tìm), hoặc cần phải tìm kiếm nơi các công cụ.
quick_now

Họ có thể không cần quyền truy cập vào mã nhưng họ không nên có quyền truy cập đó. Họ không cần phải nhìn vào nó. Bí mật nói chung không nên có trong kiểm soát phiên bản.
bdsl

9

Trong công ty mà tôi làm việc, chúng tôi đưa tài liệu vào SVN. Tuy nhiên, sau một vài xung đột và nhu cầu chia sẻ nó, chúng tôi đã quyết định chuyển nó sang Mediawiki.

Lúc đầu, nó là trac, sau đó chuyển sang Mediawiki vì nó dễ sử dụng hơn ...

Vấn đề chính với SVN là nguyên nhân chia sẻ chúng tôi có hệ thống ủy quyền cho SVN.


2
Ý bạn là Mediawiki, công cụ wiki mà Wikipedia sử dụng?

@Martijn, tôi cho là vậy
Teo Klestrup Röijezon

@Martijn: Có, đã chỉnh sửa
confiq

Tôi thà gắn bó với wiki hơn là gửi nhiều tệp không phải là khóa học cho SCM, nhưng đó là nhiều việc phải làm với sở thích cá nhân. Có nhiều hơn nữa bạn có thể làm với nó. Tôi đặc biệt thích Foswiki và mẫu dựa trên trang web / dự án của họ. Vui mừng khi ai đó quyết định sử dụng wiki do vấn đề :) +1.
Oeufcoque Penteano

9
  • Có nhiều hơn chỉ là mã nguồn trong một kho lưu trữ là một điều rất tốt.

    Nó nhóm tất cả các tài nguyên của bạn lại với nhau và biến dự án thành một thực thể tập trung, gắn kết chứ không phải là một bộ sưu tập các tệp rải rác. Người đóng góp / nhân viên biết nơi tìm mọi thứ, thay vì gửi "Tôi thay đổi tài liệu cho tính năng x ở đâu?" email.

    Bạn sẽ muốn giữ mọi thứ ngăn nắp. Có một hệ thống để tách srctừ imageskhỏi docs. Bạn luôn có thể thêm một .gitignorethư mục để giữ cho kho lưu trữ và lịch sử sạch sẽ. Vì các cam kết Git dựa trên tệp, * bạn có thể tách rời các thay đổi nguồn từ các thay đổi tài liệu mạnh mẽ như bạn muốn.

  • Như những người khác đã nói, Git là tuyệt vời cho phiên bản tài liệu miễn là nó dựa trên văn bản.

  • Tôi hoàn toàn đồng ý; tài liệu nên được phiên bản ngay bên cạnh mã.

Sự tín nhiệm của tôi đến từ việc trở thành người dùng GitHub và đóng góp cho một dự án và khám phá nhiều dự án khác. Theo kinh nghiệm của tôi, một dự án hoàn chỉnh, thống nhất rất dễ để nói từ một nửa còn thiếu. Tôi cố gắng để chứa tất cả các dự án của tôi trong các thư mục bất cứ khi nào có thể.


* Điều này không hoàn toàn chính xác, vì có nhiều cách để chỉ định các phần của tệp sẽ được cam kết ( đây là một ví dụ ).


4

Tôi đến đây với một câu hỏi tương tự. Chúng tôi đến từ một môi trường SVN, nơi về cơ bản là không có trí tuệ để giữ tất cả các tài liệu liên quan đến một dự án trong cùng một kho lưu trữ. Do tính chất của SVN, bạn có thể dễ dàng kiểm tra các phần của kho lưu trữ, vì vậy nếu bạn chỉ cần mã nguồn (ví dụ: triển khai trang web), thì không vấn đề gì.

Với Git, mọi thứ đã khác. Thanh toán luôn ở cấp độ gốc, vì vậy nếu bạn muốn đặt mọi thứ vào cùng một kho lưu trữ, bạn sẽ luôn kết thúc với cùng một cấu trúc thư mục. Một cách tiếp cận tôi đã gặp là đặt mọi thứ vào các nhánh riêng biệt, tức là bạn có các nhánh mã (thường là các nhánh chính, phát triển, v.v.) và một nhánh doc, có cấu trúc thư mục riêng, riêng. Tôi không chắc chắn đó là ý tưởng tốt nhất, nhưng đó là một gợi ý giúp giải quyết vấn đề mà tôi tưởng tượng là nền tảng của câu hỏi của bạn.


Các nhánh khác nhau với các cấu trúc thư mục hoàn toàn khác nhau có mùi mã rất xấu đối với tôi. Tôi sẽ để lại tất cả trong một repo, giúp người đóng góp dễ dàng thêm dễ dàng hơn một hỗn hợp mã và tài liệu. Trong thực tế, lập trình biết chữ (Google mà!) Yêu cầu nó.
tbc0

Khi phân phối các gói, tôi là một phần theo kiểu .deb cho phép tôi tải các tệp thực thi xuống tất cả các máy chủ, trong khi hộp phát triển của tôi cũng có các gói tài liệu.
tbc0

1

Tôi sử dụng wiki cho các tài liệu nội bộ ... nhận bản sửa đổi PLUS truy cập nổi bật / chỉnh sửa dễ dàng. Khi tài liệu không đồng bộ, hãy cập nhật nó ngay lúc đó và ở đó. Đối với tài liệu của người dùng cuối, hãy xem xét một công cụ chuyên nghiệp như Madcap Flare Họ sử dụng phương ngữ XML để chia sẻ, soạn thảo và chuyển đổi tài liệu.


-1

Trong mã, các suy nghĩ thường được phân tách theo từng dòng. Tôi có xu hướng viết tài liệu với kết thúc tốt đẹp. Khi tôi cam kết các tệp đó, các dòng là cả một đoạn dài. Điều đó không hữu ích để đọc git diff. Đó là vấn đề tôi đã cố gắng giải quyết khi tôi tìm kiếm và tìm thấy trang này. Cảm ơn Arne Hartherz đã giới thiệu cho tôi git diff --word-diff. Bạn có thể thích git diff --color-wordsthậm chí tốt hơn.

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.