【问题标题】:SVN Merge changes made on FTP into working copySVN 将 FTP 上所做的更改合并到工作副本中
【发布时间】:2009-02-26 18:31:48
【问题描述】:

我们使用 SVN 管理我们的 Web 开发。在一个项目中,我们通过导出项目并将其通过 FTP 传输到客户端服务器来部署站点。这个客户亲自动手并且对 FTP 上的代码进行了更改。我们现在受雇为网站添加更多功能。

如何获取在 FTP 上完成的工作并将其合并到我的工作副本中?我想保留 svn props 和 externals 并且只更新那些被更改的文件,这样我就可以使用 diff 跟踪这些更改。谢谢!

【问题讨论】:

    标签: svn ftp merge


    【解决方案1】:

    将文件夹复制到本地工作副本中,并让它覆盖任何更改的文件。您现在拥有一个包含所有更改的工作副本,您可以正常提交。 更新 1: 任何未更改的文件都会被检测到,因此不会被提交(至少使用 tortoise)

    【讨论】:

    • 您还想检查新的未版本控制文件,因此在复制前后检查未版本控制文件,并签入新文件
    • 你知道在不替换整个目录的情况下复制文件的好命令行方法吗?我不想销毁所有的 .svn 文件夹。只需移动文件。非常感谢!
    • 你在什么环境下? / 在 Windows 上,我只是从普通文件资源管理器中复制它,它只会添加文件夹/文件并替换文件,所以 .svn 文件夹仍然存在。
    • Mac。如果我将一个文件夹拖到另一个文件夹上,该文件夹将被整个替换。
    • 这是我的解决方案,仅供参考:rsync -avz source/destination/ --exclude=.svn
    【解决方案2】:

    首先,确保您的本地副本没有未提交的更改。如果你这样做并且它们很稳定,请提交它们。如果您有不稳定的更改,您最好从 head 修订中创建一个新的结帐。然后按照以下步骤操作。

    1. 为您当前的头部修订创建一个标签/分支。
    2. 将您的本地副本更新为主要版本。 (见上面的 cmets)
    3. 从 FTP 下载代码
    4. 将下载的代码复制到本地工作副本中
    5. 检查覆盖后更改的文件。
    6. 使用差异工具对这些更改的文件进行标记。
    7. 提交合并的文件。
    8. 如果出现问题,您可以回滚到您在第 1 步中创建的标签/分支,然后重试。

    【讨论】:

      【解决方案3】:

      也许有点跑题了,但是试试像 git、bazaar 或 mercurial 这样的分布式版本控制系统怎么样?听起来完全符合您的需要。

      客户端可以克隆一个存储库并在本地对其进行提交,然后您可以在完成后将其合并回主存储库。这样您仍然可以保留来自客户端的所有历史记录,而 FTP 则不会。

      【讨论】:

        猜你喜欢
        • 2011-04-03
        • 2012-09-15
        • 2016-08-25
        • 2011-01-11
        • 2012-11-24
        • 2011-02-23
        • 1970-01-01
        • 2015-07-15
        • 1970-01-01
        相关资源
        最近更新 更多