我刚开始学习bash,我的要求是。
- 从git仓库的特定分支创建一个tar文件
- tar文件应该以当前的名称创建,/var/tmp/folder
- 我的团队希望我使用命令行选项
我一直在打破这个头,有一个脚本,我确信有很多错误。请纠正并澄清疑问。
#!/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 -)