我正在使用 SVN 从事一个大项目,很多时候我必须去看其他人分支中的东西并与它们一起玩。但我想将这些更改保留在本地,而不是提交它们。然而,如果错误地svn ci -m"blabla"
在其他人的分支中输入并提交我的更改是非常容易的。分支有一些标识符来知道它们属于谁,例如我们有:
project-aa
project-bb
etc...
我的项目是 bb 项目。有没有办法确保我在正确的分支上提交?例如,每当我提交时,如果路径上的文本不包含“-bb”,则询问我是否确定。
这可能吗?
答案1
我会使用 shell 函数:
svn () {
if [[ $1 == "ci" || $1 == "commit" ]] && [[ $PWD != *"-bb"* ]]; then
echo "don't commit to someone else's branch" >&2
return 1
fi
# now, do the actual svn command
command svn "$@" # quotes are crucial here
}
答案2
您可以制作一个 bash 脚本包装器,将其放置在较早的位置PATH
或通过重命名现有的svn
程序文件。
该脚本将简单地检查参数是否包含该字符串,并根据是否找到该字符串做出反应。
答案3
通过以下方式结账git-svn。您可以获得 git 的好处(例如,分支之间的快速切换、更好的差异、用于离线工作的完整本地副本……),并且您所做的任何提交都将转到本地 git 存储库,您需要执行额外的推送步骤将代码发送回 svn。
git-svn 并不总是非常强大,它有时无法同步 svn 中的更改,并且将更改推送回 svn 有时很痛苦。但对于你的用例来说这并不重要。