1 Star 0 Fork 16

linCoder/java-tutorial

forked from turnon/java-tutorial 
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
git-clone.sh 2.90 KB
一键复制 编辑 原始数据 按行查看 历史
turnon 提交于 2019-10-29 21:17 +08:00 . update
#!/usr/bin/env bash
#
# 检查脚本参数,如必要参数未传入,退出脚本。
#
checkInput() {
if [ "${repository}" == "" ] || [ "${branch}" == "" ]; then
echo "请输入脚本参数:repository branch [source] [target]"
echo " repository: git 仓储(必填)。"
echo " branch: git 分支(必填)。如 master/develop"
echo " source: 代码存放目录。默认为/home/zp/source。"
echo " target: 代码存放目录。默认为脚本所在目录。"
exit 0
fi
}
#
# 判断 git 版本库是否存在。根据实际结果修改 ${gitok} 值。
#
gitok=false
isGitExist() {
cd ${SOURCE_PATH}
if [ -d "${SOURCE_PATH}/${repository}/${target}" ]; then
cd ${SOURCE_PATH}/${repository}/${target}
#(1)删除git状态零时文件
if [ -f "gitstatus.tmp" ]; then
rm -rf gitstatus.tmp
fi
#(2) 判断是否存在.git目录
if [ -d "./.git" ]; then
#(3) 判断git是否可用
git status &> gitstatus.tmp
grep -iwq 'not a git repository' gitstatus.tmp && gitok=false || gitok=true
fi
#返回到主目录
cd ${SOURCE_PATH}
fi
}
#
# 如果 git 版本库存在(根据 ${gitok} 值),执行 fetch 操作;反之,执行 clone 操作。
#
doFetchOrClone() {
if [ ! -d "${SOURCE_PATH}" ]; then
mkdir -p ${SOURCE_PATH}
fi
if ${gitok}; then
cd ${SOURCE_PATH}/${repository}/${target}
git reset --hard
git clean -ffdx
git fetch
echo "git fetch ${repository} remote repository 到本地成功"
else
#删除所有内容,便于重新进行git clone
rm -rf ${repository}
git clone --no-checkout git@github.com:${ACCOUNT}/${repository}.git ${SOURCE_PATH}/${repository}/${target}
echo "git clone ${repository} remote repository 到本地成功"
cd ${SOURCE_PATH}/${repository}/${target}
fi
}
#
# 切换到 ${branch} 分支
#
doCheckout() {
echo "检出 ${repository} ${branch} 分支代码"
isRemoteBranch=false
gitRemoteBranch=`git branch -r`
echo -e "$gitRemoteBranch" | grep -iwq ${branch} && isRemoteBranch=true || isRemoteBranch=false
if ${isRemoteBranch}; then
echo "找到 ${branch} 对应的远端分支"
git checkout -f 'origin/'${branch}
else
git checkout -f ${branch}
fi
echo "更新子模块代码"
git submodule update --init --recursive --force
}
##############################__MAIN__########################################
export LANG="zh_CN.UTF-8"
# Github 账户
ACCOUNT=dunwu
# 源码默认根目录
SOURCE_PATH=/home/zp/source
# 必填输入参数
repository=`echo $1`
branch=`echo $2`
# 可选输入参数
source=`echo $3`
target=`echo $4`
if [ "${source}" != "" ]; then
SOURCE_PATH=${source}
fi
# 0. 检查传入的参数
checkInput
# 1. 判断本地是否已存在 Git 仓库
isGitExist
# 2. 如果本地已有代码,执行 fetch;反之,从远程 clone
doFetchOrClone
# 3. 切换到指定分支
doCheckout
echo "代码检出完成!"
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/coder_wz/java-tutorial.git
git@gitee.com:coder_wz/java-tutorial.git
coder_wz
java-tutorial
java-tutorial
master

搜索帮助