所以我在远程文件系统上有一个项目(我一直在通过ssh编辑)。现在我需要将项目复制到我的硬盘上。我不再需要对项目进行版本控制,所以这让我认为我应该svn export
项目。但是还有一些尚未检查过的文件,我需要在制作副本时保留这些文件。
将此项目复制到本地驱动器的最佳方法是什么?
更新:我不知道怎么做,但我想复制所有文件(使用某种ssh安全复制命令)然后担心svn的东西。
更新:这就是我最终将项目复制到本地驱动器所做的事情:
scp -r username@remotehost:/path/to/dir ./localdir
答案 0 :(得分:3)
由于你有ssh访问权限,我会使用rsync。
rsync -avz --exclude='*/.svn*' user@host:/path/to/checkout /path/to/local/dir
Rsync很适合这个。另请注意,user@host:/path/to/checkout
和user@host:/path/to/checkout/
不同。前者复制目录,后者复制目录的内容。
答案 1 :(得分:2)
保留您的工作副本。现在你需要以递归方式从项目的根目录开始删除所有.svn目录:
如果您使用的是Linux,则可以使用以下命令:
rm -rf `find . -type d -name .svn`
如果你在Windows上,这应该有效:
FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G"
确保在尝试这些命令之前进行备份!但我之前已经成功地使用了这两种方法与svn断开连接。
答案 2 :(得分:1)
svn将您的项目切换到分支,检查您的本地更改,然后导出分支。您真的希望能够以可重复的方式进行导出,因此即使您不需要本地副本上的版本控制,也要确保它来自存储库导出的完整树。
答案 3 :(得分:0)
也许不是最容易的方式,但肯定是最明显的。我只是svn export
当前存储库到另一个目录并手动合并任何本地更改。
答案 4 :(得分:0)
如果您不再需要对项目进行版本控制,为什么不首先检查您未提交的更改,然后执行svn export
?
答案 5 :(得分:0)
如果您使用TortoiseSVN,您可以从工作文件夹中执行全部导出,也可以复制非提交文件。
答案 6 :(得分:0)
您可以只创建工作副本的副本,然后删除包含subversion修订信息的.svn
文件,而不是从存储库导出然后手动移动未签入的文件。
在UNIX(Mac / Linux)上,您可以使用以下命令轻松摆脱这些:
find /path/to/copied/project -name .svn -delete