Sistem kontrol versi untuk proyek perangkat keras?

59

Apa sajakah sistem versi yang bagus untuk proyek perangkat keras? Apakah ada padanan dengan Google Code, CVS dan SVN? Apakah sistem kontrol versi seperti itu cocok untuk proyek perangkat keras yang melibatkan file PCB, skema .. (bahkan kode firmware)?

cksa361
sumber
5
Pertanyaan bagus! Senang melihat beberapa contoh repositori yang disertakan dalam jawaban.
tyblu
+1 Untuk mengetahui bahwa proyek HW dapat mengambil manfaat dari kontrol sumber. Orang-orang yang bekerja dengan saya sepertinya kesulitan menyadari hal ini.
Nate
1
Saya telah menggunakan Mercurial ke papan sirkuit versi untuk sementara waktu sekarang, dan itu menyelamatkan pantat saya beberapa kali. Ide yang bagus.
Stephen Collings
1
Saya menggunakan seperangkat alat GEDA untuk EDA dan melacak hal-hal di git. Baru-baru ini saya menulis beberapa kait git yang secara otomatis menghasilkan gambar .png dari skema atau PCB yang telah dimodifikasi dan menambahkannya ke komit. Ini memungkinkan saya untuk mengambil keuntungan dari perbedaan gambar GitHub. PCB dan gschem juga memiliki alat diff asli yang bekerja dengan git yang melakukan sesuatu yang serupa secara lokal. Hooks saya ada di sini: github.com/BenBergman/.git_hooks Contoh proyek yang menggunakannya: github.com/BenBergman/uJoypad
ben

Jawaban:

27

Pada dasarnya, semua sistem VCS dapat menangani file teks & biner dengan anggun. Tentu saja Anda tidak dapat menggabungkan yang biner.

Jadi selama Anda tidak menggunakan hal-hal usang seperti CVS Anda akan baik dengan sistem APAPUN.

BarsMonster
sumber
3
Saya menggunakan CVS untuk semua proyek saya (perangkat lunak dan perangkat keras, dengan PCB, firmware, alat, dll.) Dan tidak memiliki masalah. Tentu, CVS sudah usang, tetapi saya memiliki 20 tahun sejarah proyek dan tidak ada konverter yang berfungsi untuk memigrasi repositori saya ke Mercurial, atau SVN.
Axeman
12
Kemudian cara yang pragmatis adalah terlalu meninggalkan barang lama di CVS, dan kemudian memasukkan barang baru ke dalam sistem baru ...
Johan
CVS sistem yang indah jika dibandingkan dengan horor yaitu Microsoft Visual Source Safe, yang saya gunakan untuk proyek yang sedang saya kerjakan saat ini. Blech.
Kevin Vermeer
@Kevin Vermeer Anda tahu Anda berada di sisi negatif dalam skala ketika Anda membandingkan dua hal yang "tidak begitu baik" satu sama lain;)
Johan
@KevinVermeer, saya harus menggunakan sourcesafe, kutukan dari dunia kontrol versi. Bos terakhir saya mengizinkan pengabaian kontrol versi karena itu.
Kortuk
17

Saya telah menggunakan Subversion dengan Altium sebelumnya. Ini berhasil, tetapi pada saat itu kurangnya alat diff membuatnya kurang berguna daripada kontrol versi dengan kode. Saya masih berpikir itu layak dilakukan, bahkan tanpa kemampuan diff.

Untuk firmware, Subversion atau Git keduanya bagus. Jika Anda belum pernah menggunakan Git sebelumnya, cobalah Subversion terlebih dahulu (meskipun itu akan membuat belajar Git lebih sulit nanti).

Altium baru-baru ini memperkenalkan alat diff untuk skema dan PCB, jadi saya berharap bahwa Subversion sekarang akan menjadi hebat, modulo kegilaan biasa yang dikelola vendor EDA untuk membangun ke dalam produk mereka.

Saya bermaksud mencoba ini dengan alat diff baru; jika saya melakukannya, saya akan mencoba untuk mengingat untuk mengirim tautan ke repo di sini sebagai contoh.

Memperbarui

Saya mencoba ini, dan saya harus mengatakan bahwa saya sedikit kekurangan alat Altium diff. Ini fungsional, tetapi perubahan di antara board revs cukup besar sehingga tidak terlalu berguna, setidaknya bagi saya. Setelah melihat ini, saya memutuskan untuk melupakan alat diff dan hanya menggunakan Github. Inilah repo jika Anda tertarik: https://github.com/rascalmicro/pcb

pingswept
sumber
Apakah Anda menggunakan GUI SVN terintegrasi (dengan Altium) atau sesuatu eksternal?
Nick T
Altium terbaru dengan SVN sangat bagus, meskipun saya akan menambahkan bahwa revisi PCB / skematis tidak sepenting mereka dalam kode. Jika Anda berurusan dengan lebih dari 3-4 max schematic / rilis PCB revisi sesuatu mungkin ketika sangat salah dalam fase desain atau persyaratan.
Markus
@ Mark: Apakah Anda berbicara tentang rilis 10 beta, atau Musim Panas 09?
Nick T
2
Jika perubahan antar rev papan cukup besar sehingga tidak berguna, Anda tidak cukup sering melakukan. Berkomitmen awal, komit sering! Gunakan tag untuk melacak revs papan.
Kevin Vermeer
3
Saya menggunakan SVN, dan itu pasti bermanfaat. Sistem saya adalah ini: Saya menekan tombol simpan, saya seharusnya dapat membuat komit. Saya mengikuti perubahan dengan membaca pesan komit seperti "Menambahkan bagian X ke perpustakaan" atau "Menambahkan test pad ke bus I2C dan SPI." Rilis yang dikirim untuk pembuatan sama sekali berbeda, gunakan svn cp trunk/ tags/releaseX/untuk mengambil snapshot dari rilis. Anda kemudian dapat melakukan diff releaseX / file dan releaseY / file jika Anda ingin melihat perubahan di antara rilis, atau Anda dapat menelusuri log komit dan melihat perubahan individu. Cabang membantu memodulasi banjir komitmen.
Kevin Vermeer
10

Saya menggunakan klien VisualSVN Server + TortoiseSVN, dan berfungsi dengan baik

vicatcu
sumber
7

Saya menggunakan Google Code untuk menjadi tuan rumah Super OSD , proyek elektronik milik saya.

Saya secara eksklusif menggunakan suite gEDA untuk mengelola skema dan PCB saya. Bermanfaat, gEDA menghasilkan file teks (yang sebagian besar dapat dibaca manusia, meskipun sulit untuk menafsirkannya) untuk skema, bukan gumpalan biner, seperti Eagle. Sebagai contoh, ini adalah perbedaan antara dua skema , satu sekitar 5 hari dan yang baru saja saya dorong. Ini tidak terlalu berguna karena Anda tidak dapat benar-benar melihat banyak perubahan dalam file teks, tetapi itu dapat menunjukkan perubahan relatif - yaitu pengerjaan ulang besar-besaran, vs perubahan komponen tunggal - dan itu memang memungkinkan Anda kembali ke versi sebelumnya.

Thomas O
sumber
3
+1 untuk penggunaan format berbasis teks untuk file. Ruang disk murah, dan kompresi teks mudah. Saya berharap bahwa biner gumpalan kurang umum.
Kevin Vermeer
4

Caranya adalah dengan menggunakan sesuatu yang berfungsi baik dengan binari. Jika Anda sering menggunakan binari dan berbagi dengan yang lain, mungkin bermanfaat untuk menerapkan mekanisme penguncian pada file-file biner tersebut. Kami mengalami banyak masalah dengan menggunakan Subversion dengan file biner dan berbagi dengan orang lain yang muncul karena kurangnya semantik penguncian dan over-writing / menggabungkan file biner menjadi satu. Menambahkan mekanisme penguncian pada file-file tersebut menghilangkan kesalahan manusia dalam komunikasi tentang siapa yang mengedit / mengubah file biner.

Jika Anda belum pernah menggunakan kontrol versi sebelumnya, saya sarankan membaca tentang berbagai cara kerjanya, dan pilih satu untuk memenuhi kebutuhan Anda sehingga Anda dan / atau tim Anda dapat merasa nyaman. Sistem kontrol versi terdistribusi memberikan banyak manfaat dibandingkan sistem client-server, tetapi cenderung lebih rumit untuk dikerjakan.

J. Polfer
sumber
3

Mengapa tidak hanya menggunakan Google Code atau repo SVN? Karena ini adalah sistem kontrol revisi. Tidak ada penggunaan yang ditentukan untuk itu. Ini sangat berguna untuk banyak pengembang dan memonitor perubahan dalam kode sumber.

