Π’Π°ΠΊ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅Π±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Π΅ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ Π² git. ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ Π³Π΅ΠΌΠΎΠΌ lolcommits, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΡΡΡΡΡ Π ΠΎΡΠ΅Π½Π±Π΅ΡΠ³ΠΎΠΌ.
ΠΡΠΎΡΡΠΎ ΠΏΡΠΈΠΊΠΎΠ»ΡΠ½ΠΎπ€ Π²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ²ΡΠ·Π°Π½ Ρ Π²Π°ΡΠΈΠΌ ΡΠ΅ΠΊΡΡΠΈΠΌ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° git, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Tower.
ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ?
ΠΠ΅ΡΠ΅Π΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Π³Π΅ΠΌΠ° lolcommits
Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ Homebrew. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ²ΠΎΠ΅ΠΌ Π»ΡΠ±ΠΈΠΌΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ImageMagick ΠΈ FFmpeg:
brew install imagemagick ffmpeg
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π³Π΅ΠΌ `lolcommits`:
gem install lolcommits
ΠΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΠΌ Ρ
ΡΠΊ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² git. ΠΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ Π²Π°ΠΌ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ. Π₯ΡΠΊ post-commit
β ΡΡΠΎ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ (ΠΎΡΡΡΠ΄Π° ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ post). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ.
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ lolcommits
Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ» Π² ΡΠ²ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ git ΠΏΠΎ ΡΡΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ .git/hooks/post-commit
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:
#!/usr/bin/env bash # We only execute the script when not merging or rebasing. if [ ! -d "$GIT_DIR/rebase-merge" ]; then # Set the correct language. export LANG="en_US.UTF-8" # Add homebrew to the PATH. export PATH="/usr/local/bin:$PATH" # When using Rbenv we need to add the shims directory to the PATH. export PATH="~/.rbenv/shims:$PATH" # Define the directory where the gif will be placed. export LOLCOMMITS_DIR=/Users/fousa/Dropbox/Lolcommits # Generate the gif. lolcommits --capture \ --animate=4 \ --delay=5 \ --device='FaceTime HD Camera' >/dev/null 2>&1 & fi
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ post-hook ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ.
chmod +x .git/hooks/post-commit
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»ΠΎΠ² ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΈ:
- ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π·Π°ΠΏΡΡΡΠΈΠ²
lolcommits --devices
Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. Π― ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠ΅Π³ΠΎ MacBook. - ΠΡ
delay
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠ°ΠΌΠ΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ°. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ GIF Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠ½ΡΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ°Π΄Ρ, ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΊΡΠ°ΡΠΈΠ²ΠΎ. π£
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π·Π΄Π΅ΡΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ
ΠΠΎ ΠΊΠ°ΠΊ Π±ΡΡΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ? ΠΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π±Π»ΠΎΠ½ git, ΡΡΠΎΠ±Ρ Π²Π°ΠΌ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Ρ ΡΠΊ ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Ρ
ΡΠΊ post-commit ΡΡΠ΄Π°: ~/.git_template/hooks/post-commit
. ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ°Π±Π»ΠΎΠ½Π° Π² ΡΠ°ΠΉΠ»Π΅ .gitconfig
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
[init] templatedir = ~/.git_template
ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎΡ Ρ
ΡΠΊ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ git init
.
ΠΡ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ git init
Π² ΠΊΠΎΡΠ½Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠΎ ΡΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ ΠΈΠ· ΡΠ°Π±Π»ΠΎΠ½Π° Π² Π²Π°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΠΎΠ³Π΄Π° Ρ
ΡΠΊ ΡΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π½Π° git init
. (ΠΈΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΊΠΎΠ΄ Π² ΡΠΊΡΠΈΠΏΡ post-commit
)
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠΊΠ° ΡΡΠΎ ΠΊΡΡΡΠΎ! π€