TortoiseSVN仍然可以通过svndumpfilter

时间:2016-03-11 20:53:26

标签: svn tortoisesvn svndumpfilter

我试图从我们的SVN存储库中删除大文件,因为我们的非开发人员用户非常酷,为什么5GB文件不会进入源代码管理?

我已经读过,显然这对于​​SVN来说不是一件容易的事,但是可以使用svndumpfilter进行攻击,以便我正在做的事情。为了测试我尝试过滤的内容,我创建了一个空的测试存储库,其中包含以下内容:

enter image description here

我已使用此命令转储该存储库:

sudo svnadmin dump /path/to/repo > my.dmp

我可以毫无问题地重新加载它:

sudo svnadmin load /path/to/repo < my.dmp

对于我的测试,我尝试使用此命令过滤掉.sql文件:

svndumpfilter exclude --pattern '*.sql' < my.dmp > my.dmp.filtered

输出就是这个,正如所料:

bitnami@linux:~/working$ svndumpfilter exclude --pattern '*.sql' < my.dmp > my.dmp.filtered
Excluding prefix patterns:
   '/*.sql'

Revision 0 committed as 0.
Revision 1 committed as 1.
Revision 2 committed as 2.
Revision 3 committed as 3.
Revision 4 committed as 4.
Revision 5 committed as 5.

Dropped 2 nodes:
   '/NewFolder/09_Script_Migrate_Data_From_dbo.SalesNormalTable_To_dbo.SalesPartitionTable.sql'
   '/Test/AllSql.sql'

之后我通过删除文件并重新初始化repo来清理存储库:

sudo rm -r /path/to/repo
sudo mkdir /path/to/repo
sudo chown -R daemon:subversion /path/to/repo
sudo svnadmin create /path/to/repo

一切都很好,我的档案不见了。我将过滤后的repo转储加载到存储库中:

sudo svnadmin load /path/to/repo < my.dmp.filtered

按预期输出(所有SQL文件都消失了):

bitnami@linux:~/working$ sudo svnadmin load /opt/bitnami/repository/RedMineProduction/ < my.dmp.filtered
<<< Started new transaction, based on original revision 1
     * adding path : Test ... done.

------- Committed revision 1 >>>

<<< Started new transaction, based on original revision 2
     * adding path : NewFolder ... done.

------- Committed revision 2 >>>

<<< Started new transaction, based on original revision 3
     * adding path : Test/.NET String Formats.pdf ... done.

------- Committed revision 3 >>>

<<< Started new transaction, based on original revision 4

------- Committed revision 4 >>>

<<< Started new transaction, based on original revision 5

------- Committed revision 5 >>>

但在此之后,当我浏览存储库时,我仍然可以看到TortoiseSVN中的文件。我尝试在Tortoise中清理我的缓存存储库,但这并没有帮助。我想也许这是Tortoise的一个错误,所以我回到我的服务器并将存储库检出到本地目录:

bitnami@linux:~/working$ svn co file:///opt/bitnami/repository/RedMineProduction/
    A    RedMineProduction/NewFolder
    A    RedMineProduction/Test
    A    RedMineProduction/Test/.NET String Formats.pdf
Checked out revision 5.

我查看了目录以确保文件存在:

bitnami@linux:~/working$ ls -lash RedMineProduction/*
RedMineProduction/NewFolder:
total 8.0K
4.0K drwxrwxr-x 2 bitnami bitnami 4.0K Mar 11 15:35 .
4.0K drwxrwxr-x 5 bitnami bitnami 4.0K Mar 11 15:35 ..

RedMineProduction/Test:
total 148K
4.0K drwxrwxr-x 2 bitnami bitnami 4.0K Mar 11 15:35 .
4.0K drwxrwxr-x 5 bitnami bitnami 4.0K Mar 11 15:35 ..
140K -rw-rw-r-- 1 bitnami bitnami 138K Mar 11 15:35 .NET String Formats.pdf

如何让Tortoise刷新到存储库的实际状态?这是一个5版本的回购......它将在我们的20k +修订版存储库中下载......

更多信息:

当我在浏览器中查看存储库时,我过滤掉的文件仍然可见。它们已经损坏了,我无法下载它们,但它们的文件名和相关的目录结构仍然存在。

我查看了my.dmp.filtered文件,看看旧结构中是否有任何痕迹,并且没有。结构和文件将具有&#34的提交编号;这是填充的空修订版&#34;消息。

0 个答案:

没有答案