根据我当前的位置确认“svn ci”命令

根据我当前的位置确认“svn ci”命令

我正在使用 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 有时很痛苦。但对于你的用例来说这并不重要。

相关内容