You are here: Foswiki>FESA Web>Fesa3CoreDevInfo>FESA3GITExperiments (16 Sep 2020, TobiasHabermann)Edit Attach

FESA3 vs. git

Roadmap SVN to GIT Migration: 2020

Calendar Week
What
Contact
Status
until KW43
SVN repository synchronization
FESA software developers
TODO
KW 44
SVN repository read-only
ACO / IN
TODO
KW 44
Migration SVN repository -> GIT repository
T. Habermann
TODO
KW 45
FESA Eclipse Plug-In for Eclipse 2020-06
ACO / FEC
TODO

The version control system 'git' is supposed to replace the currently used SVN. The following issues may be considered when moving the FESA projects sources to another version control repository.
  • keep the history when moving the sources
  • find a suitable workflow for FESA FWK developers
  • which git host? git.gsi.de or an ACC git solution?
  • how to setup git for classes, deploy-units, drivers, tools?
  • when to adapt the workflow for classes / deploy-units in the plug-in?
  • how to stay in sync with CERN's sources?
  • how to perform FESA releases?
  • usage of git issue-tracker and wiki as well for documentation?

Possible workflow for FESA Class Developers

Switching from SVN to git

Eclipse 2020-06

  • FESA Repository Preferences: configure user name and password, provide email adress
  • Project Explorer: Select Project(s); Team > Disconnect (Check: Also delete the SVN meta-information from the file system)
  • Project Explorer: Select Project(s); New FESA Eclipse Plug-In: FESA > Configure FESA Project for Repository
    • initialisation of local git repository
    • configuration of git ignore settings
    • all relevant files will be added to the index
    • configuration of user name, email adress and password according to the credentials in the FESA preferences
    • configuration of remote repository URL
    • commit to local git repository
    • push to remote repository
  • Connect a project in the workspace to enable repository synchronization in Eclipse, solution 1:
    • Switch to 'Git' perspective
    • Button: Add an existing local Git repository to this view
    • Browse workspace and select FESA projects
  • Connect a project in the workspace to enable repository synchronization in Eclipse, solution 2:
    • Select project > Team > Show in Repositories View
  • Troubleshooting:
    • use context menu FESA > Configure FESA Project for Repository to apply required settings
    • use context menu Team > Synchronize Workspace to commit and push changes to local / remote repository

Command Line

Details: FESAGitMigrationSkript

Contact person for the FESA software source code migration 10/2020: T. Habermann

Structure

Local git Repository

<workspace>/<project>/.git

Remote git Repository

https://git.acc.gsi.de/fesa-classes/<project>.git

https://git.acc.gsi.de/fesa-deploy-units/<project>.git

https://git.acc.gsi.de/driver/<project>.git

Working with git

  • commit locally, either working in feature branch or master branch directly; branch merging required
  • push to remote once feature is considered ready
  • during release: project has to be up-to-date and synchronized with the master branch, release branch should be created automatically

Git Cheat Sheet for FESA Projects

Topic Command / Usage Examples Description
Configuration
 
 
Configure user name
git config --global user.name "The Name"
Stores the user name in the git configuration.
Configure email adress
git config --global user.email t.name@gsi.de
Stores the email adress in the git configuration.
View configuration
git config --list
Displays the git configuration.
 
 
 
Setup of local Repository
 
 
 

cd workspace/<FESAproject>

git init

Creates hidden .git directory at project level (<FESAproject>/.git)
 
 
 
Status Check
git status
Displays the repository status (untracked, added, deleted files and folders)
Add files
git add <file> <file1> <file2>
Adds files to the staging area
Commit locally
git commit -m "commit message"
Commits staged files to the local repository
 
 
 
Branching and Merging
 
 
Create a branch and switch to the new branch
git checkout -b <issue-0815>
Creates the new branch issue-0815 and switches to the branch. Changes in the branch should be committed to the branch.
Merge branch into master (after add/commit)

git checkout master

git merge <issue-0815>

Note: Requires the changes in the branch committed to the branch.

Switches back to the master branch.

Merges the changes in branch issue-0815 into the master branch.

Switch to master branch
git checkout master
Switches back to the master branch.
 
 
 
Tags
 
 
Create tag
git tag -a 1.2.3 -m "version 1.2.3"
Creates a tag named 1.2.3
View tags

git tag

git show 1.2.3

Lists existing tags

Shows details of tag 1.2.3

Pushing tag to remote repository
git push origin 1.2.3
By default tags are not pushed explicitely to the remote repository. This has to be done explicitely.
Deleting tags
git tag -d 1.2.3
Deletes the tag 1.2.3
 
 
 
 
 
 
Working with remote Repositories
 
 
Create remote repository at git.acc.gsi.de
Uses gittea REST API to create a project in the remote repository
Configure remote repository
Adds the URL for the remote repository.
Push to remote repository (after add/commit)
git push origin master
Pushes the changes in the local repository to the remote repository. Requests the password.
View remote repository configuration
git remote -v
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Possible workflow for FESA FWK Developers

TODO

See issues above.

First implementation In Eclipse for FESA3

2020: https://git.acc.gsi.de/FESA3-Eclipse-Plug-In/eclipse-2020-06.git

2019: https://git.acc.gsi.de/FESA3-Eclipse-Plug-In/eclipse-2019-03.git

2018: https://git.gsi.de/s.matthies/fesa-eclipse-plugin-2018-12.git

Notes

  • branches for features
  • usage of issue IDs in commit messages
  • partial commit of changes in single files possible
  • changes in staged files for commits possible, not in local copy
  • tags for releases instead of dedicated branch, different (branching) concept compared to SVN
  • or immutable release branches?
  • git merging / rebasing ?
  • commit often locally, push best result to remote repository
  • empty folder cannot be added, solution: create .gitkeep file

-- SolveighMatthies - 08 Oct 2018
Topic revision: r21 - 16 Sep 2020, TobiasHabermann
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback