这可能是SVN 101,但我不得不问:
我正在开发一个具有蹩脚目录结构的项目。为了让它在我最喜欢的IDE中构建和运行,在我检查项目之后,我将整个项目复制到一个不同的目录并将其移动到我(和我的IDE)的喜欢。
所以我的基本问题是:我可以安全地编辑/更新/合并与存储库目录结构不同的目录strcuture中的文件吗?
例如,如果我签出/home/me/dev/proj/index.jsp
然后将其(及其.svn元数据)复制到/home/me/dev/better-proj/web/index.jsp
,则index.jsp驻留在不同目录中的事实应该没问题。 SVN状态,对吧?错误?或者我只是在寻找麻烦?
答案 0 :(得分:6)
你在找麻烦。很麻烦。如果您尝试更新根,则会导致完全精神错乱(许多障碍物,“恢复”文件等)。另外,您如何复制单个文件的元数据? SVN元数据位于每个目录的.svn文件夹中。您可能能够更新和提交尚未更改的单个目录(即目录本身已被移动或重命名,但其所有子项与repo中的完全相同)。然后,你可能不会。这很危险。
您应该自定义IDE以匹配项目的使用/构建方式,或者重新安排项目以匹配其使用/构建的方式。在后一种情况下,您需要调查svn move
子命令(即svn help move
)。 SVN的GUI可能也会有所帮助,例如TortoiseSVN(用于Windows),如果你要进行大量的重新排列。
答案 1 :(得分:2)
如果目的地仍在您的工作副本中,请使用svn move
(documentation)。无论哪种方式,您都曾想要自己操纵.svn
元数据,因为这会导致冲突和一般的头痛。
如果目标是另一个存储库的工作副本,您需要在源代码上执行svn export
(documentation),然后svn add
(documentation )目的地回购。
另外值得一读:Subversion Basic Work Cycle
答案 2 :(得分:1)
所以你在项目中使用与团队中其他人不同的项目?我不确定这是如何运作的。我会和所有参与者讨论,并使用svn:move来获取所有可以同意的地方的历史文件。
答案 3 :(得分:1)
如果您尝试将版本化目录放在不是其父版本的版本化目录中,则会遇到此方法的问题。除此之外,除了与不相交的工作副本相关的文书工作头痛之外,你不应该遇到任何其他问题。
是否有理由不能使用svn move
重新组织存储库中的项目?你不会失去任何历史,你会让你的生活更轻松。
答案 4 :(得分:0)
我误解了你的问题。我以为你在寻找类似SVN移动命令的东西。 (see these questions)
但这显然不是你想要的。
我认为您在提议的工作流程中遇到问题。这真的不是一个好主意。为什么不来;你只是在svn中移动工作项?