File 是否可以仅创建未提交给SVN的文件的副本?
有时我需要还原许多文件—接近20-50个,但需要保存带有本地更改的文件—如果我将来要使用某些东西的话。File 是否可以仅创建未提交给SVN的文件的副本?,file,svn,copy,backup,File,Svn,Copy,Backup,有时我需要还原许多文件—接近20-50个,但需要保存带有本地更改的文件—如果我将来要使用某些东西的话。 项目很大-超过10000个文件。 是否可以仅创建未提交文件的副本? 手动查找更改和复制大约需要2小时-project树有许多嵌套文件夹。您可以使用创建差异,然后使用重新应用差异 然而,这并不是你应该如何使用SVN。如果您可以使用更改创建分支,那么您可以稍后合并该分支并与您的同行共享内容 请注意,在SVN中创建分支相对来说比较简单。在服务器上,将文件链接到原始文件,直到实际更改为止。只有更改的文
项目很大-超过10000个文件。
是否可以仅创建未提交文件的副本?
手动查找更改和复制大约需要2小时-project树有许多嵌套文件夹。您可以使用创建差异,然后使用重新应用差异 然而,这并不是你应该如何使用SVN。如果您可以使用更改创建分支,那么您可以稍后合并该分支并与您的同行共享内容 请注意,在SVN中创建分支相对来说比较简单。在服务器上,将文件链接到原始文件,直到实际更改为止。只有更改的文件才会占用服务器上的空间 注意:
svn diff
只保存文件中更改的行,而不保存完整的文件。但是,如果需要重新应用修补程序,这就足够了。您可以使用创建一个diff,然后使用重新应用diff
然而,这并不是你应该如何使用SVN。如果您可以使用更改创建分支,那么您可以稍后合并该分支并与您的同行共享内容
请注意,在SVN中创建分支相对来说比较简单。在服务器上,将文件链接到原始文件,直到实际更改为止。只有更改的文件才会占用服务器上的空间
注意:svn diff
只保存文件中更改的行,而不保存完整的文件。但是,如果您需要重新应用修补程序,这就足够了。如果您确实需要文件的副本(而不是使用svn diff或执行分支),则方法(我们用于服务器配置文件备份的版本)是检查修改了哪些文件。以下注释假设您处于回购的最高级别
例如,如果运行svn status
,可能会得到如下输出:
? plans/software/intro_jan12.log
? plans/software/intro_jan12.dvi
? plans/software/data.txt
? plans/software/intro_jan12.nav
M plans/software/intro_jan12.pdf
M plans/software/jan12.tex
? plans/software/jan12/flowRoot9298.png
? plans/software/jan12/viewE_comments.pdf
? plans/software/jan12/team.ps
? plans/software/jan12/team.png
? plans/it/plan.log
(显示的是未知文件,M显示的是修改过的文件。)
然后,您可以通过执行类似于svn status | egrep“^M”
的操作,轻松提取修改过的文件并处理它们
将其转换为一个简短的shell脚本,将修改过的文件复制到其他地方非常容易:
# step 1
svn status | egrep '^M' | awk '{ print $2 }' > recipe_file
# step 2
rsync -a --files-from=recipe_file <repo> <dest>
#步骤1
svn状态| egrep'^M'| awk'{print$2}'>配方文件
#步骤2
rsync-a--files from=recipe\u file
当然,
可以在远程机器上
据推测,一旦您在上审核了复制文件,您就可以执行
svn revert-R
如果您确实需要文件的副本(而不是使用svn diff或执行分支),则一种方法(我们用于服务器配置文件备份的版本)是检查修改了哪些文件。以下注释假设您处于回购的最高级别
例如,如果运行svn status
,可能会得到如下输出:
? plans/software/intro_jan12.log
? plans/software/intro_jan12.dvi
? plans/software/data.txt
? plans/software/intro_jan12.nav
M plans/software/intro_jan12.pdf
M plans/software/jan12.tex
? plans/software/jan12/flowRoot9298.png
? plans/software/jan12/viewE_comments.pdf
? plans/software/jan12/team.ps
? plans/software/jan12/team.png
? plans/it/plan.log
(显示的是未知文件,M显示的是修改过的文件。)
然后,您可以通过执行类似于svn status | egrep“^M”
的操作,轻松提取修改过的文件并处理它们
将其转换为一个简短的shell脚本,将修改过的文件复制到其他地方非常容易:
# step 1
svn status | egrep '^M' | awk '{ print $2 }' > recipe_file
# step 2
rsync -a --files-from=recipe_file <repo> <dest>
#步骤1
svn状态| egrep'^M'| awk'{print$2}'>配方文件
#步骤2
rsync-a--files from=recipe\u file
当然,
可以在远程机器上
大概,在审核了复制文件之后,就可以对分支执行
svn revert-R
+1。svn补丁也是1.7+我想-出于某种原因,很多人仍然使用1.6。还有其他补丁工具。另外,OrtoiseSVN已经内置补丁支持很长一段时间了。但您只需将客户端更新为1.7即可访问patch命令。对于branch,+1。svn补丁也是1.7+我想-出于某种原因,很多人仍然使用1.6。还有其他补丁工具。另外,OrtoiseSVN已经内置补丁支持很长一段时间了。但是您只需要将客户端更新到1.7就可以访问patch命令。