Usando fswatch do seu repositório:
fswatch . 'git commit -avm "snapshot at ${date}"'
Este exemplo simples só detecta alterações em arquivos que já estão no repositório.
Estou procurando um método eficiente para monitorar um diretório local no OSX e, se algum arquivo tiver sido alterado nesse diretório, execute um script bash para enviar os arquivos para o github.
Qualquer ferramenta de recomendação para monitorar um diretório para alterações de arquivos e, em seguida, acionar uma ação, por exemplo, um script bash?
Usando fswatch do seu repositório:
fswatch . 'git commit -avm "snapshot at ${date}"'
Este exemplo simples só detecta alterações em arquivos que já estão no repositório.
Uma opção seria apenas usar o launchd. Salve uma lista de propriedades como ~/Library/LaunchAgents/com.superuser.445907.plist
e carregue-a com launchctl load ~/Library/LaunchAgents/com.superuser.445907.plist
ou fazendo logout e voltando.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.superuser.445907</string>
<key>Program</key>
<string>/Users/username/script</string> <!-- ~/ doesn't work -->
<key>WatchPaths</key>
<array>
<string>/Users/username/Folder/</string>
</array>
<key>ThrotteInterval</key>
<integer>0</integer> <!-- run at most every 0 seconds, by default 10 -->
</dict>
</plist>
O Launchd só registra as alterações nos arquivos quando eles são salvos atomicamente ou excluídos e recriados sempre que são salvos. A maioria dos aplicativos do OS X realiza salvamentos atômicos por padrão, mas, por exemplo, o TextMate e o vim não. As alterações nas subpastas de pastas monitoradas não são detectadas.
launchctl unload $path && launchctl load $path
aplica alterações a uma plist.
Veja man launchd
e man launchd.plist
para mais informações.