language: Python
992 Bytes / 29 lines / 25 loc
#!/usr/bin/python
# update-index.c:add_file_to_cache
import os
import subprocess
import sys
import index
filenames = subprocess.check_output(['find'] + sys.argv[1:] + ['!', '-type', 'd']).splitlines() # for directories
entries = index.read_index()
for filename in filenames:
entries = [e for e in entries if e[0] != filename]
if os.path.exists(filename):
if os.path.islink(filename): # for symlinks
mode = 0120000
with open('.zit/blob.tmp', 'w') as f:
f.write(os.readlink(filename))
sha1 = subprocess.check_output(['hash-object', 'blob', '.zit/blob.tmp']).strip()
else:
if os.access(filename, os.X_OK): # for executable files
mode = 0100755
else:
mode = 0100644
sha1 = subprocess.check_output(['hash-object', 'blob', filename]).strip()
entries.append((filename, mode, bytearray.fromhex(sha1)))
entries.sort()
index.write_index(entries)