有没有一种简单的方法可以将目录从一个存储库复制到另一个存储库并复制所有历史记录?
我正在使用包含许多项目的SVN存储库.我需要将一些项目从该存储库移到单独的存储库中,每个项目一个,保留历史记录.
我已经能够使用svnadmin dump将整个存储库转储svnadmin load到另一个存储库中,但是我找不到从原始存储库中只转储一个项目的方法,因此我可以将其加载到新的存储库中.这可能吗?如果是这样的话?
我知道可以转储包含历史记录的完整 SVN存储库,并使用以下命令将其加载到目标存储库的用户定义(子)目录中:
// in source repo
> svnadmin dump . > mydumpfilename
// in destination repo (backslashes because I'm using Windows)
> svnadmin load . < mydumpfilename --parent-dir some\sub\directory
Run Code Online (Sandbox Code Playgroud)
但这会将完整存储库导入目标存储库的子目录.我想要的是在源存储库中定义应该导出的子目录.有点像svnadmin dump . --source-path old\sub\dir > mydumpfilename.
我怎样才能做到这一点?如果TortoiseSVN可以这样做,请说出来;)
解决方案:感谢Tim Henigan的回答,这是正确的方法:
// execute in destination repo
svndumpfilter include source\sub\dir < mydumpfilename | svnadmin load . --parent-dir destination\sub\dir
Run Code Online (Sandbox Code Playgroud)
希望这也能帮助别人......
我的家庭服务器出现硬盘故障.
一旦我意识到磁盘正在运行,我就登录并直接复制了我的存储库,其中包含多个项目.
但是,由于磁盘发生故障,其中一个修订版本被破坏:
$ svnadmin verify master/
[...]
* Verified revision 820.
* Verified revision 821.
* Verified revision 822.
svnadmin: No such revision 823
Run Code Online (Sandbox Code Playgroud)
该master/db/revs/和master/db/revprops/目录做的,的确,不包含任何所谓的文件823,所以这个版本缺少(断).随后的修订版(我真的想保留!)在master/版本#947 的存储库中.
今天我拿到了我最近的异地备份(!),其中包含了这个版本.我想master/通过修复缺少的修订来"修复"损坏的存储库,因为它比备份更新.
我确保将转储文件加载到新创建的存储库中,该存储库与复制的存储库具有相同的版本master/,因此它是所有旧的"线性"格式3.
我尝试了显而易见的,只是823从备份db/revs/和db/revprops/目录中复制文件:
$ cp repos/db/revs/0/823 master/db/revs/
$ cp repos/db/revprops/0/823 master/db/revprops/
Run Code Online (Sandbox Code Playgroud)
该目录repos/包含已从备份转储加载的存储库.现在我得到:
$ svnadmin verify master/
[...]
* Verified revision 821.
* Verified revision 822.
svnadmin: /build/buildd/subversion-1.6.12dfsg/subversion/libsvn_delta/compose_delta.c:165: search_offset_index: Assertion `offset < ndx->offs[ndx->length]' failed. …Run Code Online (Sandbox Code Playgroud) 鉴于:
Repository_1 - 来源
Repository_2 - 目的地
我使用svnadmin和svndumpfilter的组合创建了Repository_1/Folder1的转储文件
从转储文件从Repository_1/Folder1加载到Repository_2/Trunk时,一切都很好但是很好
从Repository_1/Folder1/Sub文件夹(为此创建另一个转储)加载到Repository_2/trunk时,我收到以下错误:
svnadmin: File not found: transaction '267-89', path 'trunk/Folder1/Sub-folder'
Run Code Online (Sandbox Code Playgroud)
谁能解释一下?
我只是想编写一个shell脚本来以易于实现的方式实现删除功能(外部,使用建议的方式,但是自动化).
这就是我的想法:
在客户端
svn list -R > file-list.grep XXX file-list>>files-to-delete.files-to-delete使用scp 传输到服务器.在服务器上
svnadmin dump /path/to/repos > repos-dumpfile,这也可以作为备份保存.cat repos-dumpfile | svndumpfilter exclude $file > new-dumpfilesvnadmin create new-name; svnadmin load new-name < new-dumpfile这会有用吗?怎么会失败?还有其他想法吗?
我在网络驱动器上创建了一个存储库svnadmin create repos.
有没有办法为存储库设置用户权限?
如果是这种情况,如何设置这些权限?
我需要将现有的SVN存储库从一个开发服务器复制到另一个开发服务器.根据我的理解,我已经提出了步骤.如果有人可以验证并告诉我是否遗漏了任何一点,那将是很棒的.
Current server: dev10.dev.location.somename.com
Current repo location: dev10$/export/svnrepo/reponame
URL: svn:// dev10.dev.location.somename.com/export/svnrepo/newrepo/trunk
New server: dev11.dev.location.somename.com
New repo location: dev11$/export/svnrepo/newrepo
Run Code Online (Sandbox Code Playgroud)
我想有一个像svn://dev11.dev.location.somename.com/export/svnrepo/newrepo/trunk这样的网址.我是否需要导入新的存储库?
SVN server --- **svnserve**
Run Code Online (Sandbox Code Playgroud)
脚步:
在dev11中安装svnserve服务器
检查工作目录在dev10完全检入Subversion,然后备份.
转储Subversion存储库.这是通过svnadmin命令完成的:在dev10
svnadmin dump /export/svnrepo/reponame | gzip -9 - > reponame.dump.gz
Run Code Online (Sandbox Code Playgroud)在dev11创建新的subversion存储库---- 要创建存储库'newrepo',请svnadmin create从$ SVNHOME/bin 运行命令.在dev11提供存储库的完整路径.
svnadmin create /export/svnrepo/newrepo
Run Code Online (Sandbox Code Playgroud)将reponame.dump.gz文件复制到dev11服务器.
将dumpfile加载到新存储库:dev11
zcat reponame.dump.gz | svnadmin load /export/svnrepo/newrepo
Run Code Online (Sandbox Code Playgroud)将新存储库签出到dev11的目录
svn co svn:// dev11.dev.location.somename.com/export/svnrepo/newrepo/trunk
Run Code Online (Sandbox Code Playgroud)将我的工作目录切换到新的存储库.
我需要转储svn存储库.我发现了两个解决方案
svnrdump dump
和
svnadmin dump
svnrdump dump是一样的svnadmin dump吗?
如果没有,这两个命令之间有什么区别?
我想将我的部分SVN repo移到异地,转到AWS实例并关注此页面(存储库维护)
我已经使用dump了整个仓库(Windows命令):
svnadmin dump c:\repo > all_repo接下来是过滤它,只包括我感兴趣的项目(称为"M1").
type all_repo | svndumpfilter include M1 --drop-empty-revs > m1我知道这是正确的,因为我已经在其他一些项目上做过了.
在这个项目中,它打破了这篇文章标题中指出的错误.确切的措辞是:
svndumpfilter:无效的复制源路径'/ Personal/Richard/M1_Config'
该过程试图写入不存在的管道.
错误引用的文件夹是我在个人文件夹下编写和提交的配置实用程序,它根本不在root/m1 ...文件夹下.我不想将它包含在过滤文件中,但不知道如何向svn命令指明这一点.
svn ×10
svnadmin ×10
svndump ×4
dump ×2
repository ×1
subdirectory ×1
svnserve ×1
tortoisesvn ×1