6

我的项目中有一个版本化的文档.ai文件,现在我想导出 Git 存储库为该文件保存的每个“快照”

任何批处理/半自动解决方案?

我有大量的提交,并没有太多打算逐个导出它们。

4

2 回答 2

12

要将文件的所有修订版导出到给定文件夹,可以在 Bash 中使用此循环:

for sha in `git rev-list HEAD -- path/to/file`; do
    git show ${sha}:path/to/file > path/to/exportfolder/${sha}_doc.ai
done

当然,您可以自定义它。

将代码段复制到文本文件中,并替换path/to/file为要导出的文件的实际路径(在 repo 内)。替换path/to/exportfolder为要将文件导出到的实际路径(导出文件夹必须存在)。您也可以修改导出的文件名,在这个版本中它使用格式“_doc.ai”;如果要使用带空格的文件或路径名,请确保使用引号。

此版本将从当前签出的修订版 ( HEAD) 开始,并遍历历史记录到HEAD祖先树中可访问的所有修订版。这意味着您应该查看要开始导出的最新版本。

于 2013-07-12T08:15:15.327 回答
6

很快,但由于没有其他人想出一些东西:

mkdir snapshots
FILE=YourFile.ai
i=1
for COMMIT in $(git log --oneline $FILE | cut -f 1 -d " "); do 
  git checkout $COMMIT $FILE; 
  cp $FILE snapshots/$i-$COMMIT.ai; 
  (( i = i + 1 ))
done

然后您的目录snapshots包含该文件的所有版本。名称由数字1..n组成,该数字随着每个版本的年龄和相应的提交以及文件扩展名的增加而增加.ai

PS:不要忘记FILE在那之后更新(git checkout HEAD $FILE)并且不要将文件夹快照添加到您的repository. :)

于 2013-07-12T07:22:45.950 回答