"svn add *" fügt sogar die Dateien hinzu, die ignoriert werden

8

Ich benutze svn add *, um Dateien zum svn hinzuzufügen, und es fügt die Konfigurationsdatei hinzu, die mit Sicherheit hinzugefügt wird, um sie zu ignorieren.

%Vor%

Was kann das Problem verursachen?

    
lyuba 05.11.2010, 14:43
quelle

5 Antworten

10

Unter UNIX und Linux, wenn Sie

sagen %Vor%

Dann erweitert die Shell alle Dateien im Verzeichnis und das Programm sieht genauso aus, als ob Sie

getippt hätten %Vor%

usw. Das bedeutet, dass der Subversion-Befehl denkt, dass Sie die Datei zum Hinzufügen explizit aufgelistet haben. In diesem Fall wird es hinzugefügt, obwohl die svn:ignore -Eigenschaft möglicherweise festgelegt wurde.

Aus der Dokumentation von svn:ignore (mein Schwerpunkt):

  

Subversion verwendet die Ignoriermuster, um zu bestimmen, welche Dateien nicht als Teil einer rekursiven Addition oder einer Importoperation in das Versionskontrollsystem übernommen werden sollen.

    
Adrian Smith 05.11.2010 14:50
quelle
8

Super alte Frage, aber ich bin gerade in dieses Problem geraten und die Lösung, die ich gefunden habe, ist hier nicht aufgeführt. Adrian Smiths Antwort ist auf dem richtigen Weg. Ich nehme an, die Docs und SVN selbst haben viele Updates in 5 Jahren gesehen. Hier ist, was ich in den SVN-Dokumenten

gefunden habe >
  

Auch wenn svn:ignore gesetzt ist, können Probleme auftreten, wenn Sie Shell-Platzhalter in einem Befehl verwenden. Shell-Platzhalter werden in eine explizite Liste von Zielen erweitert, bevor Subversion auf ihnen arbeitet. Daher ist das Ausführen von svn SUBCOMMAND * genauso wie das Ausführen von svn SUBCOMMAND file1 file2 file3 … . Im Falle des Befehls svn add hat dies einen ähnlichen Effekt wie die Übergabe der Option --no-ignore . Anstatt also einen Platzhalter zu verwenden, verwenden Sie svn add --force . , um eine Massenplanung von nicht versionierten Objekten für die Addition durchzuführen. Das explizite Ziel stellt sicher, dass das aktuelle Verzeichnis nicht übersehen wird, da es bereits der Versionskontrolle unterliegt, und die Option --force veranlasst Subversion, durch dieses Verzeichnis zu crawlen, wobei unversionierte Dateien hinzugefügt werden, während die svn:ignore -Eigenschaft und% co_de weiterhin berücksichtigt werden % Laufzeitkonfigurationsvariable. Stellen Sie sicher, dass Sie auch die Option global-ignores für den Befehl --depth files angeben, wenn Sie keine vollständig rekursive Crawlersuche für hinzuzufügende Elemente durchführen möchten.

Die Kurzversion ist svn add . Das funktioniert perfekt für mich.

    
Mike Borman 12.11.2015 06:05
quelle
1

Ich fand das diese Frage enthält eine sehr gute Lösung. Da die Antwort die Frage nicht beantwortet, glaube ich nicht, dass sie doppelt ist. Kurz gesagt nutzen Sie die Macht der Unix-Tools (arbeitet mit Cygwin unter Windows):

svn status | grep '?' | sed 's/^.* /svn add /' | bash

    
Ward 07.05.2015 07:27
quelle
0

Haben Sie versucht, die config.js zu übergeben, um zu sehen, ob sie wirklich ignoriert wird? Ich denke, wenn Sie Svn ausdrücklich sagen, eine Datei der Versionskontrolle hinzuzufügen, wird es die Ignorierung überfahren.

    
jgifford25 05.11.2010 14:48
quelle
0

Verwenden Sie diesen Befehl anstelle von svn add --force * :

%Vor%

In diesem Fall analysiert svn selbst alle Dateien im Verzeichnis und berücksichtigt die ignorierten Dateien, aber wenn Sie * verwenden, weisen Sie svn ausdrücklich an, alle Dateien hinzuzufügen.

    
Ali Mirzaei 06.04.2016 05:21
quelle

Tags und Links