Джерело
Євгеній Гизила | Останнім часом використовую git worktree, щоб паралельно робити кілька...
605 Охват/переглядів
2026-08-04 08:28
Повідомлення №228
Останнім часом використовую git worktree, щоб паралельно робити кілька задач по одному й тому ж проєкту. І вилізла очевидна проблема, що в кожному такому клоні проєкту немає всього, що зазвичай лежить незакомічене в мене проєкті, для прикладу, .venv, node_modules, .mypy_cache, etc. Відповідно кожен такий worktree не безплатний і займає відчутно місця і часу на налаштування. Думаю, що окей, вмовили і треба вже нарешті почати використовувати нормальні інструменти. Ну ті які десь там глобально зберігають залежності і просто лінкують їх у проєкт. Для python вже використовую uv, тому — готово ✅, pnpm наче не старшний, тому можна зʼїхати з npm — okay i guess 👌, а з кешами, чорт їх побрав, не вартують моїх зусиль щоб робити — забʼю хуй 🙅
А потім, щось прибирався на кухні, слухав ютуб і мені прийшла в голову геніальна думка. Я ж на macOS працюю, а тут же ж copy-on-write файлова система — APFS! А ну дай пошукаю, як так взяти і скопіювати папку, щоб це було і швидко і займало три гроша. Якусь готову команду не найшов, тому накидав такий скрипт, який напряму робить syscall:
cow_clonedir() { python3 -c "import ctypes,ctypes.util,sys,os;l=ctypes. CDLL(ctypes.util.find_library('System'),use_errno=True);sys.exit(0 if l.clonefile(sys.argv[1].encode(),sys.argv[2].encode(),0)==0 else os.strerror(ctypes.get_errno()))" "$1" "$2"; }
і шо ви думаєте? виглядає страшне, а я вже тиждень користуюся і не можу нарадуватися як воно добре працює:
node_modules: 544 MB, 51,705 files: clonefile() copies it in 1.2s vs 103s for cp -Rc (~84×). Real disk cost is 20 MiB — just new inodes over shared blocks.
1. Create space-saving clones on macOS with Python
2. Is it possible to clone directories in APFS?
А потім, щось прибирався на кухні, слухав ютуб і мені прийшла в голову геніальна думка. Я ж на macOS працюю, а тут же ж copy-on-write файлова система — APFS! А ну дай пошукаю, як так взяти і скопіювати папку, щоб це було і швидко і займало три гроша. Якусь готову команду не найшов, тому накидав такий скрипт, який напряму робить syscall:
cow_clonedir() { python3 -c "import ctypes,ctypes.util,sys,os;l=ctypes. CDLL(ctypes.util.find_library('System'),use_errno=True);sys.exit(0 if l.clonefile(sys.argv[1].encode(),sys.argv[2].encode(),0)==0 else os.strerror(ctypes.get_errno()))" "$1" "$2"; }
і шо ви думаєте? виглядає страшне, а я вже тиждень користуюся і не можу нарадуватися як воно добре працює:
node_modules: 544 MB, 51,705 files: clonefile() copies it in 1.2s vs 103s for cp -Rc (~84×). Real disk cost is 20 MiB — just new inodes over shared blocks.
1. Create space-saving clones on macOS with Python
2. Is it possible to clone directories in APFS?