gpt4 book ai didi

svn:忽略生成的子文件夹

转载 作者:行者123 更新时间:2023-12-04 18:30:27 28 4
gpt4 key购买 nike

我总是遇到 svn:ignore 的问题,但这次我想我可能正在尝试一些不可能的事情。

假设目录结构:

/
/foo
/bar
/web
/uploads
/assets
/avatars
/fu
/*.jpg
/ba
/*.jpg
keepme.jpg
keepmetoo.jpg

我想忽略头像目录的所有子文件夹,但不忽略该目录的文件(keepme.jpg、keepmetoo.jpg)。

avatar 子文件夹(fu, ba)是自动生成的,名称无法预先确定,因此需要完全忽略所有/avatar 子文件夹。

这可能吗?如何?

编辑 我们宁愿不使用提交后 Hook 。这只是一个偏好问题。我们有很多完善的应用程序,并且已经开发了一种标准化的做事方式,而 post commit hooks 还没有被使用。我们宁愿不添加任何不必要的额外移动部件。坦率地说,在考虑添加提交后 Hook 之前,我们更有可能解决目录结构(这不是一项小任务)。

最佳答案

除了/avataurs/fu 和 avatars/ba(实际上所有的 avatars/xxx)之外,您想将整个批处理存储在 svn 中吗?

您需要最初将剩余的目录结构添加到 svn。使用 Tortoise 添加根目录,取消勾选不想添加的目录,然后提交。这解决了最初的问题 - 不提交有问题的子目录,一切都很好。

除了,下一个问题是您不希望其他人“意外”添加新生成的子目录 - 在这种情况下,预提交 Hook 是必不可少的。它们确实非常简单——你只需要编写一个快速批处理文件或 perl 脚本,在传入文件的路径上执行正则表达式,如果包含 ".*/avatars/.*/.*",则返回 1。 (这仍然允许将新文件添加到该目录)。该钩子(Hook)还可以返回将显示给正在添加文件的用户的文本。我使用一个来防止文件以禁止列表(例如 .obj 等)上的文件扩展名 checkin 。

如果头像子目录永远不会进入 SVN,那么您将永远不会检查它们 - 显然 - 并且您的工作已经完成!

这是我的 pre-commit.cmd Hook 文件的副本。只需将其放入您的 hooks 目录(在 Windows 上)就可以了。

@echo off

svnlook changed -t %2 %1 > c:\temp\pre-commit.txt

findstr /G:"%1\hooks\ignore-matches.txt" c:\temp\pre-commit.txt > c:\temp\precommit-bad.txt
if %ERRORLEVEL% NEQ 0 exit 0

echo disallowed file extension >> c:\temp\precommit-bad.txt

type c:\temp\precommit-bad.txt 1>&2
exit 1

ignore-matches.txt 文件包含如下行:
^[^D].*\.obj$

任何与 ignore-matches.txt 文件中的条目匹配的内容都意味着提交被拒绝,用户将不得不再次尝试,这次是正确的。

关于svn:忽略生成的子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3732762/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com