提交尚未签出的文件

时间:2018-03-13 09:02:38

标签: svn tortoisesvn

我是SVN的新手,多年来一直使用SourceSafe和家庭酿造解决方案。

我们都已经完成了,我有很多编辑后的文件没有先检出。有没有办法可以:

  1. 尽管没有签出文件,但强制提交
  2. 结帐时不会覆盖我更改的文件
  3. 另一种方法?
  4. 我使用TortoiseSVN。

2 个答案:

答案 0 :(得分:1)

SourceSafe和SVN使用不同的术语。你称之为"结账"在SourceSafe中,在SVN中称为锁定文件。

但SVN并不(通常)要求您锁定文件以使用它们,因为它使用乐观锁定方法。也就是说,它假定文件在提交时可以合并。这通常适用于纯文本文件,如果两个人对同一文件的同一部分进行了更改,则需要手动合并。

这比VSS的模型更好 更好的工作方式,因为这意味着当其他人去度假时,您无法锁定文件。

你真的应该阅读Part I of the Subversion manual以确保你理解Subversion的操作模型。如果你试着像VSS一样使用它,它会受到伤害。

使用Subversion a" checkout"只是将存储库的一部分副本提取到工作站进行更改。它不会更改存储库的状态,也不会专门锁定文件供您使用。

所以你的操作应该是:

  1. 查看工作副本(如果您已有工作副本,请更新它)
  2. 进行更改
  3. 提交
  4. 重复

答案 1 :(得分:0)

简短的故事是检查一个新的工作副本以获取最新的.svn文件夹,然后用本地活动工作副本替换文件夹内容,并提交差异。

如果您在本地添加的文件与已添加到svn存储库的文件完全相同,并且文件是文本(即非二进制),则只需执行svn update,本地文件将是"版本" (由svn。

确认在当前存储库版本级别存在且正确)

如果本地文件不同且是文字,则svn update应该再次对文件进行版本设置,之后您可以svn commit进行更改。

如果有疑问,请首先制作版本化文件夹的本地副本,然后查看会发生什么。如果你有备份,你不会受到伤害。

然而,最安全的方法是检查相关文件夹的新副本。然后从svn delete文件夹中删除该文件夹中的所有内容(不是.svn!)。既然你有TortoiseSVN,你可能会使用Windows,所以我的意思是在资源管理器中,选择除.svn以外的所有内容并按删除。然后将您的工作文件和文件夹复制到该文件夹​​中并提交更改。您可能想知道这是如何工作的 - .svn文件夹包含远程存储库中存在的文件的原始副本,因此能够比较您的本地工作文件和文件夹以找出已更改的内容。

当您commit确保勾选方框"显示无版本文件"包括在本地创建但尚未版本化的任何新文件,然后单击"全部"包括所有更改,包括提交中的任何新文件。

enter image description here