How to set Subversion properties with git-svn

浪尽此生 提交于 2019-12-02 21:48:40
Greg Hewgill

git-svn does not support Subversion properties. When I run into this problem, I usually end up having two checkouts.

This is mentioned in the git-svn documentation under BUGS:

We ignore all SVN properties except svn:executable. Any unhandled properties are logged to $GIT_DIR/svn/<refname>/unhandled.log

Note: git 2.3.0 (February 2015) supports proset with git svn.
See commit 83c9433 by Alfred Perlstein (splbio):

git-svn: support for git-svn propset

This change allows git-svn to support setting subversion properties.

It is useful for manually setting properties when committing to a subversion repo that requires properties to be set without requiring moving your changeset to separate subversion checkout in order to set props.

There is a nit to point out: the code does not support adding props unless there are also content changes to the files as well.
This is demonstrated in the testcase.

So, as seen in t/t9148-git-svn-propset.sh, this now works:

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

Started working on a patch to support git svn propset here: git svn propset support

It's possible, just clone your SVN repository with SmartGit. It translates svn:executable, svn:externals and svn:ignore to executable, .gitsvnextmodules and .gitignore. So you can modify them and push back that will result in corresponding properties modification.

If you have an access to your SVN server you may install SubGit into it. It translates svn:executable and svn:ignore on the server side providing a Git interface to your SVN repository.

You can also used svnmucc, in case you don't want to have a whole svn checkout just to set props (my remote repo is really big).

Here's my command for adding a line to svn:ignore, replace URL, DIR, and VALUE.

svnmucc -U URL propset svn:ignore "`git svn propget svn:ignore DIR; echo VALUE`" DIR
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!