GitHubからダウンロードする最も短い方法

GitHubからダウンロードする最も短い方法

これがGitHubからさまざまなマスターブランチをダウンロードする方法です。私の目標はもっと美しいスクリプト(おそらくより安定していますか?)

wget -P ~/ https://github.com/user/repository/archive/master.zip
unzip ~/master.zip
mv ~/*-master ~/dir-name

タールとパイピングを使用して何らかの方法で1行に減らすことはできますか?

ホームディレクトリに直接ダウンロード~/し、ディレクトリに特定の名前を付ける問題を解決してください(mv本当に必要ですか?)。

答え1

ほしい最短ルートはようですgit clone https://github.com/user/repository --depth 1 --branch=master ~/dir-name。これにより、マスターブランチのみがコピーされ、追加情報をできるだけ少なくコピーできます~/dir-name

答え2

これにより、作成された新しいディレクトリにファイルが複製されます。

git clone [email protected]:whatever NonExistentNewFolderName

答え3

私が個人的に使用するbash機能から始めましょう。

wget_github_zip() {
  if [[ $1 =~ ^-+h(elp)?$ ]] ; then
    printf "%s\n" "Downloads a github snapshot of a master branch.\nSupports input URLs of the forms */repo_name, *.git, and */master.zip"
    return
    fi
  if [[ ${1} =~ /archive/master.zip$ ]] ; then
    download=${1}
    out_file=${1/\/archive\/master.zip}
    out_file=${out_file##*/}.zip
  elif [[ ${1} =~ .git$ ]] ; then
    out_file=${1/%.git}
    download=${out_file}/archive/master.zip
    out_file=${out_file##*/}.zip
  else
    out_file=${1/%\/} # remove trailing '/'
    download=${out_file}/archive/master.zip
    out_file=${out_file##*/}.zip
    fi
  wget -c ${download} -O ${out_file}
  }

ファイル名を常にmaster.zipとして指定し、常にホームディレクトリにダウンロードしたいと思います。

wget_github_zip() {
  if [[ $1 =~ ^-+h(elp)?$ ]] ; then
    printf "%s\n" "Downloads a github snapshot of a master branch.\nSupports input URLs of the forms */repo_name, *.git, and */master.zip"
    return
    fi
  if [[ ${1} =~ /archive/master.zip$ ]] ; then
    download=${1}
  elif [[ ${1} =~ .git$ ]] ; then
    out_file=${1/%.git}
    download=${out_file}/archive/master.zip
  else
    out_file=${1/%\/} # remove trailing '/'
    download=${out_file}/archive/master.zip
    fi
  wget -c ${download} -O ~/master.zip && unzip ~/master.zip && mv ~/master.zip ~/myAddons
  }

ただし、次の点を考慮する必要があります。

1)私の元のスクリプトは、各ダウンロードにgithubリポジトリの名前に基づいて一意のダウンロードzipファイル名を提供します。これは通常、すべてを呼び出してからmaster一意性を確保するために手動で名前を変更するのではなく、ほとんどの人が実際に望むものです。このバージョンのスクリプトでは、$ out_file値を使用して解凍ツリーのルート名を一意に指定できます。

zip2)ダウンロードしたすべてのファイルの名前を本当に指定したい場合は、解凍~/master.zip後に各ファイルを削除してもよろしいですか?

3) 常にディレクトリ内のすべてが欲しいと思うので、そこで~/myAddonsすべての作業を行い、解凍したディレクトリを移動する必要をなくすのはどうでしょうか?

答え4

ダウンロードして解凍する方法はいくつかあります。1行コマンド:

# With WGET and JAR:
wget -O - https://github.com/user/repo/archive/master.zip | jar xv

# With WGET and TAR:
wget -O - https://github.com/user/repo/archive/master.tar.gz | tar xz

# With CURL and JAR:
curl -L https://github.com/user/repo/archive/master.zip | jar xv

# With CURL and TAR:
curl -L https://github.com/user/repo/archive/master.tar.gz | tar xz

関連情報