0

决定从 CVS 跳到 SVN。

我在 subclipse 中为我的项目设置了一个新的存储库。当我去“完成”设置时,它想要进行初始提交,并为我提供一个平面文件列表,以选择文件进行版本控制。

问题是我有成千上万个我不想提交的生成二进制文件。

所以我点击取消,因为我需要一整天的时间才能完成并取消选择所有不需要的文件。令人讨厌的是,当我单击要忽略的文件的父类别时,它不是递归的!

所以我单击取消然后转到项目的 eclipse 目录结构并手动设置 svn:ignore 在我想忽略的所有目录上。然后我尝试再次提交并再次呈现所有文件 - 忽略似乎什么也没做。

谁能指出我可能做错了什么?

4

2 回答 2

1

对于第一次提交,我建议编写一个小脚本来删除(当然你会有备份)所有不打算提交的文件。

之后,如果你发现你不小心提交了一个文件,你可以

svn delete file

在第一次结帐时,复制回(或者更好的是,重新生成)所有二进制文件。这将触发 svn 通知您的本地存储库与远程存储库不同步。

cd <Root of local repository>
svn status 

你会看到很多“待添加”的项目。转到父目录并svn:ignore为每个生成的项目添加属性。

cd build
svn propedit svn:ignore .

这将打开一个编辑器(如果没有,您需要将环境变量 SVN_EDITOR 设置为合适的编辑器)。然后你可以添加 svn 知道不被跟踪的条目。

(in the ignore property editor)

target
build
image*
*.o

(and so on)

保存文件,它将为下一次提交暂存。随后的运行svn status将不再将这些文件显示为“需要添加”,但它们会将目录显示为“需要提交(它是目录的修订版)”

于 2013-04-08T14:52:07.147 回答
0

快速搁置

因此,我不完全确定您使用 Subclipse 的哪个功能来创建存储库并将项目共享给它,我假设您通过 eclipse SVN 存储库视图创建了一个基于文件的存储库并尝试共享和然后承诺它。看起来你的问题已经解决了,但我确实想在这里添加一个答案,因为我遇到了这篇文章,寻找处理初始提交的相同问题的答案,即使只是一般使用 SVN,并希望为其他人提供帮助寻求帮助。

介绍

首先,我建议不要仅在初始提交时使用这样的 IDE 扩展,因为他们可能会错过很多处理在 SVN 中打开 repo 的选项。我个人非常喜欢使用 SVN 的命令行形式,但 TortoiseSVN 是 GUI 的一个不错的选择。

无论您是创建基于本地文件的 repo 还是连接到 SVN 服务器,并且您希望更好地控制以前未版本化项目中的第一次提交,这都是我发现的最佳通用工作流程。

创建要保存到的远程文件夹。

在命令行上,这将是:

$> svn mkdir your-url-scheme://your-site-address.domain/path/to/repo/example-directory

或者在 TortoiseSVN 打开你的 repo 进行浏览,右键单击,然后选择“create new folder”

这将为您在 SVN 存储库中提供一个位置,以便我们为下一步结帐。

签入已启动的项目

确保使用 repo 中新创建的空文件夹进行结帐。SVN 实际上并不要求签出的文件夹为空,这是使其实际上非常灵活的重要部分,并且如果使用正确,能够相当容易地将部分目录包含到其中。

现在,您将把这个空文件夹签出到您已经启动的项目的根文件夹中。这会将您的项目添加到此文件夹的工作副本中,而无需进行任何提交。命令是:

$> svn co your-url-scheme://your-site-address.domain/path/to/repo/example-directory /your/projects/root/

“co”代表结账。在 Tortoise svn 中,您可以右键单击或在空的 repo 文件夹中选择“checkout...”,然后选择项目根目录。

设置忽略和提交

最后,在使用以下命令将任何其他文件添加到树之前,您可以轻松地对某些文件设置忽略:

$> svn propset svn:ignore file-or-directory-to-ignore

并添加所有未忽略的目录和文件:

$> svn add * --force

在这种情况下,强制在技术上是不必要的,但可以确保完全递归。如果使用 TortoiseSVN,您现在也可以在文件资源管理器中执行所有这些操作,或者您甚至可以在此时使用您的 IDE 扩展来执行此操作(确保在批量添加文件以进行提交之前忽略您需要的所有文件),仅此而已left 是确保将新添加的文件提交到 repo 并且您已启动并使用源代码控制运行 :)

在此处添加此方法仅仅是因为此方法允许您避免对那些没有人想随身携带的臭二进制文件进行任何不必要的复制。

于 2020-01-20T06:00:30.117 回答