0
votes

Utilisation de SED dans la commande SVN Ignore les backslashes du répertoire

Je veux vérifier l'état des fichiers de ma copie de travail SVN, puis supprimez-les par SVN si elles ont été supprimées manuellement (elles peuvent donc être engagées). J'ai découvert que xxx

trouve correctement les fichiers que j'ai supprimés manuellement, je suis mon cas c'est des travaux \ run_testss_on_master. Mais quand j'essaie de supprimer le répertoire à l'aide de: xxx

i get erreur: xxx

On dirait que le répertoire manque backslashes. Y a-t-il un moyen de travailler autour de cela?


0 commentaires

3 Réponses :


0
votes

Le suivant awk code> testera toutes les lignes de la sortie code> svn code> pour voir si elle peut supprimer une marque d'exclamation suivie par des espaces du début de cette ligne. Si tel est le cas, il effectuera svn rm code> sur la chaîne résultante.

svn status 'C:\Tools\Jenkins' |awk 'sub(/^! */, ""){system("svn rm " $0)}'


2 commentaires

Quand j'effectue la commande, je suis AWK: SUB (/ ^! * /, ") Awk: ^ String non défini (pointant vers" dans l'expression


Dans une sous-expression pour être spécifique



0
votes

Vous pouvez faire deux choses pour améliorer votre commande: remplacer le grep code> + sed code> combinaison avec un seul appel à sed code> (Merci à -n code> et p code> drapeaux) et utilisez des guides simples dans sed code>. Utilisation de echo code> à la place de svn code>, ce serait quelque chose comme ceci: xxx pré>

J'ai compris que le problème est avec le Xargs code> une partie de la commande. Vous devez utiliser l'option -0 code>: p>

>>> echo '!C  C:\\Tools\\Jenkins\\' | sed -nr 's/!C *//gp' | xargs -0 echo

C:\\Tools\\Jenkins\\


3 commentaires

Je reçois une erreur "C: \ Program Files (x86) \ gnuwin32 \ bin \ xargs.exe: echo: Aucun fichier ou répertoire de ce type"


J'ai essayé de résoudre le problème en tapant "SVN Statut" C: \\ Outils \\ Jenkins \\ "| grep" ^ \! "| Sed.exe" S / ^ \! * // g "| xargs -0 svn --force rm" et i get "svn: E020024: Erreur lors de la résolution du cas de 'C: \ Tools \ Jenkins \ Jobs \ Run_TestSS_on_Master" :(


@Biba Je n'ai pas accès à une machine Windows, mais toujours, essayez d'utiliser des guillemets simples ' au lieu de doubles ".



0
votes

J'ai fait une solution de contournement de la question, basée sur les solutions suggérées:

  1. Stockez les fichiers supprimés dans le fichier TXT LI> ol> xxx pré>
    1. Supprimer des fichiers indiqués dans File.txt à l'aide de la commande SVN Supprimer Li> OL>
      for /F "usebackq tokens=*" %%A in (file.txt) do (svn remove "%%A")
      


0 commentaires