Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "OSEE/Workspace Setup"

(Working with Git)
(Setup)
Line 48: Line 48:
 
#cd into org.eclipse.osee folder (the local OSEE repository)
 
#cd into org.eclipse.osee folder (the local OSEE repository)
 
#Add credential information:
 
#Add credential information:
*<tt>git config user.email my_committer_email@address.com</tt>
+
::<tt>git config user.email my_committer_email@address.com</tt>
*<tt>git config user.name "Committer Name"</tt>
+
::<tt>git config user.name "Committer Name"</tt>
 
#Create a tracking development branch: <tt>git checkout -b 0.9.6_dev origin/0.9.6_dev</tt>
 
#Create a tracking development branch: <tt>git checkout -b 0.9.6_dev origin/0.9.6_dev</tt>
 
'''Note: Development should only be performed on a development branch (never commit to master, or *_int branches)'''
 
'''Note: Development should only be performed on a development branch (never commit to master, or *_int branches)'''

Revision as of 21:15, 8 September 2010

This guide describes how to set up an Eclipse workspace to develop OSEE.

Working with Git

This guide explains how to set up a local OSEE source repository using Git. When you complete it, you will have an Eclipse workspace populated with the OSEE projects from your Git working directory, with full tool support from both the EGit plugin and the original command-line git.

Installation

Install Git on Windows

  1. Download the full installer for the latest version of msysGit.
  2. Run the installer, using the default settings.
  3. Open Git Bash and run the following commands:
    1. git config --global http.proxy "proxy_url:proxy_port" (if you have a proxy)
    2. git config --global http.sslcainfo \bin/curl-ca-bundle.crt
    3. git config --global http.sslverify "false"
    4. git config --global http.postbuffer "524288000"
    5. git config --global core.autocrlf "false"

Installing EGit

Install the latest stable versions of EGit and JGit from this update site.

Setting up a workspace

  1. Create a new Eclipse workspace.
  2. File > Import... > Existing Projects into Workspace
  3. As the root directory, select the plugins folder in the OSEE repository.
  4. Select all projects.
  5. Do not copy the projects into the workspace.
  6. Finish the import.

Development Workflow

The OSEE Git repository contains the following main branches:

  • master: origin/master is the main branch where HEAD always reflects a production ready state.
  • build_dev: origin/build_dev is the main branch where HEAD always reflects a state with the latest delivered development changes for integration.
  • build_int: origina/build_int is the main branch where HEAD always reflects a state with the latest changes from development that have been tested/built and ready for customer assurance testing. The integration branch reflects the last development changes that have been incorporated into a release candidate.

Developers wanting to incorporate a change for a specific build should make the change in that build's development branch (ex. 0.9.6_dev).
***Developers should not make changes on master or _int branches.***

Setup

  1. Create a directory for the git repository (example: c:\gitroot)
  2. cd into the local git directory
  3. Create a clone of the OSEE repository: git clone https://<commiterId>@git.eclipse.org/gitroot/osee/org.eclipse.osee.git
  4. cd into org.eclipse.osee folder (the local OSEE repository)
  5. Add credential information:
git config user.email my_committer_email@address.com
git config user.name "Committer Name"
  1. Create a tracking development branch: git checkout -b 0.9.6_dev origin/0.9.6_dev

Note: Development should only be performed on a development branch (never commit to master, or *_int branches)

Local Development

  1. Switch to the target build development branch: git checkout 0.9.6_dev
  2. Update local development branch with remote changes before any changes are made: git pull
  3. Inspect the changes brought in be the pull cmd: git log

When working on development, you have the option of making changes directly on the development branch or creating local feature/bug branches to encapsulate work. The second method allows for an easier way of group related changes together.

  1. To create a local branch: git checkout -b <tt>[Bug|Feature|Refactor]_[ID]_description 0.9.6_dev</tt>
  2. Normal Development:
    • Check state (index and working tree): git status
    • Add a new untracked file: git add <file_path>
    • Add all untracked and modified files: git add -A
    • Commit a change: git commit -am "Comment"See comment conventions below
    • Rebase against the remote branch frequently to prevent branch from diverging:
      1. git fetch origin 0.9.6.dev
      2. git rebase origin/0.9.6.dev

Comment Conventions

PREFIX

  • Change Types
    • Bug
    • Feature
    • Refactor

Example: "Refactor[ID]: Update copyright statements" "Bug[ID]: Fix concurrency issue in artifact update" "Feature[ID]: Added conflict detection"

  • Identifiers
    • Bugzilla Number - bgz_12314
    • Action HRID - ats_HRID

Incorporate a Finished Working Branch Into Development Branch

  1. Rebase the development branch to ensure it has the latest changes
    1. git fetch origin 0.9.6.dev
    2. git rebase origin/0.9.6.dev
  2. Switch to development branch: git checkout 0.9.6_dev
  3. Merge work branch into development: git merge --no-ff <WORK_BRANCH_NAME>
  4. Push Changes to Remote: git push origin 0.9.6_dev
  5. Once work has been pushed to remote you can delete your local development branch: git branch -d <WORK_BRANCH_NAME>

Common Remote Operations

  • Compare two branches: git diff branch1..branch2
  • Sharing a local work branch with others
    1. Switch to working branch: git checkout <WORK_BRANCH_NAME>
    2. Push working branch to remote: git push origin <WORK_BRANCH_NAME>:refs/heads/<WORK_BRANCH_NAME>

