如何使用bash脚本参数化git checkout

时间:2016-10-12 10:54:52

标签: git bash parameter-passing

我有项目共享多个版本的目录,我尝试创建简单的脚本,为每个模块检查正确的版本,配置是单独的文件(2.6是其中之一)。

配置文件如下:

<module_name1> <branch_name1>
<module_name2> <branch_name2>

脚本:

被修改

while read path branch;
do
  cd $path
  echo
  echo $path
  echo "$branch"
  git checkout "$branch"
  cd ..
done < 2.6

不幸的是,git似乎没有识别以这种方式传递的分支名称导致错误:

  

&#39;与git已知的任何文件都不匹配。

我想了解如何修复此类脚本或以其他方式创建脚本?

(或者可能是一些可配置的群发检查工具?......)

编辑:

经过一些测试,似乎git认为&#39; $ branch&#39;作为一个空字符串(我之前用echo回复了它的内容)

3 个答案:

答案 0 :(得分:0)

您应该查看git submodules

答案 1 :(得分:0)

使用read将输入行拆分为多个变量的能力:

while read path branch; do
  cd "$path"
  git checkout "$branch"
  ...

答案 2 :(得分:0)

显然从单独的文件中读取变量,通过添加carriege返回来破坏它们,因此它在修剪后开始工作。

(它更糟糕,它已经损坏了回声输出,我只是在将结果传输到另一个文件而不是控制台之后才找到它)

FIX: branch = $(echo“$ {branch // [$'\ t \ r \ n']}”)