7

これは怠惰なプログラマーの要求です。次のプロセスを自動化するシェルスクリプトを作成したいと思います。

git clone <remote-repo-url>
cd <cloned-folder>
open <cloned-folder> 

したがって、ここでのアイデアは、URL を複製し、すぐcdcloned-folder. ここでのコツはcloned-folder、URL パターンから を識別することです。

今のところ、url 構造はこのパターン.../<cloned-folder>.git、つまり url であると想定できます。

awkそのようなツールを使用して実際にできるかどうか疑問に思っています。私が立ち往生している部分は、適切な を見つけることregexだと思います。

USE CASE : ここでのユース ケースは、URL を複製する場合、できるだけ早くレポフォルダーに移動したい場合です。またはgitのようなコマンドを 99% の確率で実行する場合は、これが前提条件です。git logmate .

前もって感謝します。

4

5 に答える 5

15

これを行うためのbash関数(zshでも機能します):

function lazyclone {
    url=$1;
    reponame=$(echo $url | awk -F/ '{print $NF}' | sed -e 's/.git$//');
    git clone $url $reponame;
    cd $reponame;
}

このawkコマンドは、最後の部分の後にある部分を出力します/(例:fromhttp://example.com/myrepo.gitからmyrepo.git)。sedコマンドは末尾を削除します.git

使用法:

$ pwd
~/
$ lazyclone https://github.com/dbr/tvdb_api.git
tvdb_api
Cloning into 'tvdb_api'...
remote: Counting objects: 1477, done.
remote: Compressing objects: 100% (534/534), done.
remote: Total 1477 (delta 952), reused 1462 (delta 940)
Receiving objects: 100% (1477/1477), 268.48 KiB | 202 KiB/s, done.
Resolving deltas: 100% (952/952), done.
$ pwd
~/tvdb_api
于 2012-08-21T16:25:08.180 に答える
2

git clone を使用すると、自動的に名前が付けられるのではなく、複製先のフォルダーを指定できます。

dir=myclone
git clone git://somerepo "$dir"
cd "$dir"
open "$dir"
于 2012-08-21T16:02:34.527 に答える
1

@dbrの回答からの改善:

function lazyclone {
    reponame=${1##*/}
    reponame=${reponame%.git}
    git clone "$1" "$reponame";
    cd "$reponame";
}

awkBash のパラメーター拡張の助けを借りて、 andを取り除くことができますsed

于 2015-08-31T05:01:13.063 に答える