代码之家  ›  专栏  ›  技术社区  ›  Artem Russakovskii

免费源代码控制系统,不需要存储每个文件的本地副本,从而使空间使用加倍?

  •  2
  • Artem Russakovskii  · 技术社区  · 15 年前

    是否有一个源代码控制系统(除了cvs)可以配置为不存储文件的本地副本?或者它只是不按设计来做?理想情况下,可以通过扩展名或文件大小配置这样的选项。

    例如,如果我有时确实想在SVN中存储大型电影或图片,最终的结果是客户机空间使用量的两倍——而且没有办法解决这个问题。

    我意识到一个解决方案不仅仅是提交这样的文件,而是搜索另一个解决方案。

    我刚试过汞,而且它也消耗了两倍的空间。我怀疑吉特也会这么做。

    另外,我不明白为什么SVN不能实现对这一点的支持。这有多简单——如果一个文件不是本地存储的,像cvs那样远程获取它。如果网络当前不可用,则显示错误。发泄

    6 回复  |  直到 15 年前
        1
  •  3
  •   LukáÅ¡ Lalinský    15 年前

    你可以使用 Bazaar 轻量级的分支结帐。工作目录将只包含可编辑的源代码,BZR将对几乎所有操作进行网络查找。但您会发现,即使使用常规分支,具有所有历史记录的分支的大小通常也小于工作树。

        2
  •  2
  •   Aaron Digulla    15 年前

    SVN(以及所有其他的现代VCS)被设计用来存储大量的小文本文件,而不是大量的大二进制文件。所有的都保留一个本地副本,因为它很便宜(大多数项目很少使用超过几兆字节),而且几乎所有的操作都快得多(diff、status、local commit)。

    所以你用错了工具。如果需要管理图像,请尝试 Picasa 或者类似的东西。不幸的是,大多数图像数据库不知道如何保存图像的编辑历史(这很遗憾;我已经打开了一个 bug against digikam 几年前它还开着)。

    我的意思是,保留原始图像并保存所有编辑的选项以及当前的“最终”图像会更有效率。两者之间的所有内容都可以从原始图像重新创建,并再次应用操作。世界上没有任何一家风投能够在效率方面超过这一水平(“对比度+10%”,对比两个JPG)。

    因此,您今天的最佳选择要么是专业的照片编辑工具(->不是免费的),要么您必须复制并重命名要编辑的照片。

    是的,很烂。

    如果你只知道一把锤子,你会把每个问题都当作钉子来对待。

        3
  •  0
  •   Andrew Keith    15 年前

    我使用过的唯一一个不会引起任何额外使用空间的,是普遍讨厌的,可视的SourceSafe。

    SOURESAFE 6.0只会增加源绑定的存储开销。

    但是,我认为SourceSafe是一个源代码销毁系统,所以我根本不推荐它。

        4
  •  0
  •   mouviciel    15 年前

    ClearCase 只在工作区存储本地修改的文件(在其命名约定中称为视图)。

        5
  •  0
  •   PhiLho    15 年前

    这听起来可能很愚蠢(也许是),但是一旦你提交了大文件,为什么不直接删除磁盘上的文件呢?毕竟,VCS可以在需要的时候精确地用于恢复文件。

    我刚在集市上试过:

    > ls -al
    total 7123
    drwxrwxrwx   1 user     group           0 Oct  5 11:42 .
    drwxrwxrwx   1 user     group           0 Oct  5 11:22 ..
    -rw-rw-rw-   1 user     group     2469224 Aug 29  2007 Charles_Darwin_01.jpg
    -rwxrwxrwx   1 user     group     4076719 Sep 25 15:35 FileZilla-3.2.7.1.exe
    -rw-rw-rw-   1 user     group      746477 Aug 24 18:35 floorplan2008.png
    
    > du -bs
    7292420 .
    
    > bzr init
    Created a standalone tree (format: 2a)
    
    REM Adding by name to override my own ignore rules, a simple `bzr add` is enough otherwise
    > bzr add Charles_Darwin_01.jpg  FileZilla-3.2.7.1.exe  floorplan2008.png
    adding Charles_Darwin_01.jpg
    adding FileZilla-3.2.7.1.exe
    adding floorplan2008.png
    
    > bzr commit -m "Storing big binary files in repository"
    Committing to: E:/temp/TestsVCS/Big/
    added Charles_Darwin_01.jpg
    added FileZilla-3.2.7.1.exe
    added floorplan2008.png
    Committed revision 1.
    
    > du -bs
    14552798        .
    
    > rm Charles_Darwin_01.jpg  FileZilla-3.2.7.1.exe  floorplan2008.png
    
    > du -bs
    7260378 .
    
    > bzr add Bazaar-quick-start-summary.pdf
    adding Bazaar-quick-start-summary.pdf
    
    > bzr commit -m "Adding good reference" Bazaar-quick-start-summary.pdf
    Committing to: E:/temp/TestsVCS/Big/
    added Bazaar-quick-start-summary.pdf
    Committed revision 2.
    
    > rm Bazaar-quick-start-summary.pdf
    
    > du -bs
    7666520 .
    
    REM I want to work on a file
    > bzr revert Charles_Darwin_01.jpg
     N  Charles_Darwin_01.jpg
    
    REM I edited the file
    > ls -l Charles_Darwin_01.jpg
    -rw-rw-rw-   1 user     group     2419048 Oct  5 11:52 Charles_Darwin_01.jpg
    
    > bzr st
    removed:
      Bazaar-quick-start-summary.pdf
      FileZilla-3.2.7.1.exe
      floorplan2008.png
    modified:
      Charles_Darwin_01.jpg
    
    REM I commit by name to avoid to commit the deletions, 
    REM but actually they can be commited without problem
    > bzr commit -m "Changed just some IPTC tags" Charles_Darwin_01.jpg
    Committing to: E:/temp/TestsVCS/Big/
    modified Charles_Darwin_01.jpg
    Committed revision 3.
    
    > du -bs
    12505785        .
    
    > rm Charles_Darwin_01.jpg
    
    > du -bs
    10086737        .
    REM + size of image + around 1KB of metadata
    

    注意:这在Windows上,但是我使用unxutils命令,它们在命令行上很方便。

        6
  •  -1
  •   Jay    15 年前

    你的图片库有多大?现在,我认为再购买一个80GB硬盘(如果你能在市场上找到一个那么小的硬盘)要比购买一个具有节省磁盘空间功能的源代码控制包便宜。