Пример #1
0
apr_array_header_t *
svn_cstring_split(const char *input,
                  const char *sep_chars,
                  svn_boolean_t chop_whitespace,
                  apr_pool_t *pool)
{
  apr_array_header_t *a = apr_array_make(pool, 5, sizeof(input));
  svn_cstring_split_append(a, input, sep_chars, chop_whitespace, pool);
  return a;
}
Пример #2
0
apr_array_header_t *svn_support_blame_call(char *file_path, 
                                           int revision, 
                                           apr_pool_t *subpool)
{
  svn_error_t *err;
  svn_opt_revision_t peg_rev,start,end;
  svn_diff_file_options_t *diff_options;
  
  // -- Initialisation des révisions --
  if (revision != -1) {
    peg_rev.kind = end.kind = svn_opt_revision_number;
    peg_rev.value.number = end.value.number = revision;
    
  }
  else {
    peg_rev.kind = svn_opt_revision_unspecified;
    end.kind = svn_opt_revision_head;
  }
  
  start.kind = svn_opt_revision_number;
  start.value.number = 1;

  // -- Initialisation des diff_options --

  diff_options = svn_diff_file_options_create(pool);
  

  // -- Initialisation du tableau et du buffer de résultats -- 
  apr_array_header_t *list_result = apr_array_make(pool, 1, sizeof (const char *));
  svn_stringbuf_t *res = svn_stringbuf_create("",pool);
  

  err = svn_client_blame4(file_path,
                          &peg_rev,
                          &start,
                          &end,
                          diff_options,
                          FALSE, // ignore_mime_type
                          FALSE,  // include_merged_revisions
                          blame_callback,
                          res,
                          ctx,
                          pool);
  if (err) {
    svn_handle_error2(err, stderr, FALSE, "svn_support_blame: ");
    svn_pool_destroy(subpool);
    return NULL;
  }
  svn_cstring_split_append(list_result,res->data,"\n",FALSE,pool);
  svn_pool_destroy(subpool);
  return list_result;
}
Пример #3
0
apr_array_header_t *svn_support_list_call(char *rep_path, int rev,apr_pool_t *subpool)
{  
  svn_error_t *err;
  svn_opt_revision_t revision;
  
  // -- Initialisation de la revision --
  if (rev != -1) {
    revision.kind = svn_opt_revision_number;
    revision.value.number = rev;
  }
  else{
    revision.kind = svn_opt_revision_unspecified;
  }

  // -- Initialisation du tableau et du buffer de résultats -- 
  apr_array_header_t *list_result = apr_array_make(subpool, 1, sizeof (const char *));
  svn_stringbuf_t *res = svn_stringbuf_create("",subpool);	
  
  // -- Appel de svn list --
  
  err = svn_client_list2(rep_path,
			 &revision,
			 &revision,
			 svn_depth_immediates,
			 SVN_DIRENT_ALL,
			 FALSE,
			 list_callback,
			 res,
			 ctx,
			 subpool);
  
  if (err) {
    svn_handle_error2(err, stderr, FALSE, "svn_support_list: ");
    svn_pool_destroy(subpool);
    return NULL;
  } 
  
  svn_cstring_split_append(list_result,res->data,"\n",TRUE,subpool);  
  
  svn_pool_destroy(subpool);
  return list_result;
}
Пример #4
0
/* fonction simulant la commande svn log */
apr_array_header_t *svn_support_log_call(char *rep_path, 
                                         int start, 
                                         int end, 
                                         int limit, 
                                         apr_pool_t *subpool)
{  
  svn_error_t *err;
  svn_opt_revision_t revision_start;
  svn_opt_revision_t revision_end;

  
  // -- Initialisation de la cible --
  apr_array_header_t *targets = apr_array_make (subpool, 1, sizeof (char *));
  *(char **)apr_array_push(targets) = rep_path;
  
  // -- Initialisation de l'intervalle de revisions --
  if (end == -1) { 
    if (start == -1) {
      revision_start.kind = svn_opt_revision_head;
      revision_end.kind = svn_opt_revision_number;
      revision_end.value.number = 1;
    }
    else {
      revision_start.kind = svn_opt_revision_number;
      revision_start.value.number = start;
      revision_end.kind = svn_opt_revision_head;
    }
  }
  else {
    if (start == -1) {
      revision_start.kind = svn_opt_revision_number;
      revision_start.value.number = end;
      revision_end.kind = svn_opt_revision_number;
      revision_end.value.number = 1;
    }
    else {
      revision_start.kind = svn_opt_revision_number;
      revision_start.value.number = start;
      revision_end.kind = svn_opt_revision_number;
      revision_end.value.number = end;
    }
  }
    
  // -- Choix des propriétés a récupérer --
  apr_array_header_t *revprops = apr_array_make (subpool, 3, sizeof (char *));
  *(char **)apr_array_push(revprops) = SVN_PROP_REVISION_AUTHOR;
  *(char **)apr_array_push(revprops) = SVN_PROP_REVISION_DATE;
  *(char **)apr_array_push(revprops) = SVN_PROP_REVISION_LOG;

  // -- Initialisation du tableau et du buffer de résultats -- 
  apr_array_header_t *list_result = apr_array_make(subpool, 1, sizeof (const char *));
  svn_stringbuf_t *res = svn_stringbuf_create("",subpool);	
  err = svn_client_log4(targets,
			&revision_start,
			&revision_start,
			&revision_end,
			limit,
			FALSE,
			TRUE,
			FALSE,
			revprops,
			log_callback,
			res,
			ctx,
			subpool);
  
  if (err) {
    svn_handle_error2(err, stderr, FALSE, "svn_support_log: ");
    svn_pool_destroy(subpool);
    return NULL;
  }
  svn_cstring_split_append(list_result,res->data,"\n",FALSE,subpool);
  svn_pool_destroy(subpool);
  return list_result;
}