首页 > 解决方案 > 如何从带外工作区更新中更新 .svn 信息?

问题描述

假设我在带外更新我的工作副本(*详细信息如下) - 我如何让 TortoiseSVN根据服务器 HEAD 检查工作区域的状态并更新本地“修订”信息 而无需传输所有文件(再次)从服务器?现在我的工作流程基本上是回滚带外更新,然后进行 SVN 更新(即使我已经在本地“拥有”文件,它也会重新传输所有文件) - 我更愿意让出-of-band 更新保持不变,只是让 Tortoise 检测到文件确实与服务器匹配......


*详细信息:这可能只是“我从我的同事那里得到一个带有最新更改的 zip 文件(也许因为这比愚蠢的慢速 SVN 更快......)”,所以我有意从问题本身中抽象出实际的方法,但这里是我的特定用例的详细信息。

我曾经git-svn与 svn repo 交互,但git-svn不支持 Subversion 属性,或者至少不是很好 - 我试过了,但记得有一些问题(可能还需要更新文件,因为我想svn:global-ignores在顶层...)。正如链接答案中所建议的那样,一种处理方法是拥有一个完全独立的 svn checkout 来与这些属性进行交互。这似乎很浪费,甚至更慢,所以我将本地git-svn克隆设置到一个名为的目录trunk并将其放入 SVN 结帐。现在我可以通过一些管理让两者都“快乐”并从任一方向运行〜更新 - 肯定有一些“陷阱”,但在我们完全过渡到 git 之前它基本上是可以管理的(很快)。

我更喜欢尽可能多地与 git (或git-svn适用的)交互,所以我通常运行一个git svn rebase,它从服务器中提取增量更新。如果我想更新 SVN 端(例如,我可以直接 SVN 提交来调整属性),我必须将 git repo 回滚到本地 SVN HEAD 并要求 SVN 更新 repo,然后拉下所有再次文件,这很烦人。我只想运行git svn rebase,然后让 TortoiseSVN 确认新的工作副本与服务器 HEAD 匹配。

我的第一次尝试是将 git-svn HEAD 留在原处并运行svn update --accept=working,这样它只会将问题标记为已解决(因为,嗯,HEAD确实匹配 - “相信我,SVN ...”),但这显然导致了重大问题在我的 SVN 方面,当我下次尝试创建 SVN 提交时 - 它知道发生了什么......

标签: svntortoisesvngit-svn

解决方案


推荐阅读