2013-04-11 7 views
6

Ich habe versucht, git p4 unterwerfen auf einem Repo, dass ich als Interimsbrücke zwischen Git und notforce ausgeführt habe. Mehrere Personen verwenden das Repo als Remote und es wird in regelmäßigen Abständen zurückgeschickt.git p4 submit schlägt fehl

Es funktioniert meistens gut, außer für einige duplizierte Zwangs Commits, deren bizarre Verhalten ich nicht reproduzieren kann. Dann eines Tages aus heiterem Himmel bekomme ich diesen Fehler. Ich kann keine git commits mehr zwingen.

[email protected]:~/Source/code$ git p4 submit -M --export-labels 
Perforce checkout for depot path //depot/perforce/workspace/ located at /home/user/Source/git-p4-area/perforce/workspace/ 
Synchronizing p4 checkout... 
... - file(s) up-to-date. 
Applying ffa390f comments in config xml files 
//depot/perforce/workspace/sub/folder/structure/first.xml#3 - opened for edit 
//depot/perforce/workspace/sub/folder/structure/second.xml#3 - opened for edit 
//depot/perforce/workspace/sub/folder/structure/third.xml#3 - opened for edit 
//depot/perforce/workspace/sub/folder/structure/forth.xml#3 - opened for edit 
//depot/perforce/workspace/sub/folder/structure/fifth.xml#1 - opened for edit 
error: patch failed: sub/folder/structure/first.xml:1 
error: sub/folder/structure/first.xml: patch does not apply 
error: patch failed: sub/folder/structure/second.xml:1 
error: sub/folder/structure/second.xml: patch does not apply 
error: patch failed: sub/folder/structure/third.xml:1 
error: sub/folder/structure/third.xml: patch does not apply 
error: patch failed: sub/folder/structure/forth.xml:1 
error: sub/folder/structure/forth.xml: patch does not apply 
error: patch failed: sub/folder/structure/fifth.xml:1 
error: sub/folder/structure/fifth.xml: patch does not apply 
Unfortunately applying the change failed! 
//depot/perforce/workspace/sub/folder/structure/first.xml#1 - was edit, reverted 
//depot/perforce/workspace/sub/folder/structure/second.xml#3 - was edit, reverted 
//depot/perforce/workspace/sub/folder/structure/third.xml#3 - was edit, reverted 
//depot/perforce/workspace/sub/folder/structure/forth.xml#3 - was edit, reverted 
//depot/perforce/workspace/sub/folder/structure/fifth.xml#3 - was edit, reverted 
No commits applied. 

Dieser Fehler sieht viel wie diesen Fehler:

git-p4 submit fails with patch does not apply

außer ich bin nicht jedes Keyword Substitution tun, also habe ich keine Ahnung, was es sein könnte. Hinzufügen --verbose scheint nicht zu helfen, viel zu erklären (ich habe diese Befehlsausgabe nicht zur Hand)

Die einzige Änderung, die ich mir vorstellen könnte, ist, dass ich eine .gitattributes Datei mit dem folgenden Inhalt zu der Zeit, die ich hinzugefügt das Commit gemacht. bevor diese Commits begehen jedoch gemacht, während diese Datei war an Ort und Stelle funktionierte, so könnte es nicht sein, dass (ich habe da machten die .gitattributes ausführlichere Datei)

* text eol=lf 

Ich habe versucht, ein Rollback der gitattributes Commits in diesem Remote-Repo direkt vor diesem beleidigenden Commit, und dann speichere ich sie aus meinem Repo zu diesem Remote-Repo und dann erneut einreichen. Gleiches Verhalten. Ich habe versucht, zurück zu rollen und verschiedene Änderungen an der gleichen Datei vorzunehmen, erneut zu senden und erneut zu senden. Gleiches Verhalten. Und es scheint nur mit diesen Dateien zu passieren. Seit dem Rollback habe ich versucht, Änderungen an anderen Dateien vorzunehmen und sie funktionieren. Ich habe versucht, dos2unix auszuführen, um Unix-Zeilenendungen auf anstößigen Dateien zu erzwingen, und das hat es auch nicht behoben.

Welcher Befehl kann mir eine bessere Erklärung dafür geben, was hier vor sich geht? Gibt es eine Git-Log-Datei, die ich hinterlassen könnte? Jede Hilfe wäre willkommen.

bearbeiten: Ich habe mein Problem mit und ohne die Datei .gitattributes erneut getestet. das machte keinen Unterschied. Derzeit ist meine globale core.autocrlf-Einstellung eingegeben. Aber mit der fehlenden .gitattributes Datei, die keinen Unterschied zu machen schien. Hier ist, wie es aussah, als ich es erneut mit nur einer der problematischen Dateien mit --verbose eingeschaltet wurde.

[email protected]:/code$ git p4 submit -M --export-labels --verbose 
Reading pipe: git name-rev HEAD 
Reading pipe: ['git', 'config', 'git-p4.allowSubmit'] 
Reading pipe: git rev-parse --symbolic --remotes 
Reading pipe: git rev-parse p4/master 
Reading pipe: git cat-file commit 0457c7589ea679dcc0c9114b34f8f30bc2ee08cf 
Reading pipe: git cat-file commit HEAD~0 
Reading pipe: git cat-file commit HEAD~1 
Reading pipe: ['git', 'config', 'git-p4.conflict'] 
Origin branch is remotes/p4/master 
Reading pipe: ['git', 'config', '--bool', 'git-p4.useclientspec'] 
Opening pipe: ['p4', '-G', 'where', '//depot/perforce/workspace/...'] 
Perforce checkout for depot path //depot/perforce/workspace/ located at /home/user/Source/git-p4-area/perforce/workspace/ 
Synchronizing p4 checkout... 
... - file(s) up-to-date. 
Opening pipe: p4 -G opened ... 
Reading pipe: ['git', 'rev-list', '--no-merges', 'remotes/p4/master..master'] 
Reading pipe: ['git', 'config', '--bool', 'git-p4.skipUserNameCheck'] 
Reading pipe: ['git', 'config', 'git-p4.detectCopies'] 
Reading pipe: ['git', 'config', '--bool', 'git-p4.detectCopiesHarder'] 
Reading pipe: ['git', 'show', '-s', '--format=format:%h %s', 'ef3b95f5fec193fe2612b28e2e3b5e7f8ba9419e'] 
Applying ef3b95f making test change 
Opening pipe: p4 -G users 
Reading pipe: ['git', 'log', '--max-count=1', '--format=%ae', 'ef3b95f5fec193fe2612b28e2e3b5e7f8ba9419e'] 
Reading pipe: git diff-tree -r -M "ef3b95f5fec193fe2612b28e2e3b5e7f8ba9419e^" "ef3b95f5fec193fe2612b28e2e3b5e7f8ba9419e" 
//depot/perforce/workspace/sub/folder/structure/first.xml#3 - opened for edit 
<stdin>:17: trailing whitespace. 
<!-- comment line 1 --> 
<stdin>:18: trailing whitespace. 
<!-- comment line 2 --> 
<stdin>:19: trailing whitespace. 
<!-- comment line 3 --> 
error: patch failed: sub/folder/structure/first.xml:1 
error: sub/folder/structure/first.xml: patch does not apply 
Unfortunately applying the change failed! 
Reading pipe: ['git', 'config', '--bool', 'git-p4.attemptRCSCleanup'] 
//depot/perforce/workspace/sub/folder/structure/first.xml#3 - was edit, reverted 
No commits applied. 
Reading pipe: ['git', 'config', '--bool', 'git-p4.exportLabels'] 
Opening pipe: ['p4', '-G', 'labels', '//depot/ipstor.maple/automation/...'] 
Reading pipe: ['git', 'tag'] 
Reading pipe: ['git', 'config', 'git-p4.labelExportRegexp'] 
+0

Ich denke, 'git diff-tree -r-M" ef3b95f5fec193fe2612b28e2e3b5e7f8ba9419e^"" ef3b95f5fec193fe2612b28e2e3b5e7f8ba9419e "und sehen Sie, ob Sie die Patches manuell anwenden können? –

Antwort

2

Ich fand es heraus. Das Problem wird durch die Zeilenenden verursacht. Ich habe das Problem mit einer anderen Datei erneut getestet, und in diesem Fall wird der Fehler dadurch verursacht, dass die Zeilenenden der im Workforce-Arbeitsbereich ausgecheckten Datei win-style crlf sind und die Zeilenenden der Datei im git-repo Unix-Stil sind lf.

In diesem Fall habe ich die Datei in notfalls ausgecheckt, dos2unix dagegen ausgeführt, und das abgeschickt, dann lief git p4 submit und es funktionierte.

Das ist nicht die echte Lösung. Das ist nur eine Problemumgehung. Ich schickte eine E-Mail an gits Mailingliste und bat um eine Lösung. http://marc.info/?l=git&m=136630231402536&w=2

2

Für mich Einreichung bearbeitet, nachdem ich git config apply.ignorewhitespace change gesetzt habe.

Ich denke, der Fehler tritt auf, weil die git core.whitespace Einstellung standardmäßig restriktiv:

The ones that are turned on by default are blank-at-eol, which looks for spaces at the end of a line; blank-at-eof, which notices blank lines at the end of a file; and space-before-tab, which looks for spaces before tabs at the beginning of a line.

(siehe http://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)

Einstellung apply.ignorewhitespace change ermöglicht git apply diese Fehler zu beheben. Ändern Sie die core.whitespace Einstellung, um weniger restriktiv zu sein sollte auch das Problem beheben, aber ich habe das nicht versucht.

+0

danke, Ihre Lösung hat für mich funktioniert! – beshanoe