- if ( $command eq 'add' ) {
- warn 'rsync', "root\@$ip:$path", "$ip/$path";
- system 'rsync', "root\@$ip:$path", "$ip/$path";
- system 'git', 'add', "$ip/$path";
+ if ( ! $command ) {
+ system "find $hostname -type f | sed 's,$hostname,,' > /tmp/$hostname.list";
+ system "rsync -avv --files-from /tmp/$hostname.list root\@$hostname:/ $hostname/"
+ } elsif ( $command eq 'add' ) {
+ system 'rsync', '-avv', "root\@$hostname:$path", "$hostname/$path";
+ system 'git', 'add', "$hostname/$path";
+ } elsif ( $command eq 'commit' ) {
+ system 'rsync', '-avv', "root\@$hostname:$path", "$hostname/$path" if $path;
+ $message ||= "$command $hostname $path";
+ system 'git', 'commit', '-m', $message, "$hostname/$path";
+ } elsif ( $command =~ m{(diff|status|log)} ) {
+ my $opt = '--summary' if $command eq 'log';
+ print $client `git $command $opt $hostname`;
+ } elsif ( $command eq 'revert' ) {
+ print $client `git checkout -- $hostname/$path`;
+ system 'rsync', '-avv', "$hostname/$path", "root\@$hostname:$path";