Schließen Sie .svn-Ordner in git aus


68

Ich versuche, die Ordner von subversion von der Verfolgung durch git auszuschließen. Ich habe ein paar verschiedene Setups für .git / info / exclude ausprobiert, aber es scheint nicht zu funktionieren. Ich würde git-svn verwenden, aber es ist schwierig, Zugriff anzufordern, damit dies funktioniert. Deshalb möchte ich dies lieber umgehen, indem ich die Ordner ausschließe.

Ich möchte ".svn / Einträge" ausschließen

Ich habe versucht, die folgenden Zeilen zu .git / info / exlude hinzuzufügen: .svn Einträge .svn / Einträge Einträge svn

Egal was ich versuche, .svn-Einträge werden angezeigt, wenn ich den Git-Status ausführe


Was meinst du damit? Es ist schmerzhaft, den Zugriff anzufordern, damit git-svn funktioniert. git-svn gibt nur svn-Befehle aus. Wenn Sie also bereits über SVN-Zugriff verfügen, können Sie git-svn verwenden, ohne dass jemand etwas davon weiß oder etwas ändern muss
cpjolicoeur

Zugriff, um Dinge auf meinem Arbeitscomputer zu installieren. Es fehlt ein Perl-Modul, und die Admins zu bitten, diesen Mod zu machen, ist nur ein Schmerz ...
Johannes

Antworten:


50

Ich denke, Sie möchten eine Gitignore-Datei in Ihrem Verzeichnis der obersten Ebene verwenden. Dies funktioniert, wenn Sie ".svn / entry" in eine Zeile in dieser Datei einfügen. Sie können auch einfach ".svn" anstelle von ".svn / entry" eingeben.

EDIT: Siehe Kommentare. Wenn die Dateien bereits von git verfolgt werden, werden sie immer in angezeigt git status.


2
Ich habe es auch versucht, und das hat nicht funktioniert. Das Problem ist, dass jeder Ordner seine eigenen .svn / Einträge hat.
Johannes

4
Dies funktioniert bei mir auch bei einem in jedem Ordner. Werden die Einträge in angezeigt, svn statusweil Sie git bereits gebeten haben, sie zu verfolgen? Wenn Sie sie bearbeitet git addhaben, werden sie angezeigt, egal was passiert. Nur git rm --cachedsie und du wirst in Ordnung sein.
Jesse Rusak

Da ist es. Ich begann damit, alle Dateien im Kofferraum hinzuzufügen ... Guter Fang, Jesse!
Johannes

4
Nicht die eleganteste Sache der Welt, aber ich habe Folgendes verwendet, um rekursiv .svn-Ordner zu entfernen (gemäß @JesseRusak): for dir in $(find ./ -type d); do git rm --cached -r $dir/.svn; done;
ghayes

2
Die Regel von ghayes ist gefährlich und möglicherweise ein Sicherheitsproblem, wenn jemand Dateinamen mit darin eingebetteten Befehlen platziert hat. Oder es schlägt einfach fehl, weil beispielsweise ein Dateiname ein Leerzeichen enthält. Ich schlage stattdessen diese Variante vor: find ./ -type d -name .svn -print0 | xargs -0 git rm --cached -r
mc0e


25

Fügen Sie ".svn" in eine ~/.gitexcludesDatei ein. Dann erzähl git davon:

echo '.svn' > ~/.gitexcludes
git config --global core.excludesfile "/home/USER_NAME/.gitexcludes"

(Stellen Sie sicher, dass Sie USER_NAME so ändern, dass es auf Ihr Home-Verzeichnis verweist.)


Casey, ich dachte wirklich, dass das funktionieren würde ... aber leider nicht. Das ist ziemlich frustrierend.
Johannes

2
Was ist der Unterschied zwischen .gitexcludesund .gitignore?
Ehtesh Choudhury

1
@Shurane Siehe stackoverflow.com/questions/10066749/git-excludes-vs-ignores - Ausschlüsse sind nicht versioniert, Ignorierungen sind.
Ben Flynn

Hat funktioniert. Hinweis: Es sollte "~ / .gitexcludes" sein
Yauhen Yakimovich


3

Was ist zu tun Casey , außer benennen Sie die Datei .gitignoreund legen Sie sie im Stammverzeichnis Ihres Git-Repos ab.

Ich mache auch gerne eine, attrib +h .gitignoredamit sie nicht in meinen Explorer-Fenstern angezeigt wird.


3

wenn Sie das svn-Verzeichnis behalten möchten.

Sie können zuerst Folgendes ausführen:

for dir in $(find ./ -type d -name \*.svn); do git rm --cached  -r $dir; done;

und dann echo ".svn" >>.gitignore im Stammverzeichnis ausführen


2

Da jeder versionierte Ordner ein .svn-Verzeichnis hat, müssen Sie Folgendes eingeben:

* /. svn / *


Das funktioniert nicht. Es wird ignoriert src/.svnund coolStuff/.svnaber nicht src/main/.svn.
MatrixFrog

1
Für mehrere Ordner ist das " * / " der richtige Weg! als Sie brauchen zwei Zeilen in .gitignore: " /.svn/ " und " * /. svn / "
nils petersohn

Für den Ausschluss von Unterordnern verwenden Sie: ** /. svn /
Gweltaz Niquel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.