使用自定义命令行选项从git存储库为特定分支创建tar文件



我刚开始学习bash,我的要求是。

  1. 从git仓库的特定分支创建一个tar文件
  2. tar文件应该以当前的名称创建,/var/tmp/folder
  3. 我的团队希望我使用命令行选项

我一直在打破这个头,有一个脚本,我确信有很多错误。请纠正并澄清疑问。

#!/bin/bash
# This script is to clone the git repo and create a tar file
GIT_BRANCH=""
GIT_REPO="https://github.com/xyz/abc"
function HELP {
echo -e "nUsage: ${BOLD}$SCRIPT [-b <git_branch>] [ -r <git_repository> ] ${NORM}"
echo -e "t-b  Git branch to use for testbed creation"
echo -e "t-r Git Repository to create tar file"
echo
exit 1
}
while getopts b:r FLAG; do
case $FLAG in
b)
GIT_BRANCH=$OPTARG
;;
?)  #unrecognized option - show help
echo -e \n"Option -${BOLD}$OPTARG${NORM} not recognized."
HELP
;;
esac
done
VERSION="$(date '+%Y_%m_%d_%H%M')"
mkdir /var/tmp/$VERSION
cd /var/tmp/$VERSION
tar -czvf $VERSION.tar.gz -b $GIT_BRANCH $GIT_REPO

您的tar命令需要一个.tarignore,以便不包含。git文件夹及其设置。

但这就是git archive本身所做的

示例:创建一个包含分支'name'上最新提交内容的tar归档文件,并将其解压缩到/var/tmp/name目录下。

git archive --format=tar --prefix=${name} ${name}| (cd /var/tmp/ && tar xf -)