有没有办法在git-svn创建的git存储库上设置subversion属性?
在我的情况下,我想要修改svn:external
,svn:ignore
的版本
svn:executable
。
然而,这样做的唯一方法似乎是涉及到subversion客户端的签出。有没有办法编辑svn属性而无需两次检出存储库(一次用于git,一次用svn作为属性)?
答案 0 :(得分:22)
注意: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结帐以设置道具。
有一点需要指出:代码不支持添加道具,除非文件也有内容更改。
这在测试用例中得到证明。
所以,正如t/t9148-git-svn-propset.sh
中所见,这现在有效:
git svn propset "$1" "$2" "$file"
# like
git svn propset "svn:keywords" "FreeBSD=%H" "foo"
答案 1 :(得分:17)
git-svn
不支持Subversion属性。当我遇到这个问题时,我通常最终会有两个结账。
这在BUGS的git-svn
文档中提到:
我们忽略除svn:executable之外的所有SVN属性。任何未处理的属性都会记录到
$GIT_DIR/svn/<refname>/unhandled.log
答案 2 :(得分:5)
开始处理支持git svn propset
的补丁:git svn propset support
答案 3 :(得分:3)
有可能,只需使用SmartGit克隆您的SVN存储库。它将svn:executable,svn:externals和svn:ignore转换为可执行文件,.gitsvnextmodules和.gitignore。因此,您可以修改它们并推回,这将导致相应的属性修改。
如果您有权访问SVN服务器,则可以在其中安装SubGit。它在服务器端转换svn:executable和svn:ignore,为你的SVN存储库提供Git接口。
答案 4 :(得分:2)
您还可以使用svnmucc,以防您不想只设置道具(我的远程仓库非常大)。(/ p>)
这是我向svn添加一行的命令:ignore,replace URL,DIR和VALUE。
svnmucc -U URL propset svn:ignore "`git svn propget svn:ignore DIR; echo VALUE`" DIR