Hệ thống kiểm soát phiên bản cho các dự án phần cứng?


59

Một số hệ thống phiên bản tốt cho các dự án phần cứng là gì? Có tương đương với Google Code, CVS và SVN không? Các hệ thống kiểm soát phiên bản như vậy có phù hợp với các dự án phần cứng liên quan đến các tệp PCB, sơ đồ .. (thậm chí mã phần sụn) không?


5
Câu hỏi tuyệt vời! Rất thích xem một số ví dụ về kho lưu trữ trong câu trả lời.
tyblu

+1 Để nhận ra rằng các dự án CTNH có thể được hưởng lợi từ kiểm soát nguồn. Những người tôi làm việc cùng dường như có một thời gian khó khăn để nhận ra điều này.
Nate

1
Tôi đã sử dụng Mercurial để phiên bản các bảng mạch trong một thời gian và nó đã lưu mông của tôi một vài lần. Chắc chắn là một ý tưởng tốt.
Stephen Collings

1
Tôi sử dụng bộ công cụ gEDA cho EDA và theo dõi mọi thứ trong git. Gần đây tôi đã viết một số hook git tự động tạo ra hình ảnh .png của bất kỳ sơ đồ hoặc PCB nào đã được sửa đổi và thêm chúng vào cam kết. Điều này cho phép tôi tận dụng hình ảnh khác biệt của GitHub. PCB và gschem cũng có các công cụ tìm khác biệt hoạt động với git làm một cái gì đó tương tự cục bộ. Móc của tôi ở đây: github.com/BenBergman/.git_hooks Dự án ví dụ sử dụng chúng: github.com/BenBergman/uJoypad
ben

Câu trả lời:


27

Về cơ bản, tất cả các hệ thống VCS có thể xử lý các tệp văn bản & nhị phân một cách duyên dáng. Tất nhiên bạn không thể hợp nhất những cái nhị phân.

Vì vậy, miễn là bạn không sử dụng những thứ lỗi thời như CVS, bạn sẽ ổn với hệ thống BẤT K ..


3
Tôi sử dụng CVS cho tất cả các dự án của mình (phần mềm và phần cứng, với PCB, phần sụn, công cụ, v.v.) và không có vấn đề gì. Chắc chắn, CVS đã lỗi thời, nhưng tôi có 20 năm lịch sử dự án và không có công cụ chuyển đổi nào hoạt động để chuyển kho lưu trữ của tôi sang Mercurial hoặc SVN.
Axeman

12
Sau đó, một cách thực dụng chỉ đơn giản là bỏ đi những thứ cũ trong CVS, và sau đó đưa những thứ mới vào hệ thống mới ...
Johan

CVS là một hệ thống đẹp khi so sánh với nỗi kinh hoàng đó là Microsoft Visual Source Safe, hiện tôi đang bị khóa trong một dự án tôi đang thực hiện. Blech.
Kevin Vermeer

@Kevin Vermeer Bạn biết rằng bạn đang ở mặt tiêu cực trên thang đo khi bạn so sánh hai điều "không tốt đẹp" với nhau;)
Johan

@KevinVermeer, tôi đã phải sử dụng nguồnafe, nguyên nhân của thế giới kiểm soát phiên bản. Ông chủ cuối cùng của tôi cho phép bỏ qua hoàn toàn kiểm soát phiên bản vì nó.
Kortuk

17

Tôi đã sử dụng Subversion với Altium trước đây. Nó hoạt động thành công, nhưng tại thời điểm đó, việc thiếu một công cụ diff khiến nó không hữu dụng hơn so với kiểm soát phiên bản bằng mã. Tôi vẫn nghĩ rằng nó đáng để làm, ngay cả khi không có khả năng khác biệt.

Đối với phần sụn, Subversion hoặc Git đều tuyệt vời. Nếu trước đây bạn chưa sử dụng Git, hãy thử Subversion trước (mặc dù điều đó sẽ khiến việc học Git sau này khó hơn).

