我已经成功地与SVN合作了几个星期但是我最近收到了我正在从我们的供应商处理的代码的更新版本。我用更新的文件覆盖了我的本地安装,并期望能够提交更新文件,然后其他人都会获得更新版本。但是,当我覆盖我的本地文件时,SVN不会检测到文件已更新。如果重要的话,我正在使用Tortoise SVN。
更新:我没有复制更新代码的工作副本(源代码中没有.svn文件夹。)但是,我注意到文件的最后修改日期比他们更换的日期更旧 - 这会阻止SVN检测到变化吗?此外,大多数文件都是使用ioncube加密的。
答案 0 :(得分:2)
本地svn数据位于工作副本的每个目录中(在每个目录下的.svn目录中)。因此,如果您已将新代码中的目录复制到代码目录(包括子目录)中,则可能还复制了它们的.svn目录。这意味着svn无法知道它已被更改。
如果要在目录中进行递归替换代码,则应确保粘贴到现有代码上的代码本身不是工作副本,或者已从.svn目录中删除。要获取存储库的非wc副本,可以使用svn export。
最新版本的subversion通过仅在wc根目录中存储元数据而不是在所有子目录中来解决此问题。
答案 1 :(得分:0)
确保您不会覆盖.svn文件夹。
如果删除此文件夹或将其替换为其他文件夹,则会出现一些同步错误和/或svn完整性问题。
你可以做什么(以及我通常对这个问题做的事情)是清除项目文件系统中的所有.svn文件夹并重新提交所有内容。
请看一下这篇文章:http://thecrumb.com/2008/09/25/removing-svn-files-with-tortoisesvn/
这一个:http://www.anyexample.com/linux_bsd/bash/recursively_delete__svn_directories.xml
答案 2 :(得分:0)
我注意到文件的最后修改日期早于他们替换的日期
像大多数其他人一样,我怀疑文件没有改变。但是,如果他们真的有,如果您detect changes文件更新上次修改日期,Subversion会touch吗?
答案 3 :(得分:0)
这些步骤帮助我提交。为了解决这个问题,他们也可以帮助你。