anchor.diff:  update_source(AppDir, {hg, _Url, Rev}) ->
       rebar_utils:sh(?FMT("hg pull -u -r ~s", [Rev]), [{cd, AppDir}]);
   update_source(AppDir, {bzr, _Url, Rev}) ->
  -    rebar_utils:sh(?FMT("bzr update -r ~s", [Rev]), [{cd, AppDir}]).
  +    rebar_utils:sh(?FMT("bzr update -r ~s", [Rev]), [{cd, AppDir}]);
  +update_source(AppDir, {rsync, Url}) ->
  +    rebar_utils:sh(?FMT("rsync -az --delete ~s/ ~s",[Url,AppDir]),[]).
  +
   
   
   
  
positive.code:     ok = filelib:ensure_dir(AppDir),
      rebar_utils:sh(?FMT("svn checkout -r ~s ~s ~s",
                          [Rev, Url, filename:basename(AppDir)]),
                     [{cd, filename:dirname(AppDir)}]).
  
  update_source(Dep) ->
      %% It's possible when updating a source, that a given dep does not have a
  
negative.code:             false
      end.
  
  required_vcs_client_vsn(hg)    -> {1, 1};
  required_vcs_client_vsn(git)   -> {1, 5};
  required_vcs_client_vsn(bzr)   -> {2, 0};
  required_vcs_client_vsn(svn)   -> {1, 6};
  required_vcs_client_vsn(rsync) -> {2, 0}.
  
  vcs_client_vsn(hg) ->
      vcs_client_vsn(rebar_utils:find_executable("hg"), " --version",
  