Vài năm trước, tôi đã tạm thời chuyển từ làm việc trong một môi trường startup năng động và đầy cà phê sang một công việc kỹ thuật tại một công ty có nhiều kinh nghiệm và truyền thống hơn. Tôi sau đó nhận ra mối liên hệ nhị phân giữa văn hóa kỹ thuật và công cụ. Cách chúng ta suy nghĩ và làm việc được hình thành bởi những công cụ có sẵn cho chúng ta, khi nhu cầu và phong tục của chúng ta ảnh hưởng đến việc chúng ta chọn công cụ nào.
Công ty mới nơi tôi làm việc không quen với máy in 3D, phần mềm theo dõi lỗi nội bộ, hay thậm chí là một CMS tốt. Mọi thứ đều khá cổ hủ. Điều này đã có ảnh hưởng đáng kể đến những gì đồng nghiệp của tôi và tôi tạo ra hàng ngày.
Một ví dụ bao gồm vài thập kỷ qua, ngành công nghiệp đã chuyển từ gói TO220 sang D2PAK. Cùng lúc đó, các kỹ sư đã trang bị cho mình những chiếc ống hàn công suất cao, như những chiếc được sản xuất bởi JBC.
Liệu một kỹ sư trẻ tiếp cận một phòng thí nghiệm được trang bị tốt có cân nhắc bất kỳ IC phổ biến nào trong gói TO220 trong thập kỷ này không? Tôi không nghĩ vậy. Việc làm việc với D2PAKs dễ dàng hơn nhiều mà không cần phải vật lộn với ốc vít, rửa, và lá cách điện, miễn là bạn có một chiếc ống hàn thế hệ mới. Sự thay đổi đơn giản này có thể hướng dẫn một kỹ sư thiết kế các bảng mạch phẳng hơn, thường dẫn đến việc tạo ra các sản phẩm đẹp mắt hơn theo tiêu chuẩn hiện đại.
Git là một ví dụ hiếm hoi về một công cụ đã làm đảo lộn cả một ngành công nghiệp. Mười năm trước, các quản lý kỹ sư phần mềm có thể được coi là điên rồ khi áp dụng cách tiếp cận di chuyển nhanh và phá vỡ mọi thứ. Git cho thiết kế phần cứng và PCB đã làm cho điều này trở nên khả thi bằng cách kích hoạt theo dõi sửa đổi, kiểm soát phiên bản, và lùi lại các thay đổi thiết kế. Các nhà phát triển hiện nay được đảm bảo rằng nỗ lực của họ đối với các dự án mã nguồn mở luôn có thể được ghi nhận và xác minh, nhờ vào tính năng gọi là Git blame. Một thập kỷ trước, việc được công nhận cho đóng góp của bạn vào các dự án mã nguồn mở được để lại cho chính trị. Đây là tất cả những ví dụ về những thay đổi mà chúng ta có thể cảm ơn Git.
Mặc dù bản chất của ngành công nghiệp điện tử di chuyển chậm hơn phần mềm, nhiều đổi mới đang dần dần lan tỏa đến công việc hàng ngày của chúng ta. Altium Designer®, với sự giới thiệu của cả Altium 365® và Concord Pro™ trong năm nay, đã dẫn đầu ngành công nghiệp, với những người chơi quan trọng khác đang vật lộn để theo kịp, đôi khi với các tính năng được phát hành hơn một thập kỷ trước. Git cho thiết kế phần cứng và PCB là một trong những công nghệ thúc đẩy sự thay đổi đó.
Một cách rất đơn giản, Git là một hệ thống kiểm soát phiên bản (VCS). Đó là một phần mềm (bao gồm cả các giao thức và định dạng dữ liệu cơ bản) được sử dụng bởi các nhà phát triển phần mềm để theo dõi và quản lý các thay đổi mã. Nếu bạn là một nhà phát triển phần mềm làm việc trong thập kỷ này, bạn không sao chép các thư mục trên máy tính để thử nghiệm, bạn có khả năng sử dụng một VCS dựa trên Git.
Mặc dù Git rất phổ biến để theo dõi các thay đổi mã trong phát triển phần mềm, nó có thể được sử dụng để theo dõi thay đổi của bất kỳ tập hợp tệp nào. Những tệp này không cần phải chứa mã, chúng có thể là tệp thiết kế PCB của bạn, tài liệu thiết kế, tệp sản xuất PCB và bất kỳ tệp nào khác bạn cần cho dự án của mình. Git cho phần cứng là sự mở rộng tự nhiên của hệ sinh thái Git đến thiết kế cơ khí, thiết kế PCB, firmware và nhiều hơn nữa.
Git có sẵn miễn phí cho việc sử dụng thương mại. Nó là mã nguồn mở và được phân phối dưới Giấy phép Công cộng GNU. Mỗi thư mục Git là một thực thể riêng biệt và chính nó là một kho chứa bao gồm lịch sử hoàn chỉnh của các mục của nó. Mọi tệp đặt trong kho chứa Git đều có thể theo dõi đầy đủ đến từng bit, bởi ai và khi nào. Các kho chứa Git không yêu cầu truy cập mạng, với mỗi kho chứa hoàn toàn độc lập với máy chủ (các) mang tên là remote(s).
Vì vậy, không có gì ngạc nhiên khi nó hiện là Hệ thống Kiểm soát Phiên bản (VCS) phổ biến nhất thế giới. Hầu hết các phân tích thị phần cho thấy Git chiếm hơn 75%, và phương án thay thế phổ biến nhất, SVN, đã suy giảm kể từ năm 2012. Số lượng vị trí công việc yêu cầu SVN (một VCS lỗi thời, cũng được Altium Designer hỗ trợ) cũng đang suy giảm trong khi Git ngày càng được ưa chuộng.
Git được tạo ra và viết vào năm 2005 bởi Linus Torvalds, người đàn ông, huyền thoại, người sáng tạo và phát triển nhân Linux, để theo dõi sự phát triển của chính nhân Linux. Cộng đồng Linux đã được cấp quyền sử dụng miễn phí một phần mềm thương mại gọi là BitKeeper. Vào tháng 4 năm 2005, tác giả của Bitkeeper đã rút lại giấy phép sau khi một thành viên nổi bật của nhóm Linux và nhà phát minh của máy chủ tệp Samba, Andrew Tridgell, bắt đầu làm việc trên một khách hàng mã nguồn mở dựa trên giao thức BitKeeper được (cho là) đảo ngược kỹ thuật. Giấy phép BitKeeper cấm rõ ràng việc đảo ngược kỹ thuật.
Do đó, Linus Torvalds quyết định tạo ra hệ thống kiểm soát phiên bản của riêng mình, không quá lỏng lẻo dựa trên BitKeeper, vì không có phương án thay thế nào khác đáp ứng được yêu cầu của ông.
Torvalds quyết định rằng phần mềm mới sẽ rất khác so với CVS (Hệ thống Phiên bản Đồng thời) đang được sử dụng vào thời điểm đó. Ông nhận ra rằng các hệ thống hiện tại có thể mất nhiều thời gian để áp dụng các bản vá, và vì ông cần áp dụng hàng trăm bản vá cùng một lúc khi đồng bộ hóa với nhóm của mình, hiệu suất của chúng xa mới được chấp nhận được. Ông đã đưa ra một loạt yêu cầu:
Việc phát triển Git bắt đầu từ đầu tháng Tư năm 2005. Vào ngày 16 tháng 6 năm 2005, phiên bản 2.6.12 của nhân Linux, lý do tại sao phần mềm này cần được phát triển gấp, đã được phát hành. Sau đó, việc phát triển và bảo trì Git đã được chuyển giao cho Junio Amano, người đã đóng góp và vẫn tiếp tục đóng góp vào sự phát triển của nó, và được rất nhiều người công nhận vì đã làm cho phần mềm này dễ sử dụng; Git 1.0 đã được phát hành vào tháng 12 năm 2005.
Tại sao lại là Git? Một cái tên khá lạ lẫm, phải nói! Như hầu hết mọi người ở Vương quốc Anh biết, thuật ngữ này thường được dùng để chỉ ai đó hơi láu cá hoặc, theo Từ điển Trực tuyến Oxford, "một người khó chịu hoặc đáng khinh". Ý nghĩa được báo cáo thêm là "kẻ ngốc" (tiếng lóng từ thế kỷ 18 đến 19 (UK)) hoặc "đứa trẻ bất hợp pháp" (tiếng lóng từ giữa thế kỷ 18 đến 19 (Mỹ)), cả hai đều khá phù hợp một cách thơ mộng vào huyền thoại về thiên tài ẩn dật tạo ra tác phẩm nghệ thuật thay đổi thế giới.
Torvalds đã đưa ra nhiều lý do cho việc đặt tên hệ thống của mình là "Git", tùy thuộc vào cảm xúc của người sử dụng vào ngày đó, hoặc có lẽ là cảm xúc của ông ấy vào những thời điểm khác nhau khi viết hệ thống! Ông thường mô tả nó là "the stupid content tracker" trong tài liệu chính thức, và định nghĩa của Git là:
Ồ, hài hước của lập trình viên.
Tuy nhiên, Git không hoàn hảo và có một số nhược điểm. Cấu trúc dữ liệu khó hiểu và cách đặt tên kỳ lạ chắc chắn là một trong số đó. Điều này bao gồm Git cho các dự án phần cứng, nơi cùng một cấu trúc tệp và các thao tác được áp dụng.
Cherry-picking, Checkout, Index, Clone, Push, Stash, Pull/Pull Request, Tag, Upstream, Fork, Rebase, Origin, Fetch, và HEAD (luôn được viết hoa toàn bộ, tôi không hiểu tại sao) là một số thuật ngữ kỳ lạ nhất mà bạn có thể mong đợi tìm thấy trong thế giới phần mềm.
Việc hiểu cách thiết lập một kho lưu trữ như phần mềm phía máy chủ, và hiểu mối quan hệ giữa kho lưu trữ cục bộ và kho lưu trữ từ xa cùng với các thao tác để giữ chúng đồng bộ có thể khá khó khăn. Git có xu hướng phức tạp hơn nhiều so với SVN để học và sử dụng, một phần do nó mạnh mẽ và hiệu quả hơn nhiều.
May mắn thay, Altium Designer và Concord Pro giải quyết hầu hết những vấn đề này. Trong khi chúng ta có toàn quyền truy cập vào sức mạnh của Git thông qua dòng lệnh, giao diện người dùng và sự tích hợp chặt chẽ của Concord Pro làm cho việc vận hành trở nên dễ dàng và trực quan. Đồng thời, Altium 365 giải quyết tất cả các rắc rối phía máy chủ.
Git có thể xuất hiện như... rất kỳ lạ! Thuật ngữ chủ yếu phản ánh một quy trình làm việc khác biệt đáng kể so với việc sao chép và dán, nén và gửi email mà nhiều kỹ sư đã quen thuộc.
Mô hình nhánh có lẽ là tính năng phổ biến nhất làm cho Git khác biệt so với các hệ thống kiểm soát phiên bản khác như SVN. Git có thể có nhiều nhánh, cả local và remote. Giống như nhánh của cây tách ra từ thân chính hoặc từ nhau, nhánh Git mọc ra từ các nhánh khác. "Thân chính" của cây, hay nhánh chính, được gọi là master. Các nhánh có thể được tạo, hợp nhất và xóa một cách dễ dàng. Dưới đây là cách thức hoạt động của các thao tác này:
[Chế độ Nerd BẬT]
Vậy tính năng thông minh này hoạt động như thế nào? Một nhánh cơ bản là một con trỏ đến một commit. Một commit là một tập hợp các thay đổi, thêm vào, hoặc loại bỏ tệp được đẩy vào kho lưu trữ. Commit có một mã kiểm tra SHA-1 mã hóa 40 ký tự được ghi vào một tệp. Mỗi commit cũng bao gồm một con trỏ đến commit mẹ từ đó nó bắt nguồn.
Có nhiều bước trung gian bổ sung, ví dụ, các tệp được chuyển đổi thành các blob nhị phân có kiểm tra mã và được tổ chức trong các thư mục thông qua một cây nhị phân. Mã kiểm tra của cây cũng được tính toán. Vì mọi thứ đều được mã hóa mật mã, không có cách nào thay đổi (hoặc làm hỏng) dữ liệu hoặc lịch sử mà không thay đổi mã hash của commit cuối cùng. Mã hóa mật mã làm cho lịch sử của Git phần nào vĩnh viễn, vì vậy hãy lịch sự khi viết tin nhắn commit!
[Chế độ Nerd TẮT]
Nhờ vào bản chất phân tán của Git cho phần cứng và hệ thống nhánh tiên tiến, cũng như nhiều tính năng khác, người dùng tự do áp dụng bất kỳ quy trình làm việc nào.
Trong số các mô hình phổ biến nhất, mô hình *Quy trình Tập trung* thường được sử dụng khi những người có kinh nghiệm với hệ thống kiểm soát phiên bản tập trung bắt đầu sử dụng Git (là *phi tập trung*) lần đầu tiên. Mô hình *Quy trình Tập trung* gần như hoàn toàn dựa vào nhánh master, nơi tất cả các commit được đẩy vào và lấy từ, làm cho Git mô phỏng hành vi và hệ thống tệp từ xa của SVN.
Quy trình Feature Branching là sự phát triển từ *Centralised Workflow*. Công việc phát triển được thực hiện trên các nhánh riêng biệt sau đó được hợp nhất vào master. Tôi là một người ủng hộ nhiệt tình mô hình này trong kỹ thuật điện tử, và tôi đang mong chờ Altium công bố hỗ trợ nhánh để tận dụng lợi ích từ nó. Ví dụ về các nhánh tính năng có thể là “fix_current_generator_oscillation”, “upgrade_microcontroller”, “lower_power_consumption”, hoặc “reduce_thermal_drift”.
Trong quy trình GitFlow, có lẽ là phức tạp nhất trong số các quy trình phổ biến, nhánh master chỉ chứa các bản phát hành thiết kế hoàn chỉnh, bạn có thể coi nó như là board_v_1.0, board_v_1.1, v.v. Việc phát triển được thực hiện trên một nhánh riêng biệt gọi là develop, và các tính năng và sửa lỗi bắt nguồn từ nhánh develop. Chỉ có nhánh develop mới được hợp nhất vào master khi nó đã sẵn sàng.
Git nhanh hơn các hệ thống kiểm soát phiên bản khác vì nhiều lý do. Mỗi người dùng có thể sao chép kho lưu trữ gốc, và các commit có thể được thực hiện thường xuyên trên các nhánh cục bộ và gửi đến máy chủ từ xa ít thường xuyên hơn. Các VCS không phân tán như vậy bị giới hạn bởi khả năng của máy chủ từ xa, phải giảm tốc độ đáng kể để đáp ứng tất cả các yêu cầu của họ.
Cách tiếp cận ưu tiên cục bộ này đặc biệt quan trọng trong ngành điện tử, vì các tệp có thể khá lớn. Không phải là hiếm khi thiết kế PCB có kích thước hàng chục megabyte, đặc biệt là với hàng trăm thân 3D. Các tệp mã nguồn, ngược lại, thường chỉ vài trăm KByte tối đa.
Trong công ty cuối cùng tôi làm việc, chúng tôi có một kho lưu trữ SVN được lưu trữ tại trụ sở chính, truy cập qua VPN, nơi chúng tôi sẽ lưu trữ các tệp dự án và tài liệu. Việc thực hiện bất kỳ thao tác nào cũng mất rất nhiều thời gian, và kết nối internet hạn chế của chúng tôi thường xuyên bị tắc nghẽn bởi tất cả các yêu cầu để quản lý hàng ngàn tệp.
Git cũng được viết bằng ngôn ngữ C, có nghĩa là gánh nặng của nó tối thiểu so với các ngôn ngữ cấp cao khác. Tùy thuộc vào thao tác, Git có thể nhanh hơn SVN từ vài lần đến hàng trăm lần.
Cách tiếp cận phân tán, ưu tiên ngoại tuyến cũng làm cho Git nhẹ hơn nhiều trên mạng. Ngay cả khi công ty của bạn không có quyền truy cập vào băng thông rộng, bạn có thể đẩy dữ liệu vào giờ ăn trưa hoặc sau giờ làm việc, mà không mất hiệu suất trong công việc hàng ngày.
Trên Concord Pro, bạn có thể tận hưởng tất cả các lợi ích của Altium 365 khi bạn có quyền truy cập vào kết nối internet, sau đó di chuyển bản quyền Altium Designer của mình và tiếp tục làm việc ngoại tuyến.
Khi làm việc với Git, điều cần thiết là phải nhận ra rằng các tệp tin trải qua ba giai đoạn trước khi chúng thực sự được coi là đang dưới sự kiểm soát phiên bản:
Chưa theo dõi là khi tệp tin tồn tại trên đĩa, nhưng nằm ngoài hệ thống kiểm soát phiên bản. Tệp tin chưa theo dõi sau đó có thể được chuẩn bị, nghĩa là nó đã được thêm vào hệ thống kiểm soát phiên bản nhưng chưa được cam kết. Tại thời điểm này, các thay đổi đã chuẩn bị có thể được cam kết. Hệ thống chuẩn bị được sử dụng để chuẩn bị cho việc cam kết, nhưng tính năng này chủ yếu được sử dụng trong thao tác dòng lệnh.
Khi sử dụng Git thông qua Altium, nhờ giao diện người dùng đồ họa làm đơn giản hóa thao tác, phương pháp chuẩn bị được áp dụng tự động ở hậu trường khi bạn lưu các thay đổi lên máy chủ.
Các kho lưu trữ được tạo tự động trên máy chủ khi bạn tạo một dự án mới. Trong cửa sổ dưới đây, tôi đang tạo một dự án PCB mới từ một mẫu trong không gian làm việc Fermium LTD của tôi. Ngay khi tôi tạo dự án, nó sẽ được truy cập trong không gian làm việc Altium 365 của tôi, và nền tảng sẽ tự động tạo một kho lưu trữ Git cho dự án mới.
Các kho lưu trữ được tạo với Concord Pro được cấu hình tự động, vì vậy chỉ có các tệp tin cần thiết mới được cam kết vào kho lưu trữ Git của dự án, trong khi các bản sao lưu cục bộ và tệp LOG thì không. Thông thường, sẽ cần phải cấu hình một tệp gọi là ".Gitignore" một cách phù hợp và chăm sóc để không cam kết các tệp không cần thiết, nhưng Concord Pro đã lo liệu việc đó.
Để truy cập các kho lưu trữ Git, người ta thường cần cấu hình khóa SSH và thông tin xác thực người dùng cả ở phía máy chủ và phía máy khách. Concord Pro tự động lo liệu việc này khi một người dùng mới được thêm vào.
Sao chép là quá trình thông qua đó Git sao chép kho lưu trữ từ xa vào một bản sao cục bộ. Việc sao chép thủ công các kho lưu trữ lớn với các tệp nhị phân, như các tệp PcbDoc và SchDoc, thường đòi hỏi phải thao tác dòng lệnh cấp độ chuyên nghiệp với Git. Altium Designer và Concord Pro tự động sao chép kho lưu trữ vào máy tính cục bộ của bạn ở chế độ nền khi bạn mở một dự án từ xa.
Concord Pro cho phép bạn so sánh sự thay đổi giữa các phiên bản khác nhau, cả cục bộ và từ xa, thông qua bảng điều khiển quản lý lưu trữ. Trong ví dụ sau, tôi đã thêm một đối tượng ghi chú văn bản và cam kết các thay đổi cục bộ, nhưng không đẩy chúng lên kho từ xa.
Điều này cung cấp cho chúng ta toàn bộ chức năng cần thiết trong một nền tảng Git cho phần cứng.
Git là một công cụ mạnh mẽ, và git cho phần cứng cung cấp cho các nhà thiết kế PCB một quy trình làm việc toàn diện cho kiểm soát phiên bản, chia sẻ và quản lý sửa đổi. Hệ thống phổ biến này đã giúp hình thành nên văn hóa của các lập trình viên hiện đại. Bây giờ với Altium Designer® và nền tảng Altium 365®, các nhà thiết kế có thể truy cập vào các tính năng Git cho thiết kế PCB.
Bạn có thể bắt đầu thử nghiệm Altium 365 ngay hôm nay, được tải với các dự án ví dụ, để trải nghiệm phong cách phát triển điện tử của thế kỷ 21. Có thêm câu hỏi? Nói chuyện với chuyên gia tại Altium ngày hôm nay.