BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

厄介なオープンソースリポジトリを管理するためのコマンドラインのトリック

特にオープンソースソフトウェア開発における効果的なコラボレーションは、効果的な組織化から始まります。見逃しがないことを確認するために、「1つの問題、1つのプルリクエスト」という一般的なルールが経験則です。

「ドキュメント内の壊れたリンクをすべて修正する」のような大きな範囲で問題を開く代わりに、オープンソースプロジェクトは、いくつかの小さくて管理しやすい問題で貢献者を引き付ける運が高くなります。

前の例では、壊れたリンクをセクションごとまたはページごとにスコープすることができます。これにより、1人の人がより大きくて退屈な貢献の努力をするのを待つのではなく、より多くの貢献者が飛び込んで自分の時間の小さな時間枠を捧げることができます。

範囲の狭い問題は、プロジェクトのメンテナが作業が完了した場所と完了していない場所を確認するのにも役立ちます。これにより、問題の一部が見落とされ、完了したと見なされ、後でバグやセキュリティの脆弱性につながる可能性が低くなります。

それはすべて順調です。しかし、すでにいくつかの大規模な問題を開いていて、いくつかのPRがすでに提出またはマージされていて、現在、作業がどこで開始または停止したかわからない場合はどうなりますか?

プロジェクトの状態を制御できるようにするには、少し整理する必要があります。ありがたいことに、乱雑なリポジトリをスキャン、並べ替え、理解するのに役立つコマンドラインツールがいくつかあります。これが私が使っているもののほんの一部です。

インタラクティブな検索と置換をvimで行う

Vimでファイルを開き、インタラクティブに検索して次のように置き換えることができます:

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

% 現在のファイルのすべての行を調べることを示しますs 代用です、\<word\> 単語全体に一致し、g 「グローバル」はすべての出来事に対応します。 c 最後に、変更が行われる前に、各変更を表示して確認できるようになります。 cを使用しなくても、自動的に、はるかに高速に実行できます。 、ただし、パターンマッチングのエラーを犯した場合は、事態が複雑になるリスクがあります。

ノードモジュールを使用してMarkdownファイルでデッドリンクを検索する

markdown-link-checkノードモジュールには優れたCLIバディがあります。

私はこれを頻繁に使用するので、Bashエイリアス関数に変換しました。同じことを行うには、これを.bashrcに追加します :

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

次に、mlc <filename>で実行します 。

findを使用してgitリポジトリの有無にかかわらずサブディレクトリを一覧表示します

gitリポジトリである、つまり.gitを持つすべてのサブディレクトリを印刷します それらの中で:

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

gitリポジトリではないすべてのサブディレクトリを出力するには、!でテストを無効にします。 :

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

xargsを使用してリストから複数のgitリポジトリをプルします

私は当初、Bashスクリプトを使用してラップトップを自動的に再作成する一環としてこれを使用しましたが、クラウドインスタンスやDockerfileを使用する場合は非常に便利です。

与えられたファイル、repos.txt 各行にリポジトリのSSHリンク(およびSSHキーを設定)を使用して、次のコマンドを実行します。

xargs -n1 git clone < repos.txt

多くのリポジトリをプルしてプッシュしたい場合は、Bashワンライナーを使用してリポジトリを管理する方法について以前に書きました。

jotを使用して問題を番号で一覧表示します

私はOWASPWebセキュリティテストガイドリポジトリの共著者兼メンテナーであり、最近1つの大きな問題を取り上げ(「ドキュメント内の壊れたリンクをすべて修正する」でした。どう思いますか?)、それを壊しました。いくつかのより小さく、より管理しやすい問題にまで。全体で37のより小さく、より管理しやすい問題。

元の問題が発生したすべての問題を列挙したかったのですが、37の問題番号(#275から#312)を入力するというアイデアは、非常に面倒で時間がかかるようでした。したがって、自然なプログラマーのやり方で、私はそれらすべての数字を入力するのに使用したのと同じ時間を費やし、代わりにそれを自動化する方法を作り上げました。

jot ユーティリティ(apt install athena-jot )は、いくつかの数字を印刷するときに非常に役立つ小さなツールです。必要な数と、開始および停止する場所を指定するだけです。

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

これにより、275から312までの各数値が新しい行に出力されます。これらをGitHubや他の多くのプラットフォームが自動的に認識してリンクに変換する問題番号表記にするために、出力を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

jotを使用することもできます 主に開発またはテストの目的で、ランダムまたは冗長なデータを生成するため。

CLIを利用したオープンソース組織

適切に編成されたオープンソースリポジトリは、適切に管理されたオープンソースプロジェクトです。便利な参照用にこの投稿を保存し、新しく見つけたCLIの超能力を永久に使用してください! ?


  1. PC をより詳細に制御できる 14 の Windows 10 コマンド ライン トリック

    しかし、内なるオリバー ツイストがもっと知りたい場合は、コマンド ラインについて学び始める必要があります。 コマンド プロンプトを使用すると、GUI では利用できない機能にアクセスでき、Windows 10 オペレーティング システムを直接操作できます。 この記事では、コンピューターを使用しているときにスーパー ヒーローのように感じるのに役立つコマンド ラインの 14 のヒントとコツを紹介します。これにより、友人も感銘を受けること間違いなしです。 コマンド プロンプトでコマンドを実行するときは、細心の注意を払う必要があることに注意してください。実行するコマンドは、コンピュータに永続的な影

  2. Android 向けオープン ソース ゲーム ベスト 5

    私たちは皆、子供時代に独自の帝国や王国を築きたいと考えていました。この願いは、古典的なゲームとその後のスピンオフによって実現されました。 ファンタジーとストラテジー ビデオ ゲームの融合により、文字通り、私たちの子供時代の空想がデジタルの世界にもたらされました。 今日、この記事では、オープンソースである上位 5 つのゲームをリストします。これは、開発者がこれらのゲームのソース コードを使用して、新しい機能を追加したり、まったく新しいゲーム体験をゼロから作成したりできることを意味します。 Android 向けオープンソース ゲーム ベスト 5 Android 向けのオープンソース ゲームに