Altium gần đây đã giới thiệu một công cụ khác cho sơ đồ và PCB, vì vậy tôi hy vọng rằng Subversion bây giờ sẽ rất tuyệt, điều chỉnh sự điên rồ thông thường mà các nhà cung cấp EDA quản lý để xây dựng vào các sản phẩm của họ.

Tôi đã có ý định thử điều này với công cụ tìm khác biệt mới; nếu tôi làm như vậy, tôi sẽ cố gắng nhớ gửi một liên kết đến repo ở đây làm ví dụ.

Cập nhật

Tôi đã thử điều này và tôi phải nói rằng tôi hơi bị áp đảo với công cụ khác biệt Altium. Đó là chức năng, nhưng những thay đổi giữa vòng quay bảng là đủ đáng kể mà nó không hữu ích, ít nhất là đối với tôi. Nhìn thấy điều này, tôi đã quyết định quên đi công cụ tìm khác biệt và chỉ sử dụng Github. Đây là repo nếu bạn quan tâm: https://github.com/rascalmicro/pcb


Bạn đã sử dụng GUI SVN tích hợp (với Altium) hoặc một cái gì đó bên ngoài?
Nick T

Altium mới nhất với SVN là tuyệt vời, mặc dù tôi sẽ thêm rằng các bản sửa đổi PCB / sơ đồ không quá quan trọng như trong mã. Nếu bạn đang xử lý nhiều hơn 3-4 bản phát hành sơ đồ / PCB tối đa, có thể điều gì đó có thể xảy ra khi rất sai trong các giai đoạn thiết kế hoặc yêu cầu.
Đánh dấu

@Mark: Bạn đang nói về Phiên bản 10 beta, hay Mùa hè 09?
Nick T

2
Nếu những thay đổi giữa vòng quay bảng là đủ đáng kể mà nó không hữu ích, thì bạn không cam kết thường xuyên. Cam kết sớm, cam kết thường xuyên! Sử dụng thẻ để theo dõi vòng quay bảng.
Kevin Vermeer

3
Tôi đang sử dụng SVN và nó thực sự đáng giá. Hệ thống của tôi là thế này: Tôi nhấn nút lưu, tôi nên thực hiện một cam kết. Tôi theo dõi các thay đổi bằng cách đọc các thông báo cam kết như "Đã thêm phần X vào thư viện" hoặc "Đã thêm các bảng kiểm tra vào các bus I2C và SPI." Các bản phát hành được gửi để chế tạo là hoàn toàn khác nhau, sử dụng svn cp trunk/ tags/releaseX/để chụp ảnh phát hành. Sau đó, bạn có thể diff diffX / file và releaseY / file nếu bạn muốn xem các thay đổi giữa các bản phát hành hoặc bạn có thể duyệt nhật ký cam kết và xem các thay đổi riêng lẻ. Chi nhánh giúp mô đun hóa lũ lụt cam kết.
Kevin Vermeer

10

Tôi sử dụng máy khách VisualSVN Server + TortoiseSVN và nó hoạt động tốt


7

Tôi sử dụng Google Code để lưu trữ Super OSD , một dự án điện tử của tôi.

Tôi độc quyền sử dụng bộ gEDA để quản lý sơ đồ và PCB của tôi. Sử dụng một cách hiệu quả, gEDA tạo ra các tệp văn bản (hầu hết có thể đọc được bằng con người, mặc dù rất khó để giải thích chúng) cho sơ đồ, thay vì các đốm màu nhị phân, như Eagle. Ví dụ, đây là một khác biệt giữa hai sơ đồ , một khoảng 5 ngày tuổi và một sơ đồ tôi vừa đẩy. Nó không đặc biệt hữu ích vì bạn thực sự không thể thấy nhiều thay đổi trong tệp văn bản, nhưng nó có thể hiển thị thay đổi tương đối - tức là làm lại lớn, so với thay đổi thành phần duy nhất - và nó cho phép bạn quay lại các phiên bản trước.


