首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SVN (server - pre-commit挂钩):知道正在提交的文件列表

SVN (server - pre-commit挂钩):知道正在提交的文件列表
EN

Stack Overflow用户
提问于 2013-07-22 22:43:37
回答 2查看 15.3K关注 0票数 11

我想知道如何在预提交钩子上获得正在提交的文件的列表。

如果该列表不包含特定路径中特定文件,那么我想拒绝提交。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-22 23:29:04

在预提交中使用svnlooksvnlook changed给出了提交的更改路径。将其与您的列表进行比较。如果找到/找不到路径,则拒绝它。预提交的一个简单示例可以是。

代码语言:javascript
复制
#!/bin/sh

REPOS="$1"
TXN="$2"
SPATH="specific/path"
FOUND=$(svnlook changed -t "$TXN" "$REPOS" | tr -d '\n' | grep -E ".*$SPATH.*")

if [ "$FOUND" != "" ]
then
    echo "Reject commit!" 1>&2 && exit 1
else 
    exit 0
fi

在这里,我删除了感兴趣的路径的换行符和grep。如果未找到路径,请重新回收提交exit 1。用户将看到您在那里回显的内容。

票数 13
EN

Stack Overflow用户

发布于 2013-07-23 01:44:34

钩子脚本应该使用svnlook命令,而不是svnsvnlook命令可以获取提交的事务编号(如果这是一个预提交挂钩,则需要使用事务编号。如果这是一个提交后钩子,您需要修订号)。

执行svnlook -h命令以查看所有子命令。以下是它们的列表:

  • author -检索committer
  • cat的用户ID -打印文件specified
  • changed -打印文件和目录changed
  • date -打印commit
  • diff的时间戳-打印所有files
  • dirs-changed的差异-打印目录更改的(
  • filesize -打印bytes`
  • history中的文件大小-打印历史记录(更像svn log)
  • D31
  • lock的信息-打印锁information
  • propget -获取特定的property.
  • proplist -列出所有properties.
  • tree -打印目录structure
  • uuid -打印repository
  • youngest的/code> -打印最后的修订号。

看起来svnlook changed就是你想要的。

关于 svnlook:的两个非常重要的事情

  1. svnlook命令不能更改任何数据,只能显示数据。有些人希望了解如何使用svnlook更改属性值。答:你不能。
  2. svnlook将仓库目录位置作为参数,而不是仓库的URL。这意味着svnlook只能在服务器本身上运行。
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17790484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档