Dekan
sumber
1
Apakah kamu sudah melakukan ini? Menempatkan binari ke dalam SVN atau Mercurial ternyata sangat buruk bagi saya.
tyblu
2
Tidak, saya belum tetapi saya telah menggunakan SVN untuk tidak hanya kode sumber. Hal-hal Seperti file PDF dan .txt.
Dean
2
@ Tyblu apa maksudmu dengan mengerikan? Saya telah melakukannya dengan file skema dan tata letak dan ini bekerja sangat baik untuk saya dengan subversi.
Kellenjb
Saya tidak bisa mengikuti perubahan pada file EAGLE dengan Mercurial. Sepertinya seluruh file berbeda. Apakah Anda memiliki repositori yang bisa saya intip?
tyblu
5
@tyblu itu sebabnya Anda menambahkan komentar ketika Anda memeriksa file :)
vicatcu
3

Saya telah menggunakan Subversion dengan Altium sebelumnya.

Saya memang menggunakan SVN dengan integrasi Altium untuk penangkapan skematis: ini berfungsi dengan baik. Saya harus mengatakan bahwa penampil diff lebih baik daripada tidak memiliki apa-apa, karena file SchDoc saya adalah biner, yaitu mustahil untuk membandingkan sebaliknya! Saya menggunakan klien SVN yang terintegrasi dalam Altium Designer secara paralel dengan TortoiseSVN tanpa masalah. Klien Altium agak terbatas dalam hal fitur SVN. Saya melakukan "tag" saya dengan Tortoise.

Pendapat saya didasarkan pada Altium Designer 10 build 27009, dan versi 13.1 build 27559.

Hanya 1
sumber
2

svn, hg, dan git semuanya bekerja dengan baik.

old_timer
sumber
1

Bukan sistem kontrol versi nyata tetapi Dropbox menangani juga revisi file dan membuatnya tersedia untuk orang yang berbeda di OS yang berbeda. - Sistem kontrol versi orang miskin;)

powtac
sumber
2
sebagai seseorang yang pernah bekerja dengan tim sebelumnya: Tolong jangan lakukan ini. Dropbox bukan sistem kontrol versi orang miskin . Ini berbagi file / sistem arsip. Anda tidak harus menggunakan git semaksimal mungkin agar lebih bermanfaat, sungguh! Dropbox melakukan semua hal yang salah yang dilakukan CVS dengan benar (bagaimana menangani revisi yang lebih baru, cara bertukar perubahan, cara menandai revisi tertentu), itu benar-benar bukan sistem kontrol versi .
Marcus Müller
1

Saya berada di Maker Faire di San Mateo akhir pekan lalu dan bertemu dengan beberapa perwakilan dari perusahaan baru (kepada saya) bernama Up-Verter . Mereka pada dasarnya membangun alat CAD listrik yang berjalan di "cloud" (yaitu di browser Anda) dan secara konseptual dibangun di sekitar kolaborasi, jadi harus berurusan dengan penggabungan / diff dan hal-hal versi yang biasa.

Saya belum mencobanya, dan masih terlihat sedikit hijau (jangan berpikir Anda benar-benar dapat melakukan tata letak PCB, hanya skema), tapi agak menarik. Mereka mengklaim bisa mengimpor file Eagle, yang merupakan nilai tambah.

Saya juga berbicara dengan perwakilan Eagle di tenda Elemen 14, dan mereka mengindikasikan bahwa mereka pindah ke format XML, yang merupakan semacam langkah besar menuju membuat versi skema dan tata letak lebih masuk akal ... semua kemajuan menarik di bagian depan ini !

vicatcu
sumber
0

Ini memang pertanyaan yang sangat bagus. Karena FPGA termasuk dalam kategori "perangkat keras", Anda mungkin tertarik dengan struktur proyek ramah versi kontrol yang saya usulkan untuk proyek FPGA:

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

Saya pikir ide dan konsep dapat dengan mudah diterapkan pada proyek perangkat keras lain, dan secara umum. (Komentar tentang proposal ini sangat disambut, btw.)

Saar Drimer
sumber
2
Tautan tidak berfungsi lagi.
tyblu
0

Hindari git. Itu tidak menangani repositori besar dengan baik. Dan repositori Anda akan menjadi besar kecuali Anda

  1. Memiliki file skematik biner yang hanya berubah sedikit ketika mereka berubah
  2. Aktifkan perlakukan binari sebagai teks.
