Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定svn存储库中提交到的路径_Svn - Fatal编程技术网

如何确定svn存储库中提交到的路径

如何确定svn存储库中提交到的路径,svn,Svn,对于windows服务器上的提交后钩子脚本,我想确定启动提交的最高存储库路径 因此,如果我有一个基于存储库路径product\branch\somebranch的工作副本,并且从已更改的文件和文件夹的工作副本进行了提交,那么如何在提交后脚本中将其追溯到product\branch\somebranch 最好我正在寻找一种不依赖于我的repo结构的方法,以避免必须显式地将提交代码编码到主干和分支之间的差异,即提交后钩子接收两个参数:本地磁盘存储库的完整路径和提交的修订号 假设您的主机在unix计算

对于windows服务器上的提交后钩子脚本,我想确定启动提交的最高存储库路径

因此,如果我有一个基于存储库路径
product\branch\somebranch
的工作副本,并且从已更改的文件和文件夹的工作副本进行了提交,那么如何在提交后脚本中将其追溯到
product\branch\somebranch


最好我正在寻找一种不依赖于我的repo结构的方法,以避免必须显式地将提交代码编码到主干和分支之间的差异,即提交后钩子接收两个参数:本地磁盘存储库的完整路径和提交的修订号

假设您的主机在unix计算机上运行,您可以将这些参数与提交后脚本中的“svnlook”一起使用,以查找存储库中的路径。这将为您提供存储库中更改的完整路径

#!/bin/sh
REPOS="$1"
REV="$2"
svnlook changed -r$REV "$REPOS"
svnlook输出如下所示:

A   product/branches/somebranch/Makefile
U   product/branches/somebranch/main.c
从那里,您可以通过切割提取最高路径管道几次,以去除修改的标志并解析路径,例如

svnlook changed -r$REV "$REPOS" | cut -c5- | cut -d/ -f1-3

这一部分实际上取决于您的repo布局,您可以采取许多方法,但这应该可以让您开始。

提交后挂钩接收两个参数:本地磁盘存储库的完整路径和提交的修订号

假设您的主机在unix计算机上运行,您可以将这些参数与提交后脚本中的“svnlook”一起使用,以查找存储库中的路径。这将为您提供存储库中更改的完整路径

#!/bin/sh
REPOS="$1"
REV="$2"
svnlook changed -r$REV "$REPOS"
svnlook输出如下所示:

A   product/branches/somebranch/Makefile
U   product/branches/somebranch/main.c
从那里,您可以通过切割提取最高路径管道几次,以去除修改的标志并解析路径,例如

svnlook changed -r$REV "$REPOS" | cut -c5- | cut -d/ -f1-3

这一部分实际上取决于您的回购协议布局,您可以采取很多方法,但这应该可以让您开始。

谢谢您的回答。(这里不使用Linux,但这并不重要)。我希望找到一种不依赖于回购协议布局的方法,以避免必须处理分支和主干提交之间的差异。是的。Subversion正是您对目录的真正理解。例如,在我工作的地方,我们不使用“主干”——一切都在project/branchs/中,而主干分支,主要开发发生的地方,只是一个称为“project/branchs/main”的分支。使用主干约定只是在我们的钩子中添加了一些例外情况,但收获甚微,所以我们放弃了它。谢谢你的回答。(这里不使用Linux,但这并不重要)。我希望找到一种不依赖于回购协议布局的方法,以避免必须处理分支和主干提交之间的差异。是的。Subversion正是您对目录的真正理解。例如,在我工作的地方,我们不使用“主干”——一切都在project/branchs/中,而主干分支,主要开发发生的地方,只是一个称为“project/branchs/main”的分支。使用trunk约定只是在钩子中添加了一些例外情况,但收获甚微,所以我们放弃了它。