chr*_*ral 5 git gitignore modelica openmodelica
当Examples在OpenModelica中删除包(例如)时,不会删除基础目录.相反,目录Examples包含一个名为的文件package.bak-mo,表示该目录不再使用.所以保留备份.如果文件package.bak-mo夹中存在文件,则应从git commit进程中排除此文件夹及其文件.
??? Sub1
? ??? package.mo
? ??? package.order
? ??? Examples
? ??? package.bak-mo
? ??? otherfile.mo
? ??? package.order
??? Sub2
? ??? package.mo
? ??? package.order
? ??? Demo
? ??? otherfile.mo
? ??? package.mo
? ??? package.order
Run Code Online (Sandbox Code Playgroud)
在此示例中,以下目录和文件应从git commit中排除:
? ??? Examples
? ??? package.bak-mo
? ??? otherfile.mo
? ??? package.order
Run Code Online (Sandbox Code Playgroud)
所有其他文件和目录仍应包含在可能的git提交中.
注意:此问题由https://trac.openmodelica.org/OpenModelica/ticket/4854触发
我无法弄清楚如何使这个工作.这里有什么想法?
这可以通过预提交钩子来完成.创建钩子运行
$ touch .git/hooks/pre-commit
$ chmod a+x .git/hooks/pre-commit
Run Code Online (Sandbox Code Playgroud)
添加以下代码
#!/bin/bash
path_with_pattern=$(git diff --cached --find-copies --find-renames --name-only --diff-filter=ACR | grep "\.bak-mo$")
if [[ -n $path_with_pattern ]];
then
for path in $path_with_pattern; do
folder=$(echo $path | sed 's/\/[^\/]*\.bak-mo$//')
echo "Found OpenModelica backup folder: $folder"
git reset HEAD $folder
echo "Unstaged: $folder"
rm -rf $folder # Consider adding some confirmation here (use at your own risk)
echo "Removed: $folder"
# or safer option add to .gitignore instead of removing
# echo $folder >> .gitignore
done
fi
Run Code Online (Sandbox Code Playgroud)
警告:此代码需要更多测试我没有根据需要测试此代码(仅针对您提供的示例)