git 在Eclipse中创建或忽略缺少的空目录

2wnc66cl  于 2023-05-21  发布在  Git
关注(0)|答案(2)|浏览(130)

bounty还有6天到期。回答此问题可获得+50声望奖励。J Fabian Meier想要引起更多关注这个问题:我想在Eclipse中解决上述问题,而不是通过向我的git存储库添加假文件。Maven和GitLab工作得很好,只有Eclipse有这个“问题”,所以解决方案也应该在Eclipse内。

我最近把一个项目从SVN迁移到了Git。
现在我的Eclipse报告说缺少目录src/main/resources
这个目录在SVN中是一个空目录,但是Git似乎完全忽略了空目录。
我可以告诉Eclipse

  • 在 checkout 项目时创建目录
  • 或完全忽略“错误”

pokxtpni

pokxtpni1#

我不想把假文件放进目录。我想在Eclipse端解决这个问题
您可以告诉Eclipse忽略某些问题。

  • 转到Window -> Preferences -> Validation
  • 在“验证”页中,可以启用或禁用各个验证器、设置验证消息的严重性以及自定义其他验证行为。

找到导致问题的验证程序,并根据需要禁用它或调整其设置。
但是如果没有匹配的验证器,那么...解决方案在Git端。
Git提供了一个名为gitattributes的机制,可以用来在 checkout 和其他事件时指定自定义操作。
filter属性允许您定义一对“smudge“和“clean“脚本。smudge脚本在 checkout 时运行,clean脚本在暂存文件(即添加到索引)时运行。
在本例中,您可以创建一个smudge脚本来创建所需的目录。

  • 首先在存储库的.git/config文件中定义一个filter
[filter "createDir"]
    smudge = 'mkdir -p src/main/resources && cat'
    clean = cat

这将设置一个名为“createDir”的过滤器。smudge命令创建src/main/resources目录(如果该目录尚不存在),然后将文件内容不加修改地传递给cat。clean命令只是不加修改地传递文件内容。

  • 然后将过滤器应用到.gitattributes文件中的存储库的已知文件(例如README.md,如果有的话):
README.md filter=createDir

这会将“createDir“过滤器应用于您的文件README.md
由于它涉及到 local Git配置,因此需要由开发人员激活此过程:

git config --local filter.createDir.smudge 'mkdir -p src/main/resources && cat'
git config --local filter.createDir.clean cat

git restore --source=HEAD .
kmbjn2e3

kmbjn2e32#

你通常可以破解Git来做任何你想做的事情,所以它在这里,但看起来你试图使用Git作为部署服务器,它不是(就像Blender非常接近CAD程序一样,重点是错误的,移动这个方向会伤害它的主要业务)。
让Git创建一个空目录的诀窍是告诉它那里应该有一个单独的工作树。

z8=00000000
git update-index --add --cacheinfo 160000,$z8$z8$z8${z8}00000001,path/to/empty/dir

然后当你检查提交的版本时,Git会在那里创建一个空目录。我用“黑客”这个词够多了吗正确的方法是有一个安装脚本,我在makefile中有一个“setup”目标,所有其他目标最终都依赖于它。
edit:查找所有空目录,find -empty .

find -type d -name .git -prune -o -type d -empty -exec git update-index etc {} \;

或者-exec你想怎么做就怎么做

相关问题