【问题标题】:Why do I need to update if nobody has committed?如果没有人提交,为什么我需要更新?
【发布时间】:2021-04-28 20:47:27
【问题描述】:

我最近开始在命令行上使用 Subversion。我犯了几次,并摆弄了忽略列表等。

今天我来提交更多更改。 SVN 要求我在提交之前执行更新。

这很奇怪,因为没有其他人承诺过。我知道这是一个事实。因此我不想更新,因为根据定义,如果我的工作副本是“正确的”,那么任何更改都会使其“不正确”。

据我了解,“更新”是将其他人已提交的更改(自您上次更新或签出后发生的更改)与您的本地工作合并的过程复制。

所以我的问题是,如果自从我上次提交后没有人接触过存储库,为什么我不能在不先更新的情况下再次提交?

我的同事建议我可能在没有告诉 SVN 的情况下删除了文件或目录。但同样:这些是 我的 更改,它们发生在最后一次提交之后。当然,对我的工作副本的任何更改都应该取代任何和所有之前的提交?

作为后续问题:如何确定自上次更新以来服务器上哪些文件发生了更改,而实际上没有更新?我尝试了svn diff,它列出了我最后执行的一系列更改。这真的不是很有帮助。

当我运行svn up 时,它只是说:

Updating '.':
At revision 4.

由此证明,在我看来,更新是不必要的。

【问题讨论】:

  • 使用svn status 看看发生了什么变化。
  • 为什么服务器会将您的工作副本识别为“正确”?集中式版本控制的重点不是让服务器充当事实来源吗?
  • @Z4-tier 当然可以。但不幸的是,服务器在撒谎。这就是我的担心。
  • @Barmar 谢谢。至少,这是后续问题的处理。
  • 我的猜测是您的 repo 中的某些内容已被修改,因此它与服务器不同步,更新会使它们恢复同步。

标签: linux svn version-control


【解决方案1】:

我将回答您关于如何检查服务器上哪些文件已更改的后续问题:

svn status --show-updates

或简写:

svn st -u

至于主要问题,我敢打赌您正在处理混合修订工作副本或属性更新(或 smth)。如果您能够重现该场景并提供详细信息,将会很有帮助。

【讨论】:

  • 无论属性发生什么变化或“smth”,它们都会在本地发生。所以我的问题归结为:为什么本地更改会导致强制更新?
  • 不确定您所说的“混合修订工作副本”是什么意思,但没有分叉,我几天前才创建了 repo。
  • 我无法重现该问题,因为我不知道是什么原因造成的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 2020-03-07
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多