【发布时间】:2014-11-28 11:46:30
【问题描述】:
我正在尝试创建帮助程序来选择所需的 git 子模块。很简单的事情:
modules=`git submodule | sed 's/.* \(.*\) (.*/\1/'`;
select var in $modules; do
echo $var;
break;
done
我的 repo 结构如下所示:
/
|-dir1
| |-submodule1
|-dir2
|-submodule1
当我将上面的脚本保存为可执行文件并从 shell 运行它时,我看到子模块的正确相对路径,如下所示:
$ cd dir1
$ git-submodule-select
1) submodule1
2) ../dir2/submodule2
#?
但是,如果我尝试将相同的命令保存为 .gitconfig 中的 git 别名,它总是显示相对于 repo 根目录的路径,无论我在哪里:
[alias]
subs = "!f() { \
modules=`git submodule | sed 's/.* \\(.*\\) (.*/\\1/'`; \
select var in $modules; do \
echo $var; \
break; \
done; \
}; f"
$ cd dir1
$ git subs
1) dir1/submodule1
2) dir2/submodule2
#?
为什么会这样?我需要相对于我当前位置的路径 - 可以通过 git 别名来完成吗?还是我必须只使用全局函数?
【问题讨论】: