从SVN还原已删除的文件夹

从SVN还原已删除的文件夹,svn,tortoisesvn,Svn,Tortoisesvn,在我的SVN文件夹中,有人删除了我们的项目源代码。使用SVN历史记录,我们无法识别删除这些文件的人。项目相关历史记录下未显示任何活动 是否有任何选项可以在不登录历史记录的情况下从SVN中删除文件夹 SVN服务器下是否有恢复这些文件的选项 感谢如果删除发生在SVN服务的后面,我可以想到的唯一方法是从SVN中删除,而不在日志中显示它(例如,有人登录到服务器并从命令shell中删除了文件/目录) 如果是这种情况,您可以从服务器上的备份还原文件/目录——假设服务器已备份。请注意,在这种情况下,您很可能可

在我的SVN文件夹中,有人删除了我们的项目源代码。使用SVN历史记录,我们无法识别删除这些文件的人。项目相关历史记录下未显示任何活动

  • 是否有任何选项可以在不登录历史记录的情况下从SVN中删除文件夹
  • SVN服务器下是否有恢复这些文件的选项

  • 感谢

    如果删除发生在SVN服务的后面,我可以想到的唯一方法是从SVN中删除,而不在日志中显示它(例如,有人登录到服务器并从命令shell中删除了文件/目录)

    如果是这种情况,您可以从服务器上的备份还原文件/目录——假设服务器已备份。请注意,在这种情况下,您很可能可以访问源的早期版本(备份时),具体取决于人们最近提交到该目录的时间


    当然,如果发生如上所述的删除,它很可能会打乱SVN簿记,因此您可能无法提交…

    如果删除发生在SVN服务后面,我可以想到的唯一方法是从SVN中删除,而不在日志中显示它(例如,有人登录到服务器并从命令shell中删除了文件/目录)

    如果是这种情况,您可以从服务器上的备份中还原文件/目录(假设服务器已备份)。请注意,在这种情况下,您很可能可以访问源的早期版本(备份时),具体取决于用户最近提交到该目录的时间

    当然,如果发生如上所述的删除,它很可能会打乱SVN簿记,因此您可能无法提交

  • 不,在SVN日志中没有反映的情况下,无法删除文件夹。具有SVN服务器访问权限的管理员可能会执行
    SVNADMIN转储
    /
    SVNADMIN加载
    ,并使用
    SVNDUMPFILTER
    删除更改集,但我不认为这是您要问的问题……或者这可能是hap的问题吗佩内德

  • SVN存储库可以回滚到任何以前的版本,因此没有无法撤消的更改。如果您确定某个文件夹已被删除而未反映在SVN日志中,则可能有人有一个仍包含该文件夹的工作副本--您可以从那里获得该文件夹

  • 不,在SVN日志中没有反映的情况下,无法删除文件夹。具有SVN服务器访问权限的管理员可能会执行
    SVNADMIN转储
    /
    SVNADMIN加载
    ,并使用
    SVNDUMPFILTER
    删除更改集,但我不认为这是您要问的问题……或者这可能是hap的问题吗佩内德

  • SVN存储库可以回滚到任何以前的版本,因此没有无法撤消的更改。如果您确定某个文件夹已被删除而未反映在SVN日志中,则可能有人有一个仍包含该文件夹的工作副本--您可以从那里获得该文件夹


  • 除非回购严重受损,否则所有删除操作都将显示在日志中。我猜您查询的路径是错误的,可能是从工作副本发出
    svn log
    。子命令接受URL,因此您可以简单地:

    svn log https://example.com/svn/project/
    
    svn log https://example.com/svn/project/trunk/foo/bar@314 --revision 314:HEAD
    
    而不是

    svn log 
    
    …或:

    svn log https://example.com/svn/project/trunk/
    
    当然,如果您知道目录路径并知道它仍然存在的修订号,您可以简单地:

    svn log https://example.com/svn/project/
    
    svn log https://example.com/svn/project/trunk/foo/bar@314 --revision 314:HEAD
    

    更新:尽管Lazy Badger出人意料地宣称,修订历史是Subversion的核心功能,不依赖于存储库访问方法:

    E:\test>svnadmin create myrepo
    
    E:\test>svn checkout file:///E:/test/myrepo mywc
    Checked out revision 0.
    
    E:\test>svn mkdir mywc\mydirectory
    A         mywc\mydirectory
    
    E:\test>svn commit -m "Add a directory" mywc
    Adding         mywc\mydirectory
    
    Committed revision 1.
    
    E:\test>svn delete mywc\mydirectory
    D         mywc\mydirectory
    
    E:\test>svn commit -m "Remove the directory" mywc
    Deleting       mywc\mydirectory
    
    Committed revision 2.
    
    E:\test>svn log -r2 -v file:///E:/test/myrepo/
    ------------------------------------------------------------------------
    r2 | ALVARO.GONZALEZ | 2012-04-03 17:00:34 +0200 (mar, 03 abr 2012) | 1 line
    Changed paths:
       D /mydirectory
    
    Remove the directory
    ------------------------------------------------------------------------
    
    E:\test>
    
    这是有道理的:无法跟踪更改将使Subversion完全无法作为版本控制工具使用。评论员可能会将
    svn log
    中的日志与Apache维护的访问日志混淆,这是一件完全不同的事情,甚至无法通过Subversion命令读取


    提交到存储库的任何删除都将显示在修订日志中,无论它是如何提交的,除非(我已经指出)存储库本身已损坏。

    除非repo严重损坏,否则所有删除操作都将显示在日志中。我猜您查询的路径错误,可能是从工作副本发出
    svn log
    。子命令接受URL,以便您可以简单地:

    svn log https://example.com/svn/project/
    
    svn log https://example.com/svn/project/trunk/foo/bar@314 --revision 314:HEAD
    
    而不是

    svn log 
    
    …或:

    svn log https://example.com/svn/project/trunk/
    
    当然,如果您知道目录路径并知道它仍然存在的修订号,您可以简单地:

    svn log https://example.com/svn/project/
    
    svn log https://example.com/svn/project/trunk/foo/bar@314 --revision 314:HEAD
    

    更新:尽管Lazy Badger出人意料地宣称,修订历史是Subversion的核心功能,不依赖于存储库访问方法:

    E:\test>svnadmin create myrepo
    
    E:\test>svn checkout file:///E:/test/myrepo mywc
    Checked out revision 0.
    
    E:\test>svn mkdir mywc\mydirectory
    A         mywc\mydirectory
    
    E:\test>svn commit -m "Add a directory" mywc
    Adding         mywc\mydirectory
    
    Committed revision 1.
    
    E:\test>svn delete mywc\mydirectory
    D         mywc\mydirectory
    
    E:\test>svn commit -m "Remove the directory" mywc
    Deleting       mywc\mydirectory
    
    Committed revision 2.
    
    E:\test>svn log -r2 -v file:///E:/test/myrepo/
    ------------------------------------------------------------------------
    r2 | ALVARO.GONZALEZ | 2012-04-03 17:00:34 +0200 (mar, 03 abr 2012) | 1 line
    Changed paths:
       D /mydirectory
    
    Remove the directory
    ------------------------------------------------------------------------
    
    E:\test>
    
    这是有道理的:无法跟踪更改将使Subversion完全无法作为版本控制工具使用。评论员可能会将
    svn log
    中的日志与Apache维护的访问日志混淆,这是一件完全不同的事情,甚至无法通过Subversion命令读取

    提交到存储库的任何删除都将显示在修订日志中,无论它是如何提交的,除非(我已经指出)存储库本身已损坏。

    我的2美分:

  • 没有
  • 只需在删除之前复制回存储库中的状态。因此,请看下面的示例。如果执行以下命令,则应还原已删除的文件夹
    /trunk/src/my/proj/client
    svn拷贝
    http://my.company.com/svn/repo/trunk/src/my/proj/client@4710
    http://my.company.com/svn/repo/trunk/src/my/proj/
  • 具有文件结构的示例存储库:

        Repo: http://my.company.com/svn/repo/
        /trunk
          /src
             /my
               /proj
                   /server
                   /client (is deleted on revision 4711)
    
    我的2美分:

  • 没有
  • 只需在删除之前复制存储库上的状态。因此,请看下面的示例。如果执行以下命令,则删除的文件夹
    /trunk/src/my/proj/client
    应为