Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Thủ thuật dòng lệnh để quản lý kho lưu trữ mã nguồn mở lộn xộn của bạn

Hợp tác hiệu quả, đặc biệt là trong phát triển phần mềm mã nguồn mở, bắt đầu với tổ chức hiệu quả. Để đảm bảo rằng không có gì bị bỏ sót, quy tắc chung, "một vấn đề, một yêu cầu kéo" là một quy tắc chung.

Thay vì mở ra một vấn đề với phạm vi lớn như “Sửa tất cả các liên kết bị hỏng trong tài liệu”, các dự án mã nguồn mở sẽ gặp nhiều may mắn hơn khi thu hút những người đóng góp với một số vấn đề nhỏ hơn và dễ quản lý hơn.

Trong ví dụ trước, bạn có thể phân chia các liên kết bị hỏng theo phần hoặc theo trang. Điều này cho phép nhiều cộng tác viên tham gia và cống hiến những khoảng thời gian nhỏ của họ, thay vì đợi một người thực hiện nỗ lực đóng góp lớn hơn và tẻ nhạt hơn.

Các vấn đề có phạm vi nhỏ hơn cũng giúp những người bảo trì dự án biết được nơi nào công việc đã hoàn thành và nơi nào chưa hoàn thành. Điều này làm giảm khả năng một số phần của vấn đề bị bỏ sót, được cho là đã hoàn thành và sau đó dẫn đến lỗi hoặc lỗ hổng bảo mật.

Đó là tất cả tốt và tốt. Nhưng điều gì sẽ xảy ra nếu bạn đã mở một số vấn đề có phạm vi lớn, một số PR đã được gửi hoặc hợp nhất và bạn hiện không biết công việc bắt đầu hay dừng lại ở đâu?

Sẽ cần phân loại một chút để kiểm soát trạng thái dự án của bạn trở lại. Rất may, có một số công cụ dòng lệnh giúp bạn quét, sắp xếp và tìm hiểu về một kho lưu trữ lộn xộn. Dưới đây là một số lựa chọn nhỏ mà tôi sử dụng.

Tìm kiếm và thay thế tương tác bằng vim

Bạn có thể mở một tệp trong Vim, sau đó tương tác tìm kiếm và thay thế bằng:

:%s/\<word\>/newword/gc

% cho biết để xem tất cả các dòng của tệp hiện tại, s là để thay thế, \<word\> khớp với toàn bộ từ và g cho "toàn cầu" là cho mọi lần xuất hiện. c ở cuối sẽ cho phép bạn xem và xác nhận từng thay đổi trước khi thực hiện. Bạn có thể chạy nó tự động và nhanh hơn nhiều mà không cần c , nhưng bạn có nguy cơ làm phức tạp mọi thứ nếu bạn mắc lỗi khớp mẫu.

Mô-đun nút đánh dấu liên kết-kiểm tra có một người bạn CLI tuyệt vời.

Tôi sử dụng nó thường xuyên nên tôi đã biến nó thành một hàm bí danh Bash. Để làm tương tự, hãy thêm cái này vào .bashrc của bạn :

# Markdown link check in a folder, recursive
function mlc () {
    find $1 -name \*.md -exec markdown-link-check -p {} \;
}

Sau đó chạy với mlc <filename> .

Liệt kê các thư mục con có hoặc không có kho git với find

In tất cả các thư mục con là kho lưu trữ git, hay nói cách khác, có .git trong họ:

find . -maxdepth 1 -type d -exec test -e '{}/.git' ';' -printf "is git repo: %p\n"

Để in tất cả các thư mục con không phải là kho lưu trữ git, hãy phủ định kiểm tra với ! :

find . -maxdepth 1 -type d -exec test '!' -e '{}/.git' ';' -printf "not git repo: %p\n"

Kéo nhiều kho git từ một danh sách với xargs

Ban đầu, tôi sử dụng tính năng này như một phần của việc tự động tạo lại máy tính xách tay của mình bằng tập lệnh Bash, nhưng nó khá hữu ích khi bạn đang làm việc với các phiên bản đám mây hoặc Dockerfiles.

Cho một tệp, repos.txt với liên kết SSH của kho lưu trữ trên mỗi dòng (và khóa SSH của bạn được thiết lập), hãy chạy:

xargs -n1 git clone < repos.txt

Nếu bạn muốn kéo và đẩy nhiều kho lưu trữ, trước đây tôi đã viết về cách sử dụng một lớp lót Bash để quản lý các kho lưu trữ của bạn.

Liệt kê các vấn đề theo số với jot

Tôi là đồng tác giả và người bảo trì kho lưu trữ Hướng dẫn kiểm tra bảo mật web OWASP, nơi gần đây tôi đã gặp phải một vấn đề lớn (yup, đó là "Sửa tất cả các liên kết bị hỏng trong tài liệu" - bạn đoán thế nào?) Và đã phá vỡ nó thành một số vấn đề nhỏ hơn, dễ quản lý hơn. Toàn bộ ba mươi bảy vấn đề nhỏ hơn, dễ quản lý hơn.

Tôi muốn liệt kê tất cả các vấn đề mà số đầu tiên đã trở thành, nhưng ý tưởng gõ ra ba mươi bảy số phát hành (# 275 đến # 312) có vẻ vô cùng tẻ nhạt và tốn thời gian. Vì vậy, theo kiểu lập trình viên tự nhiên, tôi đã dành cùng một khoảng thời gian mà lẽ ra tôi phải dùng để gõ ra tất cả những con số đó và tạo ra một cách để tự động hóa nó.

jot tiện ích (apt install athena-jot ) là một công cụ nhỏ giúp ích rất nhiều khi bạn muốn in ra một số con số. Chỉ cần cho nó biết bạn muốn có bao nhiêu và bắt đầu và dừng lại ở đâu.

# jot [ reps [ begin [ end ] ] ]
jot 37 275 312

Điều này sẽ in từng số, bao gồm, từ 275 đến 312 trên một dòng mới. Để biến chúng thành ký hiệu số phát hành mà GitHub và nhiều nền tảng khác tự động nhận ra và chuyển thành liên kết, bạn có thể chuyển đầu ra tới awk .

jot 37 275 312 | awk '{printf "#"$0", "}'

#275, #276, #277, #278, #279, #280, #281, #282, #283, #284, #285, #286, #287, #288, #289, #290, #291, #292, #293, #295, #296, #297, #298, #299, #300, #301, #302, #303, #304, #305, #306, #307, #308, #309, #310, #311, #312

Bạn cũng có thể sử dụng jot để tạo dữ liệu ngẫu nhiên hoặc dư thừa, chủ yếu cho mục đích phát triển hoặc thử nghiệm.

Tổ chức nguồn mở do CLI hỗ trợ

Một kho lưu trữ mã nguồn mở được tổ chức tốt là một dự án mã nguồn mở được duy trì tốt. Lưu bài đăng này để tiện tham khảo và sử dụng siêu năng lực CLI mới tìm thấy của bạn cho tốt! ?