GIT: 提交 HMI 项目时出现致命错误

GIT: Fatal error when committing HMI project

为我的 TwinCAT 3 项目 (TE2000) 创建 HMI 项目后,我无法提交对 Git 的更改。

错误信息如下:

Git failed with a fatal error. error: open(".engineering_servers/TestLabHMI/TcHmiSrv.lock"): Permission denied fatal: Unable to process path .engineering_servers/TestLabHMI/TcHmiSrv.lock

我想 Git 对 .lock 文件并不着迷,或者这是什么意思?关于如何解决这个问题有什么建议吗?

首先,如果这是一个由 TwinCAT 生成的文件,您可以简单地指示 Git 忽略它:

cd /path/to/repo
echo "*.lock">>.gitignore
git rm --cached .engineering_servers/TestLabHMI/TcHmiSrv.lock

其次,该文件可能被另一个进程使用,阻止 Git 读取它。

Uwe Hafner's 中所述,您实际上可以忽略父文件夹 .engineering_servers/,它无论如何都会忽略锁定文件。

cd /path/to/repo
echo ".engineering_servers/">>.gitignore
git rm --cached -r .engineering_servers/
git commit -m "Remove and ignore .engineering_servers/ content"
git push

如果 HMI.sln 仍处于打开状态,则会出现错误。
关闭它然后您可以提交更改。

不幸的是,Beckhoff(制造 twincat 的公司)还没有针对 gitignore.

的 HMI 项目推荐

更新

我从 Beckhoff 那里得到了答案。如果您使用 git 源代码管理创建一个新的 HMI 项目,.gitignore 将被放入文件夹中。
基本上你可以根据这个忽略的是以下内容(git忽略样式列表):

.engineering_servers/
liveview_*
*.cache
*.db-shm
*.db-wal
*.pid
.hmiframework/
.hmipkgs/*-*-*-*/
tchmipublish.journal.json

因为 TcHmiSrv.lock 位于 .engineering-servers 文件夹中,所以可以忽略它。