3
+1 cho việc sử dụng các định dạng dựa trên văn bản cho các tệp. Dung lượng đĩa rẻ, và nén văn bản dễ dàng. Tôi muốn rằng các đốm màu nhị phân là ít phổ biến hơn.
Kevin Vermeer

4

Bí quyết là sử dụng một cái gì đó hoạt động tốt với nhị phân. Nếu bạn đang sử dụng nhị phân rất nhiều và chia sẻ với người khác, có thể có ích khi thực hiện cơ chế khóa trên các tệp nhị phân đó. Chúng tôi đã gặp nhiều vấn đề khi sử dụng Subversion với các tệp nhị phân và chia sẻ với những người khác phát sinh do thiếu ngữ nghĩa khóa và ghi đè / hợp nhất các tệp nhị phân với nhau. Thêm một cơ chế khóa trên các tệp đó sẽ loại bỏ lỗi của con người trong giao tiếp về người đã chỉnh sửa / thay đổi tệp nhị phân.

Nếu trước đây bạn chưa sử dụng kiểm soát phiên bản, tôi khuyên bạn nên đọc các cách khác nhau mà chúng hoạt động và chọn một cách đáp ứng nhu cầu của bạn mà bạn và / hoặc nhóm của bạn có thể thoải mái. Các hệ thống kiểm soát phiên bản phân tán cung cấp nhiều lợi ích so với các hệ thống máy khách-máy chủ, nhưng có xu hướng phức tạp hơn để làm việc với.


3

Tại sao không sử dụng Google Code hoặc SVN repo? Vì đây là một hệ thống kiểm soát sửa đổi. Không có định nghĩa sử dụng cho nó. Nó cực kỳ hữu ích cho nhiều nhà phát triển và theo dõi các thay đổi trong mã nguồn.


1
Bạn đã làm điều này à? Đưa nhị phân vào SVN hoặc Mercurial đã trở nên khủng khiếp đối với tôi.
tyblu

2
Không, tôi không có nhưng tôi đã sử dụng SVN không chỉ cho mã nguồn. Những thứ như tệp PDF và .txt.
Trưởng khoa

2
@Tyblu bạn có ý gì kinh khủng? Tôi đã thực hiện nó với các tệp sơ đồ và bố cục và nó hoạt động rất tốt với tôi với lật đổ.
Kellenjb

Tôi không thể theo dõi các thay đổi đối với các tệp EAGLE bằng Mercurial. Có vẻ như toàn bộ tập tin là khác nhau. Bạn có một kho lưu trữ tôi có thể nhìn trộm?
tyblu

5
@tyblu đó là lý do tại sao bạn thêm nhận xét khi bạn đăng ký tệp :)
Abbeyatcu

3

Tôi đã sử dụng Subversion với Altium trước đây.

Tôi sử dụng SVN với tích hợp Altium để chụp sơ đồ: nó hoạt động tốt. Tôi phải nói rằng trình xem khác biệt tốt hơn là không có gì, vì các tệp SchDoc của tôi là nhị phân, tức là không thể so sánh bằng cách khác! Tôi sử dụng ứng dụng khách SVN được tích hợp trong Altium Designer song song với TortoiseSVN mà không gặp vấn đề gì. Ứng dụng khách của Altium bị giới hạn một chút về các tính năng của SVN. Tôi thực hiện "thẻ" của mình với Rùa.

Ý kiến ​​của tôi dựa trên Altium Designer 10 build 27009 và phiên bản 13.1 build 27559.


2

svn, hg, và git đều hoạt động tốt.


1

Không phải là một hệ thống kiểm soát phiên bản thực nhưng Dropbox xử lý cũng sửa đổi các tệp và làm cho chúng có sẵn cho những người khác nhau trên các hệ điều hành khác nhau. - hệ thống kiểm soát phiên bản mans nghèo;)


