1

我的文件布局是这样的

~/foo/
foo.pl
Foo.pm
    ~/foo/data
        ~/foo/data/an_article.txt
        ~/foo/data/an_article/
            ~/foo/data/an_article/image.jpg
            ~/foo/data/an_article/movie.mp4
        ~/foo/data/another_article.txt
        ~/foo/data/another_article/
            ~/foo/data/another_article/audio.mp3
            ~/foo/data/another_article/raster.nc

当然,我想git跟踪所有文本文件(程序、CSS、html 模板和扩展名为.txt的文章)的更改。关于二进制文件,我只想跟踪git它们的最新版本。因此,如果我更改movie.mp4应该在其and中包含最新版本,但应该保存以前的版本。换句话说,我想对除了二进制文件之外的所有东西都做它的事情,但是对于二进制文件应该假装它是.git pushpullgitgitgitrsync

逻辑

从上面的布局可以看出,~/foo/data这确实是我的数据存储。每篇文章都有自己的同名文件夹,其中包含任何相关的二进制文件。这可确保所有相关文件都非常接近。如果我将二进制文件移到这个结构之外,那么我不仅必须编写一个单独的部署脚本(可能是一个rsync同步二进制文件的脚本),更重要的是,我破坏了我的数据存储的逻辑结构。

建议?

4

3 回答 3

8

Git 不能按照你想要的方式工作。新提交取决于旧提交:在计算新提交的 SHA-1 时,父提交的 SHA-1 包含在计算中。这正是 Git安全的原因:可以检测到对旧提交的任何修改,并会破坏历史记录。

于 2013-07-04T14:29:41.703 回答
1

将二进制文件作为部署脚本的一部分拉入。

于 2013-07-04T14:30:24.183 回答
1

从上面的布局可以看出,~/foo/data 确实是我的数据存储。

基于 git 的数据存储,见 git 附件: http: //git-annex.branchable.com/

从 git 中删除历史:没有这样的事情,请参阅上面的 Bruno Reis 的解释。

于 2013-07-04T14:48:40.037 回答