Source Code Control mit Git und Twincat3.1 VS2015: No Gitattributes file found

Daxgehtsteil

Level-1
Beiträge
74
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich verzweifle gerade am Source Code Control. Habe als Plugin GIT gewählt und versuche TC Projekt Compare als Compare Tool einzurichten. Beim Export der Konfiguration wähle ich das .gitconfig File aus. Anschließend erscheint die Meldung: "No Gitattributes file found!".

Wenn ich bei einem Change im Team explorer auf den geänderten Baustein klicken, kommt die Meldung: "Failed to start the configured compare tool".

Wer kann mir hier weiterhelfen und wo finde ich die Gitattributes?

Danke, Dax.
 
.gitattributes wird erstellt sobald du dein Projekt mittels "Add Solution to Source Control" hinzugefügt hast und befindet sich dann auch im Projektordner.
 
Das war meine Vermutung. Leider taucht der Menüpunkt bei mir im Kontextmenü nicht auf. Source Code Control ist grundsätzlich aber unter Tools -> Option -> source code control eingestellt (Git). Im TFS kann ich auch vergleichen. nur leider im Projekt nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann erstelle dir die .gitconfig einfach selber. Meine sieht z.B. so aus.
Code:
#TCMODIFIED
[diff]
	tool = TcProjectCompare
[difftool "TcProjectCompare"]
  path = C:/TwinCAT/3.1/Components/TcProjectCompare/TcProjectCompare.exe
	cmd = \"C:/TwinCAT/3.1/Components/TcProjectCompare/TcProjectCompare.exe\" //filel \"$LOCAL\" //filer \"$REMOTE\" //dl  \"$LOCAL\" //dr \"$REMOTE\"  //sc
	keepbackup = false
	trustexistcode = true
[merge]
	tool = TcProjectCompare
[mergetool "TcProjectCompare"]
  path = C:/TwinCAT/3.1/Components/TcProjectCompare/TcProjectCompare.exe
	cmd = \"C:/TwinCAT/3.1/Components/TcProjectCompare/TcProjectCompare.exe\" //filel \"$LOCAL\" //filer \"$REMOTE\" //filem \"$MERGED\" //dl \"$LOCAL\" //dr \"$REMOTE\" //sc
	keepbackup = false
	trustexistcode = true
#TCMODIFIED
[difftool]
	prompt = true
[difftool "vsdiffmerge"]
	cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
[difftool "vsdiffmerge"]
	keepbackup = false
[mergetool]
	prompt = true
[mergetool "vsdiffmerge"]
	cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" //m
	trustexitcode = true
[mergetool "vsdiffmerge"]
	keepbackup = false
 
Das TCMODIFIED sieht bei mir genauso aus. Muss man denn die Datei in einen bestimmten Ordner legen? Sind .gitconfig und .gitattributes das Gleiche? Denn der Inhalt gehört doch zu gitconfig.
 
Dabei handelt sich um unterschiedliche Dateien, die Git Website stellt hierfür einiges an Informationen zusammen.
Interessant wäre mal bei dir
Code:
git config --list --show-origin
. Die .gitconfig sollte sich unter "C:\Users\Loginname" befinden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kannst du was damit anfangen?


UVgQAAAAACHV74V 89tPw3mXnRAAAAABJRU5ErkJggg==
 
Mega gut, nun klappt es endlich. Ich kenn mich mit git null aus und wusste nicht wie man diese .gitconfig erzeugt. Ich hatte die falsche config ausgewählt, die ich irgendwo in einem git verzeichnis gefunden haben. Habe nun die Konfiguration durchgeführt und es wurde gleich die .gitconfig erzeugt. Ich danke dir vielmals, thumbs up!
 
Eine Frage ist nun aber doch noch aufgepoppt: Sobald ich in die gleiche Solution wo das twincat projekt liegt, ein Twincat HMI Projekt einfüge, klappt das source control nicht mehr.

Fehlermeldung lautet: An error occurred. Detailed message: Could not open 'C:/Users/JDA1FE/Source/Repos/RFID C-Coating/.engineering_servers/TcHmiRFID/TcHmiSrv.pid': Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.


Einziger workaround der mir einfällt ist, nicht die ganze solution ins repository zu packen sondern nur das twincat projekt (also ohne HMI-Projekt). so kann ich weiterhin meine pous vergleichen und pushen. Oder kann ich innerhalb der Solution verschiedene Elemente für den Source Control ausklammern? Hast du ne andere Lösung?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das die HMI Server .pid blockiert, ist eine bekannte Tatsache. Entweder du beendest den HMI Server oder aber du infomierst dich über die Möglichkeiten welche dir .gitignore bietet.

https://de.atlassian.com/git/tutorials/saving-changes/gitignore

Generell ist wichtig das du verstehst wie die .gitignore anzupassen ist. Hierfür stellt Beckhoff Informationen zur Verfügung, welche Projektdateien es alles gibt. Bei mir sind *.tmc und *.tpy immer ausgeschlossen.

https://infosys.beckhoff.com/index.php?content=../content/1031/tc3_sourcecontrol/18014399277376779.html&id=

Für den HMI Server habe ich diese Informationen noch nicht gefunden, aber der HMI Server ist produktiv derzeit eh noch kaum zu gebrauchen.

In deinem Fall hilft .gitignore um folgenden Eintrag zu erweitern.

Code:
/.engineering_servers/TcHmiRFID/TcHmiSrv.pid

Damit wird diese Datei vom Source Control ausgeschlossen. Solltest du Historize oder Logger aktivert haben, macht es Sinn diese Dateien auch auszuschließen.
 
Zuletzt bearbeitet:
Ist es das .gitignore, welches sich im Verzeichnis vom HMI Projekt befindet? Sonst finde ich kein anderes .gitignore. Im besagten file gibt es einen eintrag:
.engineering_servers
liveview_*

schreibe ich deine syntax dann einfach da drunter, speicher die Datei ab und schon ist es wirksam? So hats jedenfalls noch nicht geklappt.
 
Du musst den Pfad natürlich anpassen. Die .gitignore im HMI Projektpfad verwende ich nur für Dateien welche sich innerhalb des Pfades auch befinden. Die .pid wird bei mir über .gitignore ausgeschlossen welche sich im Solutionpfad befindet. Sieh dir mal in einer Beckhoff Quelle die .gitignore an (https://github.com/Beckhoff/ADS) und passe diese für deine Solution an.

Wichtig, damit die Änderungen in .gitignore auch wirken bzw. bestimmte Dateien aus dem Index verschwinden braucht es noch

Code:
3
git rm -r --cached .;
git add .;
git commit -m "Nun wirkt .gitignore";

oder wenn nur für eine bestimmte Datei gewünscht

Code:
git rm --cached <file>;

Das ganze Thema ist nicht ganz trivial und bedarf auch eine wenig Leidensbereitschaft :)
 
Zurück
Oben