2
như một người đã từng làm việc với các đội trước đây: Xin đừng làm điều này. Dropbox không phải là hệ thống kiểm soát phiên bản của người nghèo . Đó là hệ thống chia sẻ / lưu trữ tập tin. Bạn không cần phải sử dụng git đến mức tối đa để nó trở nên hữu ích hơn, thật đấy! Dropbox đã làm tất cả những điều sai mà ngay cả CVS đã làm đúng (cách xử lý các phiên bản mới hơn, cách trao đổi thay đổi, cách đánh dấu các phiên bản cụ thể), đó thực sự không phải là một hệ thống kiểm soát phiên bản .
Marcus Müller

1

Tôi đã ở Maker Faire ở San Mateo vào cuối tuần vừa qua và gặp một số đại diện từ một công ty mới (với tôi) có tên Up-Verter . Về cơ bản, họ đang xây dựng một công cụ CAD điện chạy trong "đám mây" (tức là trong trình duyệt của bạn) và được xây dựng về mặt khái niệm xung quanh sự hợp tác, do đó, nên xử lý hợp nhất / diff và các công cụ phiên bản thông thường.

Tôi chưa thử nó và nó trông vẫn hơi xanh một chút (đừng nghĩ rằng bạn thực sự có thể thực hiện bố cục pcb, chỉ là sơ đồ), nhưng nó rất hấp dẫn. Họ tuyên bố họ có thể nhập các tệp Eagle, đây là một điểm cộng.

Tôi cũng đã nói chuyện với các đại diện của Eagle tại lều Element 14 và họ chỉ ra rằng họ đang chuyển sang định dạng XML, đây là một bước tiến lớn để tạo phiên bản sơ đồ và bố cục hợp lý hơn ... tất cả những tiến bộ thú vị ở mặt trước này !



0

Đây thực sự là một câu hỏi rất hay. Do các GPU rơi vào danh mục "phần cứng", bạn có thể quan tâm đến cấu trúc dự án thân thiện với kiểm soát phiên bản mà tôi đề xuất cho các dự án FPGA:

http://www.saardrimer.com/fpgaproj/

Tôi nghĩ rằng các ý tưởng và khái niệm có thể dễ dàng được áp dụng cho các dự án phần cứng khác, và nói chung. (Nhận xét về đề xuất này rất được hoan nghênh, btw.)


2
Liên kết không hoạt động nữa.
tyblu

0

Tránh git. Nó không xử lý tốt các kho lớn. Và kho của bạn sẽ trở nên lớn trừ khi bạn

  1. Có các tệp sơ đồ nhị phân chỉ thay đổi phần nào khi chúng thay đổi
  2. Bật xử lý nhị phân như văn bản.

3
Chà ... Bạn nên có nhiều repos nhỏ, một repo cho mỗi dự án.
Johan

1
@Johan - ...... Yeah .... Chúc may mắn với cơn ác mộng bảo trì đó. Dù sao, tôi có 1 repo cho mỗi khách hàng (khoảng 4, kho lưu trữ, bây giờ), với nhiều dự án con, và nó hoạt động khá tốt. SVN, ít nhất, dường như có thể xử lý hơn 5 GB dữ liệu nhị phân mà không gặp quá nhiều khó khăn.
Sói Connor

1
@ConnorWolf Tôi rất muốn nghe cách bạn làm điều đó. Chúng tôi làm một kho lưu trữ Git cho mỗi dự án và không gặp vấn đề gì. Không có một kho lưu trữ duy nhất cho mỗi dự án có vẻ như là một cơn ác mộng bảo trì đối với tôi.
Matt Young

1
SVN, ít nhất (có thể là git quá) dường như lưu trữ các khác biệt nhị phân, thay vào đó là hoàn thành các bản sao của một tệp, vì vậy nó rất hiệu quả về không gian.
Sói Connor

1
@ConnorWolf re: cơn ác mộng bảo trì: 8 năm sau: git-subodules có lẽ là những gì bạn muốn ở đây. Có ý nghĩa đặc biệt nếu bạn chia sẻ, ví dụ như những thứ công cụ tiêu chuẩn giữa nhiều dự án hoặc khách hàng.
Marcus Müller

0

Tôi đã sử dụng nhiều repos Mercurial (HG) (một cho mỗi dự án) cho điều này nhưng vì hầu hết các Hệ thống kiểm soát phiên bản sẽ trải nghiệm, các repos ngày càng lớn hơn.


0

Bạn nên thử heo rừng . Nó được thiết kế để xử lý các tập tin và kho lưu trữ khổng lồ. 100 GB hoặc nhiều hơn các dữ liệu nhị phân là không có vấn đề.


0

Tôi chỉ muốn thêm một liên kết đến HgInit, một giới thiệu tuyệt vời về Mercurial nếu bạn quyết định đi theo con đường đó. Cá nhân tôi sử dụng Git, nhưng chúng rất giống nhau về kiến ​​trúc (cả hai đều là hệ thống kiểm soát phiên bản phân tán). Bản chất phân tán của chúng làm cho chúng tuyệt vời khi làm việc tốt trong các nhóm "phân phối". :)

http://hginit.com/


Mặc dù Mercurial là một hệ thống kiểm soát nguồn tốt cho các dự án phần mềm 'thuần túy', nhưng nhiều ưu điểm của nó bị mất đối với các dự án xử lý các tệp nhị phân thuần túy vì nó không thể hợp nhất mọi thứ. Các bài học của HgInit sẽ không có ý nghĩa gì trừ khi bạn chỉ làm phần mềm.
whatsisname


0

Điều này đáng để suy nghĩ về bất kỳ mô tả ascii nào về phần cứng. Khi một mô tả có thể đọc được của con người đối với phần cứng được chấp nhận, bất kỳ hệ thống kiểm soát sửa đổi hiện đại (RCS) nào cũng hoạt động khá tốt. Bố cục mạch thường được mô tả đầy đủ bởi các tệp Gerber, UML mô tả các phần khác, được mô tả đầy đủ ascii. Các định dạng ascii ít tiêu chuẩn hơn tồn tại cho sơ đồ, bố trí cơ học, v.v. (ví dụ KiCAD).

Việc áp dụng là một vấn đề thực tế hơn, nó đòi hỏi một yêu cầu được công nhận để kiểm soát sửa đổi tốt, bao gồm một khác biệt có ý nghĩa. Điều này cũng thường có nghĩa là từ bỏ Word, Excel, PowerPoint, v.v ... Một cuộc tranh luận rất khó khăn với các nhà quản lý và MBA, nhưng các ngành được quy định như Thiết bị y tế, Hàng không và Quân sự đã yêu cầu kiểm soát sửa đổi tốt.

Như những người khác đã chỉ ra, hầu hết các RCS hiện đại sẽ sửa đổi các tệp nhị phân kiểm soát, rất hữu ích cho việc lưu trữ và xác định các phiên bản - nhưng bất kỳ hệ thống quản lý tài liệu điện tử nào (EDMS), chẳng hạn, Agile, có thể gán số sửa đổi cho một nhị phân tùy ý. Nhàm chán.


0

Mặc dù nó không miễn phí và hầu như không có lỗi, nhưng Altium vault thực hiện công việc tốt; Tôi có thể quay trở lại bất kỳ điểm cam kết nào một cách dễ dàng (giống như bất kỳ VCS nào nên làm) rất dễ dàng.

Trong lĩnh vực này, Altium đi trước các công cụ cao cấp (Mentor và Cadence).

Tôi không làm việc cho Altium nhưng công cụ này, mặc dù các vấn đề hiện tại, làm cho phiên bản phần cứng hoàn chỉnh rất đơn giản.


Và đó có lẽ là điều mà Vault phù hợp với ...
Matt Young

Cách UNIX; làm một việc và làm nó rất tốt
Peter Smith
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.