Git common configuration (in a file)

[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
autocrlf = false
[http]
sslverify = false
postbuffer = 524288000
[svn-remote "svn"]
url = https://dev.eclipse.org/svnroot/technology/org.eclipse.osee
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/*
tags = tags/*:refs/remotes/tags/*
[apply]
whitespace = fix
[diff]
renames = copy
[merge]
conflictstyle = diff3
[alias]
s = status
c = commit
co = checkout
cpnx = cherry-pick --no-commit -x
rhh = reset --hard HEAD
[user]
name = Gallus Anonymus
email = GallusAnonymus@your_email.com

You can save the following in a .git/config_file and load it in with:

git config --file -- .git/config_file

Connecting to the Git repository

  1. Highlight all of the projects just imported from the repository.
  2. Right click and select Team > Share Project... (not Share Projects..., which is provided by SVN)
  3. Select Git as the repository type; click Next.
  4. Highlight all the lines displayed in the combo box (Ctrl+A).
  5. Click Finish.

Git Commands

Stash

git stash save <message>
git stash list
git stash show -p stash@{0}
git stash drop stash@{0}
git stash pop

Changes

git show --name-only HASH path
git diff HASH

Compare two commits

git diff OLDHASH NEWHASH

Undo

git rebase -i HEAD~5
git reset --hard HEAD
git reset --hard HEAD~3
git reset --hard <specific_commit_id>

To replace with incoming file so you can re-make your changes (or abandon them):

git checkout --[theirs|our] <path>
  • Git Log

View history for a given path even if it has been moved/renamed:

git log --follow [current path]

View current branch activity:

git log --name-only HASH
git lg | head

Show full history even with removed commits

git reflog show [log-options] master


  • Branching and Merging
git checkout -b newLocalBranchName existingBranch

i.e.

git checkout -b 91 remotes/MS_0_9_1_20100111 

creates a local tracking branch called 91

Switch branches:

git checkout [master|94|...]

Merge onto current branch:

git merge branch
git rebase --continue

Generating individual patches (one per commit) to submit by email (or bug report):

git format-patch -o ../ trunk..HEAD 

will export all commits made to current branch, from trunk to HEAD.

-o ../ 

will put them one level above in individual .patch files

Generate a big patch for your local changes, (good for backup)

git diff trunk HEAD -p > Z:/backup_date_time.patch

In this case Z:\ is mounted as a shared windows folder, so if you do not have faith in your local backup software, this could help you quickly restore your work.

Splitting commits

In case you have multiple, conceptually unrelated changes in a single commit you can split them by doing a regular rebase:

git rebase -i HASH_WHERE_TO_START_FROM

mark 'e' or 'edit' the commit you want to Edit/Split. When you get dropped back into the shell, issue:

git reset HEAD^

which effectively undoes that commit and leaves the modified files unstaged ProGit Book Chapter 6-4

Afterwards you can 'add' and 'commit' changes as appr. To resume rebase operation issue the simple:

git rebase --continue

to continue.

Conflicts

To understand conflict marks

Git Resources

Locations of all OSEE bundles

Git org.eclipse.osee

  • git: /org.eclipse.osee/features/*
  • git: /org.eclipse.osee/plugins/*
  • git: /org.eclipse.osee/releng/*

Orbit Release Engineering Bundles

 host:  dev.eclipse.org
 Repository path: /cvsroot/tools
 connection type:  extssh
  • org.eclipse.orbit/org.eclipse.orbit.build.feature.set1
  • org.eclipse.orbit/org.eclipse.orbit.releng

SWT Nebula Bundles

 host:  dev.eclipse.org
 Repository path: /cvsroot/technology
 connection type:  pserver
 user:  anonymous
  • /cvsroot/technology/org.eclipse.swt.nebula/org.eclipse.nebula.widgets.xviewer

OSEE Website

 host:  dev.eclipse.org
 Repository path: /cvsroot/org.eclipse
 connection type:  extssh

SVN Checkout

Download and import the relevant (client or application server) OSEE Team Project Set file frrom https://dev.eclipse.org/svnroot/technology/org.eclipse.osee/trunk/plugins/org.eclipse.osee.support.config/projectSets/ into your workspace.

In Eclipse, open the SVN Repository perspective and check out https://dev.eclipse.org/svnroot/technology/org.eclipse.osee/trunk/. The username and password can be left blank for anonymous read-only access.

Configure a Development Runtime

Using an SVN client such as Subversive, check out into your Eclipse workspace all the projects from https://dev.eclipse.org/svnroot/technology/org.eclipse.osee/trunk/. When configuring this SVN repository leave the user name and password blank in order to get anonymous, read-only access.

  1. Follow the PostgreSQL installation instructions.
  2. Use the configuration /org.eclipse.osee.support.config/launchConfig/OSEE Demo Application Server [localhost].launch to run an OSEE application server
  3. Use the configuration /org.eclipse.osee.ats.config.demo/MasterTestSuite_DemoDbInit.launch to initialize an OSEE database
  4. Use the configuration /org.eclipse.osee.ats.config.demo/MasterTestSuite_DemoDbPopulate.launch to populate the database for demonstration purposes
  5. Use the configuration /org.eclipse.osee.support.config/launchConfig/OSEE Demo product [localhost].launch to run a local OSEE client

Back to the top