ref: 6adefeebd4153bac5e25c9b6667510a8281863eb
parent: e7587968c45c0171bd7d8b1a0a93e24d5cc6bac9
author: Ori Bernstein <ori@eigenstate.org>
date: Sat Nov 14 14:54:34 EST 2020
git/export: scale with size of diff, not size of repo git/export was very slow with large repositories, becasue it would invoke ape/diff on the entire tree, rather than just on the files that had changed between the commits being exported. This change uses git/query -c to get the list of files changed between two commits, and only diff those, which ends up being much faster.
--- a/export
+++ b/export
@@ -26,6 +26,7 @@
for(c in $commits){
cp=`{git/query -p $c}
pp=`{git/query -p $c'^'}
+ fc=`$nl{git/query -c $c~ $c | sed 's/^..//'}
@{
rfork n
@@ -56,7 +57,8 @@
next
}
{print; printf "\n"}'
- ape/diff -urN a b
+ for(f in $fc)
+ ape/diff -urN a/$rel b/$rel
} >$patchfile
if(~ $#patchdir 0){
cat $patchfile