【问题标题】:How to commit to svn when remote username differs from local?当远程用户名与本地用户名不同时如何提交到 svn?
【发布时间】:2012-01-03 03:11:10
【问题描述】:

我正在使用svn_ssh 在另一台机器上使用 svn 服务器进行开发。
虽然我能够进行初始签入和签出,但我无法从命令行进行提交,因为系统在连接到远程服务器时尝试使用我的本地用户名jondoe(并提示输入密码)我的用户名是johnd

那么,我如何告诉 svn+ssh 使用 johnd 进行提交?

【问题讨论】:

    标签: svn ssh commit


    【解决方案1】:

    使用--username 选项

    svn commit --username johnd
    

    【讨论】:

    • 谢谢,但这会产生另一个错误: svn commit --username johnd svn: Commit failed (详情如下): svn: system('vim svn-commit.tmp') returned 256 svn: Your commit message留在一个临时文件中:svn: '/Users/johndoe/development/Myapp/svn-commit.tmp'
    • @Calgacus - 我有一台 Mac,并使用相同的语法来设置 Subversion 用户名。当你给它--username 时,它应该要求输入密码。您还可以通过--password 参数传递密码。我想知道您遇到的问题是否与 vim 命令有关,而不是与 svn 命令本身有关。尝试svn commit --user johnd -m "commit description" 绕过vim 输入提交消息。
    • @Calgacus:看起来 svn 找不到您的默认编辑器。适当地设置EDITORSVN_EDITOR 环境变量或通过-m 选项传递提交消息。另请参阅this question
    • 如果这么简单,为什么有些人创建一个专门的系统用户只是为了提交到一个 svn 存储库?
    【解决方案2】:
    1. 备份您的更改(只是更改的文件,不能覆盖.svn 目录)
    2. 再次结帐,但现在使用您的远程用户名

      svn checkout svn+ssh://<ssh_username>@<svn host domain>/<server repository path>
      
    3. 从备份中恢复您的更改

    4. 提交他们

      svn commit -m 'Description'
      

    我刚刚成功签出并使用不同的本地和 SSH 用户名提交。

    【讨论】:

    • 谢谢,但它给出了错误:svn:必须将本地路径(而不是 URL)作为提交的目标。我试过这样: svn commit -m 'Summary of changes' 。 svn+ssh://my-username@my-server/my-home/my-repo 只是使用 .对于我的文件
    • 好的,这似乎有效,但如果我稍后开始遇到同样的错误,我会在这里重新发布。我不得不修改您的说明以使其正常工作,因为当我结帐时它失败了,说“Myapp 已经是不同 URL 的工作副本”。所以我只是将 Myapp 目录移至 MyappXYZ,然后您的建议就奏效了。我曾想过这样做,但希望不要这样做,因为我怀疑错误会再次发生,因为这与我最初检查项目的方式几乎相同。谢谢。
    【解决方案3】:

    在您的 ~/.ssh/config 中,添加如下部分:

    Host svn.example.com
    User johnd
    

    svn.example.com替换为svn服务器的主机名。

    这适用于所有 ssh 连接,而不仅仅是与颠覆相关的连接。

    另请参阅手册页 ssh_config,您可以通过在 shell 中运行 man ssh_config 来阅读该手册。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      相关资源
      最近更新 更多