用于阻止大于 20MB 的提交的预提交挂钩

2024-05-01

是否可以为 SVN 1.8 编写 prcommit 挂钩以避免提交大于 ~20MB 的文件。任何建议,将不胜感激。谢谢 ! 我尝试过,但这不适用于二进制文件或其他文件扩展名

filesize=$($SVNLOOK cat -t $TXN $REPOS $f|wc -c)
if [ "$filesize" -gt "$MAX_SIZE"]
then
    echo "File $f is too large(must <=$MAX_SIZE)" >&2
    exit 1
fi

您需要在这里做两件事:

  • 首次使用svn -t$TXN changed获取事务中更改的路径。您需要过滤掉由以下命令返回的任何行的目录svn changed以一个结尾/.
  • 对于每个条目svn changed,你需要运行svn -t$TXN filesize file反对。然后,总结文件更改。

像这样的东西。这尚未经过测试,但应该可以给您一个想法:

total=0
svnlook -t $TXN changed | while read status file
do
    [[ status == "D" ]] && continue  # Ignore deletions
    [[ $file == */ ]] && continue    # Skip directories
    size=$(svnlook -t $TXN filesize $REPOS $file)
    ((total+=size))
done
if [[ $total -gt $maxsize ]]
then
    echo "Commit is too big!" >&2
    exit 1
else
    exit 0
fi

但是,我不喜欢使用 shell 来执行钩子脚本。相反,您应该使用真正的脚本语言,例如 Python 或 Perl。它们只是更容易使用,而且更强大、更灵活。

为什么你必须过滤掉这些大的提交?您是否让开发人员尝试提交他们刚刚构建的可执行文件?


Lazy badger 指出,您不是在谈论总提交大小,而是在谈论单个文件那么大。如果是这种情况,你会做一个类似的钩子,但不总计:

svnlook -t $TXN changed | while read status file
do
    [[ $status == "D" ]] && continue  # Skip Deletions
    [[ $file == */ ]] && continue     # Skip directories
    size=$(svnlook -t $TXN filesize $REPOS $file)
    if [ $size -gt $maxsize ]]
    then
        echo "File '$file' too large to commit" >&2
        exit 2
    fi
