Projekt "Speichern unter"

Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich 2 Maschinen habe und möchte den aktuellen Auslieferungszustand der Software speichern (jede Maschine hat ggf. leichte Unterschiede in Soft und Hardware) Dann habe ich bisher Speichern unter "Maschine A", speichern unter "Maschine B" gemacht und fertig Das kann man dann auch dem Kunden so mitgeben (wenn so vereinbart).
Und das ganze dann in den Projektordner zur den sonstigen Dateien der jeweiligen Maschine.

Mit dem Git scheint mir gefühlt schwieriger.
Wenn ich das so lese muss ich erst ne eigene Git Programmiersprache lernen um da dann bestimmte Versionen zu restaurieren oder abzuspeichern?

Aber scheint bei Beckhoff leider nicht anders zu gehen (außer mit Archiven vielleicht)
Wie kriege ich raus was ich seinerzeit bei der Installation von TwinCAT angegeben habe? Muss ich TwinCAT neu installieren wenn ich seinerzeit Git abgewählt habe? Ne oder?

Wie kriege ich nun mit Git meinen derzeitigen Stand gesichert?
Was muss ich wo wie installieren? und wo gebe ich welche Komandos ein zum sichern und wiederherstellen?

(Ach ja, bei uns gibt es keine weiteren Kollegen die am gleich Projekt mit Programmieren)
 
Mit dem Git scheint mir gefühlt schwieriger.
Wenn ich das so lese muss ich erst ne eigene Git Programmiersprache lernen um da dann bestimmte Versionen zu restaurieren oder abzuspeichern?
Ein einmaliger Aufwand zum Einrichten ist da, ja. Der ist aber nicht so dramatisch. Wie oben schon geschrieben, schau dir vielleicht auch mal ein Video zur Erklärung bei Youtube an.

Aber scheint bei Beckhoff leider nicht anders zu gehen (außer mit Archiven vielleicht)
Siemens kann das auch nicht anders - außer du nutzt das VCI. Im VCI könntest du dann wieder Git nutzen. Im Gegensatz zu Beckhoff kann Siemens aber nicht ein gesamtes Projekt per VCI versionieren.

Wie kriege ich nun mit Git meinen derzeitigen Stand gesichert?
Git Stage und Git Commit. Abschließend ggf. nochmal Git Push. Das sind drei schnelle Klicks.

Was muss ich wo wie installieren? und wo gebe ich welche Komandos ein zum sichern und wiederherstellen?
Die Grundversion ist in der Regel bereits mit TwinCAT installiert. Ich empfehle zusätzlich Git SCM als Client. Das ist aber persönliche Präferenz. Außerdem solltest du einen Git Server haben. Am einfachsten ist das wahrscheinlich mit GitHub oder GitLab. Informiere dich, ob die kostenfreien Accounts für dich ausreichen (Speicherplatz, Privacy, ...).

(Ach ja, bei uns gibt es keine weiteren Kollegen die am gleich Projekt mit Programmieren)
Auch für Einzelentwickler macht Git total Sinn. Alleine schon aufgrund der "Historie" welche sich durch die einzelnen Commits in deinem Programm ergeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich 2 Maschinen habe und möchte den aktuellen Auslieferungszustand der Software speichern (jede Maschine hat ggf. leichte Unterschiede in Soft und Hardware) Dann habe ich bisher Speichern unter "Maschine A", speichern unter "Maschine B" gemacht und fertig Das kann man dann auch dem Kunden so mitgeben (wenn so vereinbart).
Und das ganze dann in den Projektordner zur den sonstigen Dateien der jeweiligen Maschine.

Gerade da kann Git seine Stärken ausspielen. Du legst für jede Maschine einen Branch (Zweig) an... Zwischen den einzelnen Branchen kannst Du schnell umswitchen ohne Dein Arbeitsverzeichnis zu wechseln.
 
Und wenn Du einen Fehler in der Maschine A entdeckt hast, kannst Du den auch gleich mit Cherrypicking (Kirschen picken) auf die Maschine B übertragen und als Upgrade ausliefern. :rolleyes:

So jetzt muss ich erst mal aufhören:LOL:
 
Außerdem solltest du einen Git Server haben. Am einfachsten ist das wahrscheinlich mit GitHub oder GitLab. Informiere dich, ob die kostenfreien Accounts für dich ausreichen (Speicherplatz, Privacy, ...).

Da muss ich kurz Einspruch erheben. Als Git-Server (zentrales Repository) kann jedes Verzeichnis, auch auf dem eigenen Computer dienen. Ich habe ein lokales Raid-NAS-System als Server laufen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da muss ich kurz Einspruch erheben. Als Git-Server (zentrales Repository) kann jedes Verzeichnis, auch auf dem eigenen Computer dienen. Ich habe ein lokales Raid-NAS-System als Server laufen.
Richtig, bedeutet aber imho einen größeren Einrichtungs- und Verwaltungsaufwand.
 
Richtig, bedeutet aber imho einen größeren Einrichtungs- und Verwaltungsaufwand.
Nö. Rechtsklick (in Explorer-Standard-Ordnerstruktur) - Create New Repository - zentrales Repository - Das war's. Dann trage ich den UNC-Pfad als Remote-Repository ein und fertig. Für ein Remote-Repo braucht es auch nur ein Standard-Verzeichnis - genau wie das Arbeitsverzeichnis. Mehr nicht. Alles andere ist overload.
 
Wenn du Git eingerichtet hast und dein Projekt mit Git versioniert wird, ändert sich die untere Leiste in TwinCAT.
1725264172643.png

In diesem Beispiel gibt es jetzt Änderungen an 80 Dateien, welche noch nicht gespeichert wurden - bspw. habe ich hier gerade ein HMI Projekt erzeugt, was direkt viele Dateien erstellt. Nach Klick auf die 80 siehst du dann alle Dateien, die sich geändert haben.

1725264290393.png

In einem Commit kannst du dann eine kurze Beschreibung der Änderung in dem gelben Kasten eingeben. Wenn diese Nachricht für alle 80 Änderungen gleichermaßen gilt, kannst du, nachdem du die kurze Beschreibung eingegeben hast, auf "Commit für alle klicken". Damit wird dein Projektstand gespeichert. Willst du für einzelne/mehrere Dateien eigene Änderungsbeschreibungen machen, kannst du diese separat auswählen (das ist dieses "Stagen") und als gestaffelter Commit dann speichern.
Danach bietet dir TwinCAT noch eine Link "Sync" an, womit du deine Änderungen an das Remote Repository, bspw. einem GitLab, schicken kannst.
 
In dem Zusammenhang noch ein Nachtrag. Es gibt diverse Dateien, die beim Übersetzen erzeugt werden und nicht mit ins zentrale Repository müssen.
Dateien die von der Sicherung ausgeschlossen werden sollen müssen in einer Datei aufgeführt werden, diese heißt ".gitignore". Details dazu findest Du bei Beckhoff.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke zur Unterstützung kann jeder von uns eine .gitignore, die für TwinCAT optimiert ist, zur Verfügung stellen. Hier ist eine von mir.

Code:
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

## Takover from .tfignore
*.cs.bak
*.csproj.bak
*.xml.bak
*.xaml.bak

##Beckhoff specific files
##*.sln
*.tpy
*.tmc
*.tclrs
*.compileinfo
*.project.~u
*.tsproj.bak
_Boot/
_CompileInfo/
 
@Wondermike2000 schau die die tolle Einführung von Jakob Sagatowski auf Youtube an
Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.
.
Sein ganzer TwinCAT-Kurs ist einfach super
 
Ich war mal zur IBN einer Automation beim Kunden, wo wir eine Anlage eines weiteren Herstellers mit bei uns einbinden sollten.
Den SPSler habe ich gebeten, sein Prozessabbild um ein paar Signale zu erweitern. Der musste dann seinen Kollegen aus dem Urlaub klingeln, da dieser zuvor Änderungen an deren Maschine eingespielt hatte und diese "Version" lokal auf seinem Rechner lag. Selbst als er die benötigte Datei nach langer Wartezeit erhalten hatte, wusste er absolut nicht, was der vorherige Kollege an der Anlage geändert hatte.

Da habe ich mich ernsthaft gefragt, wie man heutzutage noch ohne Versionierungsverwaltung zurecht kommt.
Allein zur Fehlersuche. Du hast einen Bug gefunden und kannst dir die gesamte Historie des einzelnen Files anschauen. Du sieht genau wann, wer (bei dir anscheinend nur du selbst) und warum diese Zeile geändert wurde.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Wondermike2000 schau die die tolle Einführung von Jakob Sagatowski auf Youtube an
Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.
.
Sein ganzer TwinCAT-Kurs ist einfach super
Ja nicht schlecht aber leider auf englisch. Muss also Untertitel lesen.
Mit jeder seiner Antworten entstehen 2 neue Fragen. Das wird also ein längeres Studium des Ganzen erfordern.
(ok, wir machen das mit den "Fähnchen" :-)))
 
auf OpenHPi kannst du dich kostenlos anmelden und einen Grundkurs in GIT im Selbststudium machen. Ich hatte vor Jahren das auch gemacht


der Kurs ist auf deutsch. Da es nur noch im Selbststudium geht, kann man aber nicht mehr an den Abschlussaufgaben teilnehmen und erhält kein Zeugnis
 
Fangen wir mal ganz langsam an:
Wie kriege ich erst einmal heraus ob ich in TwinCAT das nötige (?) bei der Installation seinerzeit ausgewählt habe?
Zur Not reicht es wahrscheinlich auch aus den Installer noch einmal laufen zu lassen und Git auszuwählen.

In der Twincat Umgebung hast du dann einen weiteren Reiter:
Screenshot 2024-09-09 115727.png

Und unten rechts neue Symbole:
Screenshot 2024-09-09 115735.png

Es gibt viele Solutions welche mit Git arbeiten, wir steigen aktuell von Team Foundations auf Gitea um.

Siemens kann das auch nicht anders - außer du nutzt das VCI. Im VCI könntest du dann wieder Git nutzen. Im Gegensatz zu Beckhoff kann Siemens aber nicht ein gesamtes Projekt per VCI versionieren.
Leider bleiben Hardware und Hmi vom Vci noch unangetastet.. immerhin ist aber der Rest als xml möglich.


Ich nutze als "Frontend" TortoiseGit, da kann jeder aber das präferieren was er möchte. Am liebsten ist mir natürlich ein eingebautes Frontend in die Entwicklungsumgebung in welcher ich gerade arbeite.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider bleiben Hardware und Hmi vom Vci noch unangetastet.. immerhin ist aber der Rest als xml möglich.
Wodurch man ein totales Durcheinander zwischen zapxy-Dateien und dem Git Repo bekommt. Wie sieht es mit den weiteren Teilpaketen von TIA aus, wie bspw. Safety, Startdrive, OPC UA, werden die über das VCI versioniert?
 
Ich habe jetzt versucht mit den in TWINCAT intergrieten Git Funktionen klar zu kommen.
Das speichern und pushen zum Gitserver klappt. Aber wie bekomme ich einen alten Stand wieder geladen?
Ich kann mir in TwinCAD Team Explorer den "Verlauf anzeigen" lassen. Soweit so gut.

ABER: Wenn ich auf einen alten Stand mit der rechten Maustaste klicke gibt es 3 Möglichkeiten:
1. Wiederherstellen:
Es kommt ein Fenster mit der Frage "Soll das Commit xyz wirklich wieder zurückgesetzt werden soll"
-> Ja
Dann rödelt er ... zeigt keine Konflikte vorhanden
aber der alte Stand ist nicht da, das Projekt ist danach immernoch beim aktuellen Stand !????

2. "Zurücksetzen Änderungen beibehalten"
es kommt eine Meldung links "Der Zurücksetzvorgang wurde erfolgreich abgeschlossen" und eine liste der Änderungen darunter.
ABER: gehe ich in den Projektmappen Explorer ist immernoch der aktuelle Stand da ! nix zurückgesetzt.
Aber im Lokalen verlauf Verlauf fehlen jetzt die Versionen. diese werden nur noch unter "Eingehend" (???) angezeigt

3. "Zurücksetzen Änderungen löschen"
es kommt eine Meldung "Möchten Sie den Branch zurücksetzen und lokale Änderungen löschen?"
Es kommt wieder die Meldung links "Der Zurücksetzvorgang wurde erfolgreich abgeschlossen" und eine Liste der Änderungen darunter.
ABER: gehe ich in den Projektmappen Explorer ist immernoch der aktuelle Stand da ! nix zurückgesetzt.
Im Lokalen Verlauf Verlauf fehlen jetzt die Versionen. Diese werden nur noch unter "Eingehend" (???) angezeigt

Wie komme ich zum alten Stand zurück (mit der Option danach wieder zum aktuellen Stand zurück zu kehren????

(wie einfach wäre das mit speichern unter v1 v2 gewesen !)
 
Zuletzt bearbeitet:
Zurück
Oben