Brian Carlton
sumber
3
Baiklah ... Anda harus memiliki banyak repo kecil, satu repo per proyek.
Johan
1
@ Johan - ...... Ya .... Semoga beruntung dengan mimpi buruk pemeliharaan itu. Ngomong-ngomong, saya punya 1 repo per klien (sekitar 4, repositori, sekarang), dengan banyak sub-proyek, dan itu bekerja dengan cukup baik. Setidaknya, SVN tampaknya mampu menangani data biner 5+ GB tanpa terlalu banyak kesulitan.
Connor Wolf
1
@ConnorWolf Saya tertarik mendengar bagaimana Anda melakukannya. Kami melakukan satu repositori Git per proyek, dan tidak punya masalah. Tidak memiliki satu repositori per proyek terdengar seperti mimpi buruk pemeliharaan bagi saya.
Matt Young
1
SVN, setidaknya (mungkin git juga) tampaknya menyimpan diff biner, daripada menyelesaikan salinan file, jadi ini sangat hemat ruang.
Connor Wolf
1
@ConnorWolf re: maintenance nightmare: 8 tahun kemudian: git-submodules mungkin adalah yang Anda inginkan di sini. Masuk akal terutama jika Anda berbagi misalnya hal-hal perkakas standar antara beberapa proyek atau pelanggan.
Marcus Müller
0

Saya telah menggunakan beberapa repo Mercurial (HG) (satu per proyek) untuk ini, tetapi karena sebagian besar Sistem Kontrol Versi akan mengalami, repo semakin besar dan lebih besar.

Nate
sumber
0

Anda harus mencoba Babi . Perangkat ini dirancang untuk menangani file dan repositori besar. 100 GB atau lebih data biner tidak masalah.

Mats Ekberg
sumber
0

Saya hanya ingin menambahkan tautan ke HgInit, pengantar yang sangat bagus untuk Mercurial jika Anda memutuskan untuk menggunakan rute itu. Secara pribadi saya menggunakan Git, tetapi mereka sangat mirip dalam hal arsitektur (keduanya adalah sistem kontrol versi terdistribusi). Sifat mereka yang terdistribusi membuat mereka hebat untuk bekerja dalam tim yang "terdistribusi" dengan baik. :)

http://hginit.com/

Bernhard Hofmann
sumber
Sementara Mercurial adalah sistem kontrol sumber yang baik untuk proyek perangkat lunak 'murni', banyak keuntungannya hilang pada proyek yang menangani file biner yang pada dasarnya murni karena tidak dapat menggabungkan hal-hal yang masuk akal. Pelajaran HgInit tidak akan masuk akal kecuali Anda hanya melakukan perangkat lunak.
whatsisname
0

Ini layak untuk dipikirkan untuk setiap deskripsi perangkat keras ascii. Setelah deskripsi yang dapat dibaca manusia untuk perangkat keras diadopsi, sistem kontrol revisi modern (RCS) bekerja dengan baik. Tata letak sirkuit biasanya sepenuhnya dijelaskan oleh file Gerber, UML menjelaskan bagian lain, yang sepenuhnya merupakan deskripsi ascii. Lebih sedikit format ascii standar untuk skema, tata letak mekanis, dan sebagainya (misalnya KiCAD).

Adopsi lebih merupakan masalah praktis, membutuhkan persyaratan yang diakui untuk kontrol revisi yang baik, termasuk perbedaan yang berarti. Yang juga sering berarti menyerahkan Word, Excel, PowerPoint, dll. Argumen yang sangat sulit terhadap manajer dan MBA, tetapi bisa dibilang industri yang diatur seperti Alat Kesehatan, Penerbangan dan Militer sudah memerlukan kontrol revisi yang baik.

Seperti yang telah ditunjukkan orang lain, sebagian besar RCS modern akan merevisi file biner kontrol, yang sangat berguna untuk pengarsipan dan mengidentifikasi versi - tetapi sistem manajemen dokumen elektronik (EDMS), Agile misalnya, dapat menetapkan nomor revisi ke biner sewenang-wenang. Membosankan.

sasguy
sumber
0

Meskipun tidak gratis, dan hampir tidak bebas bug, Altium vault melakukan pekerjaan sterling; Saya dapat memutar kembali ke titik komit dengan mudah (seperti yang seharusnya dilakukan VCS) dengan sangat mudah.

Di area ini, Altium jauh di depan alat premium (Mentor dan Cadence).

Saya tidak bekerja untuk Altium tetapi alat ini, meskipun masalah saat ini, membuat versi perangkat keras lengkap sangat sederhana.

Peter Smith
sumber
Dan itu mungkin satu-satunya hal yang baik untuk Vault ...
Matt Young
Cara UNIX; lakukan satu hal dan lakukan dengan sangat baik.
Peter Smith