Initial commit
This commit is contained in:
commit
8ebb68e863
6 changed files with 74 additions and 0 deletions
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
*.FCStd filter=rezip
|
||||
|
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
*.FCStd?*
|
||||
*.FCBak
|
||||
/exports/*
|
||||
|
20
.rezip/Readme.md
Normal file
20
.rezip/Readme.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
# FreeCad document handing with git example
|
||||
|
||||
FreeCad stores its douments compressed in zip file format. This makes git's delta compression actually unusable as all the document revisions will be totally different. Unfortunately the freecad documant loader implemantation heavily depends on the availability of some "files" being available at the beginning of the archive, so simply unzipping the document and rezipping with 0 compression level will not work.
|
||||
|
||||
The supplied rezip.zh script unzips a zip archive into the temp folder and rezips it retaining the order of the files in the original archive, using an user specified compression level (0 by default).
|
||||
|
||||
This repository serves as an example for setting up a git repo to recompress the .FCStd files during commit with 0 compression level, gicing a chance to go git to store the changes more efficiently.
|
||||
|
||||
## Usage
|
||||
- Make sure that zip and unzip commands are available on your system.
|
||||
- Copy the folder containing this document to the root of your hit repo, as "__*rezip*__".\
|
||||
``cp -r <path/to/.rezip> <your/git/tepository/``
|
||||
- Append the content of the file __*config*__ to your repository's __*.git/config*__ file.\
|
||||
``cd <your/git/tepository/``\
|
||||
``cat .rezip/config >>.git/config``
|
||||
- Copy __*gitattributes*__ to the root of your repository as __*.gitattributes*__:\
|
||||
``cp .rezip/gitattributes .gitattributes``
|
||||
- Add the recently created files to your git repository\
|
||||
``git add .rezip .gitattributes``\
|
||||
``git commit -m "Add FreeCad rezip"``
|
3
.rezip/config
Normal file
3
.rezip/config
Normal file
|
@ -0,0 +1,3 @@
|
|||
[filter "rezip"]
|
||||
clean = ./.rezip/rezip.sh -0
|
||||
smudge = ./.rezip/rezip.sh -9
|
2
.rezip/gitattributes
Normal file
2
.rezip/gitattributes
Normal file
|
@ -0,0 +1,2 @@
|
|||
*.FCStd filter=rezip
|
||||
|
43
.rezip/rezip.sh
Executable file
43
.rezip/rezip.sh
Executable file
|
@ -0,0 +1,43 @@
|
|||
#!/bin/sh
|
||||
#usage rezip.sh [-#] [filename]
|
||||
|
||||
unset compression
|
||||
|
||||
while [ $# != 0 ] ; do
|
||||
case $1 in
|
||||
-*)
|
||||
compression="$1"
|
||||
;;
|
||||
*)
|
||||
inputfile="$1"
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "$compression" ]; then compression=-0; fi
|
||||
|
||||
if [ -z "$inputfile" ]; then
|
||||
zipfile=$(mktemp -t rezip.zip.XXXXXXXX)
|
||||
cat >"$zipfile"
|
||||
else
|
||||
zipfile=$(realpath "$inputfile")
|
||||
fi
|
||||
|
||||
tmpdir=$(mktemp -d -t rezip.tmd.XXXXXXXX)
|
||||
|
||||
files=$(unzip -Z -1 "$zipfile")
|
||||
unzip -qq -d "$tmpdir" "$zipfile"
|
||||
cd "$tmpdir"
|
||||
tmpfile=$(mktemp -u -t rezip.tmp.XXXXXXXX)
|
||||
unzip -Z -1 "$curdir/$zipfile"| zip -qq -@ "$compression" "$tmpfile"
|
||||
|
||||
if [ -z "$inputfile" ] ; then
|
||||
rm "$zipfile"
|
||||
cat "$tmpfile"
|
||||
rm "$tmpfile"
|
||||
else
|
||||
mv "$tmpfile" "$zipfile"
|
||||
fi
|
||||
|
||||
rm -rf "$tmpdir"
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue