2017-04-18 10 views
2

私はgitlabからこのコマンドラインのタグリストを持っていますgitタグ-lgitlabに2つの最新のタグを保存し、最も古いタグを削除するには?

入力:

echo listTags = $(git tag -l) 
listTags= v0.0.1 v0.0.2 v0.1.0 v0.1.0-1 v0.1.0-2 v0.1.0-3 v0.1.0-4 v0.1.0-5 

for tag in 'git tag -l' 
do 
    git tag -d $tag 
    git push -v origin :refs/tags/$tag 
done 

私はすべての最古のプレリリースバージョンを削除し、2最新

出力維持したい:

echo listTags = $(git tag -l) 
listTags= v0.0.1 v0.0.2 v0.1.0 v0.1.0-4 v0.1.0-5 

をどのように私は、スクリプトを使用してこの問題を解決することができますシェル?

+0

私が何をしたいことに従って、削除するタグかを選択するために一定のルールを次のスクリプトであると仮定いくつかのルールには、見えるタグに基づいています。あなたの例では、ルールはテキスト説明が示唆しているものよりも複雑であると思います。つまり、Nir Gabayの答えよりも複雑なものを探していると思います。その場合、ルールが何であるかをより明確に説明する必要があると思います。また、私は強くこれがシェルスクリプトだけでできることを超えていると強く疑う。 perlはもっと良い考えです。 –

+0

@MarkAdelsberger:まさに、私はrepo gitlabから未使用のプレリリースタグを自動的に削除するためにスクリプトを実行したいと思っています。またリリースバージョンを削除せずに最新のプレリリースを保持する必要があります。私はNir Gabayの答え、それがリリースとプレリリース版を削除すると思います –

答えて

0
git tag -l | sort -V |tail -2 

このコマンドは、

そのコマンドから結果execptすべてのタグを削除し、あなたに最新の2個のタグを与える

+0

申し訳ありません、この答えは私の問題を解決できません。リリース版とプレリリース版を削除する可能性があるためです。私は、プレリリース版を削除するためだけに探しています。 –

+0

gitタグ-l | sort -V | grep " - " | tail -2 –

+0

gitタグ-l |コマンドラインに を追加するgrepに " - "を追加すると、スクリプトはハイフンを含むすべてのタグから最新の2つのタグを取ります。 あなたの例では、プレリリースだけがハイフンを持っているので、これはあなたのために働くことができるので、 –

関連する問題