如何使用git-svn设置Subversion属性

35

如何在使用git-svn创建的Git仓库中设置Subversion属性?

我想要编辑svn:externalsvn:ignoresvn:executable的版本,但是唯一的方法似乎是通过Subversion客户端进行检出。有没有办法在不用两次检出(一次用于Git,一次用于Subversion属性)的情况下编辑svn属性?


请注意,git svn propset 仅支持 Git 2.3.0(2015年2月),请参见下面的答案 - VonC
5个回答

26
注意:git 2.3.0(2015年2月)支持使用git svn进行proset。
请参见commit 83c9433,作者为Alfred Perlstein (splbio)

git-svn:支持git-svn propset

此更改允许git-svn支持设置subversion属性。

在提交到要求设置属性的subversion repo时手动设置属性非常有用,而无需将您的更改集移动到单独的subversion checkout以设置props。

需要指出的是:除非文件也有内容更改,否则代码不支持添加props
这在测试用例中得到了证明。

因此,正如在t/t9148-git-svn-propset.sh中所看到的那样,现在可以工作:

git svn propset "$1" "$2" "$file" 
# like
git svn propset "svn:keywords" "FreeBSD=%H" "foo"

17

git-svn 不支持 Subversion 属性。当我遇到这个问题时,通常会有两个检出副本。

在 BUGS 部分,git-svn 文档中提到了这一点:

我们忽略所有的 SVN 属性,除了 svn:executable。任何未处理的属性都会被记录到 $GIT_DIR/svn/<refname>/unhandled.log 文件中。


3
这不是我期望的答案,但我想我必须接受它。 - Black
您不需要在Subversion中进行检出就可以在存储库中设置属性。您可以直接使用svn.exe或使用TortoiseSVN的Repo-browser在存储库中设置它们。 - florisla
1
这个答案已经不正确了,请查看VonC的答案。 - Ian Dunn

5

谢谢,David。 我期待在下一个版本中看到这个功能。 - Black
1
是的,不幸的是我的补丁需要大量重构才能被接受,而且我已经不再使用标准形式的 git svn,因此不打算继续开发它了... - David Fraser

3
使用SmartGit克隆您的SVN存储库是可行的。它将svn:executable、svn:externals和svn:ignore转换为executable、.gitsvnextmodules和.gitignore。因此,您可以修改它们并推回,这将导致相应属性的修改。
如果您可以访问SVN服务器,则可以在其中安装SubGit。它会在服务器端将svn:executable和svn:ignore进行翻译,并提供一个基于Git的界面以访问您的SVN存储库。

2

如果您不想进行整个svn checkout来设置属性(我的远程repo非常大),您也可以使用svnmucc

这是我的命令,用于将一行添加到svn:ignore中,请替换URL、DIR和VALUE。

svnmucc -U URL propset svn:ignore "`git svn propget svn:ignore DIR; echo VALUE`" DIR

我喜欢这个,但我也进行了修改以自动获取URL:svnmucc -U "$(git svn info | egrep '^URL\:' | cut -d' ' -f2-)" propset svn:global-ignores PATTERN DIRECTORY(例如,将DIRECTORY替换为.)。 - Tatsh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接