done
exit 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于阻止大于 20MB 的提交的预提交挂钩 的相关文章

  • SVN 存储库的总大小?

    当我测量服务器上的文件夹大小时 我有一个 8 GB 的 SVN 存储库 但是当我在本地检查它时 只需从根目录检查完整存储库 所有分支 标签 其大小为 50 GB 仍在计算中 看来 SVN 在压缩内容方面做得很好 怎么尺寸相差这么大 有没有什
  • Tortoise 无法连接到 subversion 服务器

    我正在尝试在我的家庭服务器上设置 Subversion 存储库 经过一些更改后 我在 Windows Server 2003 服务器上卸载并重新安装了 VisualSVN Server 并且存储库的地址 即 URL 是https serve
  • OSX 通过 macports 安装 subversion 时出错

    我正在尝试安装 subversion 1 7 2 从默认的 Lion 版本 1 6 升级 跑步sudo port install subversion安装成功完成 但是在运行 svn version 时收到此错误 svn version d
  • 如何加快 SVN 更新速度?

    我们有一个相当大的 SVN 存储库 我们添加的代码越多 执行 SVN 更新所需的时间就越长 我们添加了svn externals到某些项目中重复的文件夹 例如FCK编辑器 http en wikipedia org wiki CKEdito
  • 设置了 @version $Id$ 的 SVN Checkout

    我在 Subversion 中进行开发 在每个 PHP 文件的顶部都有以下注释块
  • 使用 git-svn (或类似的)*只是*来帮助进行 svn 合并?

    我的项目中出现了一些复杂的颠覆合并 已经分开很长时间的大分支 Svn 给出了太多的冲突 其中一些看起来是虚假的 鉴于git因卓越的合并体验而受到称赞 用起来有什么好处吗git svn just for使合并更易于管理有何好处 你能推荐其他选
  • 检查没有 .svn 文件的 svn 存储库

    我的专用服务器 Centos 5 5 上有一个 svn 存储库 位于 var svn myRepository 我只想将这些文件复制到我的生产文件夹 var www myWebapp 中 据我了解 SVN 我只能在本地项目文件夹上使用 sv
  • TortoiseSVN svnadmin

    目前我正在设置 TortoiseSVN 并阅读文档等 手册中经常提到svnadmin 我发现我必须下载它分别地 http groups google com group tortoisesvn browse thread thread e2
  • 如何修复损坏的本地 Subversion 工作副本?

    我通常使用 git 对 Subversion 的基础知识知之甚少 所以请保持温柔 我在 Windows 7 上使用 TortoiseSVN SVN 客户端最近宣布需要升级 所以我就这么做了 所有文件都丢失了源代码管理图标 并且资源管理器中出
  • 如何在Windows控制台中递归使用“svn add”?

    当我跑步时 svn st 在我的工作副本上我得到一些 位于工作副本根目录的子目录中的条目 我想将它们全部添加到存储库中 我尝试 svn add force and svn add force 但它不起作用 工作方案 svn add dept
  • GitHub 的 Subversion 版本? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 PHP 页面中嵌入 svn 修订号的简单方法?

    注意到这个页面的右下角有 SVN 修订 ID 了吗 我假设这是动态的 我很乐意将其添加到我的一些网站中 就像源代码中的注释一样 以确保代码推送顺利进行 注意 您还可以假设相关站点的工作目录是相关存储库的 svn checkout Edit
  • 使用 teamcity 在 svn 中自动分支

    我想知道是否可以使用 Teamcity 进行自动分支 目前 我使用 web 部署自动发布 Web 应用程序 唯一剩下的就是分支 因为我们通常在 svn 中创建一个分支 然后发布下一个版本 任何人都可以建议是否可能以及如何做 打开您的发布版本
  • Woocommerce 获取购物车页面上的特定属性值

    我正在尝试在 woocommerce 购物车页面中获取特定属性值 我在表格中制作了自定义列 如下所示 td class product color td
  • 如何配置hudson忽略指定SVN文件夹下的更改?

    我正在寻找一种方法来忽略 Hudson 中指定 SVN 文件夹下的更改 这与 TeamCity 中的排除文件夹和 CC Net 中的过滤器相同 我在SVN GUI配置下没有找到任何配置选项 在 Hudson 1 334 中 在构建配置中的
  • 在 Ubuntu 12.04 上的 Apache 上配置 SVN 服务器

    我正在尝试通过 HTTP 访问现有的 Subversion 服务器 我的dav svn conf文件看起来像
  • 动态组装 Python 模块,动态导入

    我正在努力让自己熟悉importlib钩子 我想实现直接导入用其他语言编写的非Python文件并维护源映射的能力 因此提高SyntaxError带有行号的 s 仍然会给出有意义的堆栈跟踪 我加载外部文件的方法是组装 Pythonic 源代码
  • tmatesoft.svn.core.SVNAuthenticationException:svn:E170001

    我们正在一个遗留项目 maven 中工作来设置devop 詹金斯首发 Jenkins 构建现在没有问题 但是 在将 sonarqube 与 jenkins 集成时 我们收到以下错误 ERROR Error during SonarQube
  • 如何告诉 subclipse 在提交时忽略修改的文件

    我有一个受版本控制并由我修改的文件 但是我不想提交它 我希望只有我才能拥有我所做的特定更改 而其他人都将拥有该文件的原始版本 我怎样才能做到这一点 我经常遇到同样的问题 我的解决方案是与变更集 如果您使用 Mylyn 每个更改都会添加到活动
  • SVN 提交后挂钩在提交后不会运行

    我的服务器上设置了 SVN 存储库 并且遇到提交后问题 我在 iMac 上使用 SmartSVN 作为客户端 我通过 SmartSVN 的 ssh svn 连接 我能够成功连接到 SVN 并对其进行更改 但从 SVN 客户端提交后 我的提交

随机推荐

  • 为什么 Redshift 在加入时会自动修剪 varchar 列?

    我在使用 Redshift 时遇到了独特的问题 请参阅下面的说明性示例 drop table if exists joinTrim temp1 create table joinTrim temp1 rowIndex1 int charTo
  • 获取正在运行的程序的属性

    我想开发一个程序 其 ID 是一张牌 因为它在另一个正在运行的程序 例如扑克或红心游戏或其他程序 中播放 我首先尝试获取有关已运行的游戏程序的所需信息 但我从一开始就遇到了问题 我正在运行 MSVC 2013 并开发 MFC 应用程序 现在
  • Safari 中的日期无效

    alert new Date 2010 11 29 chrome ff 对此没有问题 但 safari 会喊 无效日期 为什么 编辑 好的 根据下面的评论 我使用了字符串解析并尝试了这个 alert new Date 11 29 2010
  • 如何使用speakhere示例中的AQRecorder

    我已经从 talkHere 示例中复制了 AQRecorder 以及所有其他所需的文件 这样做之后 由于编译错误 我将链中使用它的所有类重命名为 mm 现在似乎已解决 但是我仍然不知道如何使用 AQRecorder 类 该示例中还有另一个名
  • Java 8 不兼容类型

    这是简单的代码 import java util ArrayList import java util Collections import java util HashMap import java util Map public cla
  • 我们如何从团队项目中的所有 Git 存储库连接到 TFS?

    我正在运行最新的 Visual Studio 2013 Ultimate 和 Update 1 我们也有最新的 Team Foundation Server 2013 我们中的一些人对新的 Git 存储库集成感到非常兴奋 但似乎有一个相当大
  • 使用 Java 中的映射实现的队列数据结构,大小限制为 5

    我有带有一些记录的地图 我想将该映射限制为仅 5 个元素 并且每当添加新元素时 应删除第一个元素 并应在映射的最后位置添加新元素 类似于 FIFO 的东西 任何人都可以建议我使用一个数据结构或解决方案本身 E g Map
  • 苹果拒绝应用程序,因为它在未经用户许可的情况下传输 MAC 地址

    我们最近开发的一款应用程序被苹果拒绝了 这是他们的解释 我们发现您的应用在收集数据之前未征得用户同意 根据应用程序商店审查指南的要求 用户的个人数据 具体来说 您的应用程序会发送设备的 MAC 地址 而无需 用户的许可 您的应用程序还会发送
  • 检测 Chrome 打包应用程序中的底层操作系统

    既然打包的应用程序可以在不同的平台上运行 那么有没有办法区分Windows和Mac呢 I would like to show some help vis vis keyboard shortcuts and being able to d
  • SSE (EventSource) 在 1 小时 22 分钟后超时。有什么办法可以让它持续下去吗?

    我的页面中有一个区域 当数据库发生更改时 消息将发送到该区域 现在 有时数据库会发生很大的变化 以至于每 10 分钟就会显示一条新消息 其他日子它只会改变几次 我遇到的问题是 EventSource 似乎在 1 小时 22 分钟后超时 浏览
  • 分享图片在 Viber 和 Facebook 中不起作用

    我使用下面的代码来共享图像 但不幸的是它仅适用于Line 不是为了Facebook and Viber Code Intent share new Intent android content Intent ACTION SEND shar
  • 从类详细信息 Visual Studio 导出

    我发现在 Visual Studio 中我们可以通过创建类图 添加类和打开类详细信息轻松地将摘要添加到代码中 现在我想知道是否可以将其导出到 Excel 文件中 检查 MD对此答案的评论https stackoverflow com a 3
  • 带汇总总计和小计

    我有一个脚本可以生成几乎已经存在的结果集 我正在尝试获取小计和总计 我在年份栏中得到了小计 在最后得到了总计 我的目标是让最终结果显示 总计 而不是小计 请注意 由于汇总函数 我的最后一行 位置 也返回为空 SELECT YEAR COUN
  • 从特定的 setup.py 进行 pip 安装

    我在 RedHat 的 Openshift 云服务上创建了一个 python 3 3 应用程序 默认情况下 它有我的项目的 setup py 我正在学习名为 使用 Flask 构建 SaaS 应用程序 的 Udemy 课程 源代码 http
  • 如何将数据动态分配给jqGrid?

    这是我创建 jqGrid 的代码 ptDataGrid jqGrid datatype local data arrSpecData colModel colmod rowNum 10 rowList 10 pager ptPager gr
  • 如何在 XAML 中定义变量?

    我在 XAML 中有以下两个按钮
  • svn 1.7 错误 E200009 无法添加所有目标,因为某些目标已经版本化

    我对存储库进行了彻底的检查 然后每天我都有一个 hudson 工作来运行脚本来备份配置 脚本的一部分是添加 xml svn add xml svn warning W150002 data hudson config xml is alre
  • difflib python 格式化

    我使用此代码来查找两个 csv 列表之间的差异并提出一些格式问题 这可能是一个简单的解决方法 但我是新手 正在尝试学习 但遇到了很多问题 import difflib diff difflib ndiff open test1 csv rb
  • 检测碰撞方向

    一块方形瓷砖与另一块方形瓷砖碰撞 调酒师说 I have 两个图块的高度 宽度 x 和 y 引起碰撞的运动的 2D 矢量 我需要知道碰撞发生在哪一侧 例如顶部 底部 左侧 右侧 以便适当地重置位置 我会给任何能回答这个问题的人一个心理饼干
  • 用于阻止大于 20MB 的提交的预提交挂钩

    是否可以为 SVN 1 8 编写 prcommit 挂钩以避免提交大于 20MB 的文件 任何建议 将不胜感激 谢谢 我尝试过 但这不适用于二进制文件或其他文件扩展名 filesize SVNLOOK cat t TXN REPOS f w