我有一个文档
有批处理/半自动化解决方案吗?
我有大量提交,不想逐个导出。
.ai
文件与我的项目一起进行版本控制,现在我想要导出Git存储库中保存的该文件的每个“快照”。有批处理/半自动化解决方案吗?
我有大量提交,不想逐个导出。
.ai
文件与我的项目一起进行版本控制,现在我想要导出Git存储库中保存的该文件的每个“快照”。要将文件的所有版本导出到指定文件夹,您可以在Bash中使用以下循环:
for rev in $(svn log -q FILENAME | awk '/^r[0-9]+/ {print substr($1, 2)}'); do
svn cat -r $rev FILENAME > /path/to/folder/FILENAME.$rev
done
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
。将path/to/exportfolder
替换为要将文件导出到的位置的实际路径(导出文件夹必须存在)。您还可以修改导出的文件名,在此版本中它使用格式"_doc.ai"; 只需确保在使用带有空格的文件或路径名时使用引号。
此版本将从当前检出的修订版(HEAD
)开始,并遍历从HEAD
在祖先树中可到达的所有修订版历史记录。这意味着您应该检出要从其中开始导出的最新修订版。
很快,但既然没有其他人想到了什么:
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
。FILE
(git checkout HEAD $FILE
),并且不要将 snapshots 文件夹添加到您的 repository
中。 :)