Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - Євгеній Гизила
Añadido 06 ene. 2025 🌐 UK

Євгеній Гизила

@hyzyla_blog
Número de suscriptores: 598
Fotos: 61
Enlaces: 142
Descripción:
Автор @hyzyla Пишу про різне зі світу веб розробки: власний досвід, Python, React, TypeScript, стартапи і власні думки
Fuente

Євгеній Гизила | Останнім часом використовую git worktree, щоб паралельно робити кілька...

Logotipo de la comunidad de telegram - Євгеній Гизила Євгеній Гизила @hyzyla_blog
605 Vistas/Alcance 2026-08-04 08:28 Mensaje №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?