Skip to content

Project to make a bridge between Starteam and Git using the fast-import mechanism

Notifications You must be signed in to change notification settings

gscokart/git-starteam

 
 

Repository files navigation

This project aim to bring an interface layer between Git and Starteam.

Current Goal:
Bring the capacity of converting Starteam project to Git with the help
of the fast-import capacity. I'll be doing this with the help of a 
fake layer that emulate the behavior of the StarteamSDK. This layer 
could be used as a test platform.

Futur Goal:
Give the capacity of making git a Starteam compatible client with the
added value of using Git. This could also be used for Mercurial and 
Bazaar with the help of the fast-export capacity.

License:
Git-Starteam is convered under the General Public License Version 3.
Fake-Starteam is convered under a personnal license and is included 
only for testing purpose. The project shall not be used for any other
purpose than easly testing your interaction with a fake starteam server.

Building:
Git-Starteam use a sconscript to build it's respective jar file. 
You can use the latest version of scons at : 
http://www.scons.org/

To build just call scons in the root directory where you have clone the
repository.

Alternativelly, there is is maven build that you can use.



Build with starteam80 API:
cd ~/proj/git-starteam/
scons --jargs /usr/share/java/jargs.jar --starteam /opt/StarTeamCP_2005r2/lib/starteam80.jar bin/syncronizer.jar
(If not starteam80, maybe you should modify generateFastImportStream() in syncronizer/src/org/sync/GitImporter.java, for http://techpubs.borland.com/starteam/2009/en/sdk_documentation/api/com/starbase/starteam/CheckoutManager.html said old version (passed in /opt/StarTeamCP_2005r2/lib/starteam80.jar) "Deprecated. Use View.createCheckoutManager() instead.")

Prepare before Run:
In Linux, the default max "open files" is 1024 (`ulimit -a`). Maybe you will get "java.io.IOException: Too many open files" if your StarTeam project had checked in too many files in one time, then you should add "* - nofile 65536" line to /etc/security/limits.conf and re-login to shell.
In Windows, the default max "open files" is 16384.

Run with starteam80 API:
1. Create bin/.git/ folder from a StarTeam project named Prime with Prime view:
cd ~/proj/git-starteam/bin/
java -cp .:/usr/share/java/jargs.jar:/opt/StarTeamCP_2005r2/lib/starteam80.jar:./syncronizer.jar:../lib/org.eclipse.jgit-0.12.1.jar org.sync.MainEntry -h 192.0.1.102 -P 49203 -p Prime -v Prime -H master -U UserName -d gmail.com -f Src/apps/vlc2android/ -c
Or, it's a good idea to add .gitignore first, so you can do below instead:
cd ~/proj/git-starteam/bin/
echo "*.o" > .gitignore
git add .gitignore
git commit -m "Init with .gitignore"
java -cp .:/usr/share/java/jargs.jar:/opt/StarTeamCP_2005r2/lib/starteam80.jar:./syncronizer.jar:../lib/org.eclipse.jgit-0.12.1.jar org.sync.MainEntry -h 192.0.1.102 -P 49203 -p Prime -v Prime -H master -U UserName -d gmail.com -f Src/apps/vlc2android/ -R

2. Add other branch to bin/.git/ folder from other view:
In gitk --all, create OtherView branch base on the commit which time is nearest before "StarTeam->View->Properties->Type->Parent Configuration" of the Other View.
java -cp .:/usr/share/java/jargs.jar:/opt/StarTeamCP_2005r2/lib/starteam80.jar:./syncronizer.jar:../lib/org.eclipse.jgit-0.12.1.jar:/usr/lib/jvm/java-1.6.0-sun/jre/lib/ org.sync.MainEntry -h 192.0.1.102 -P 49203 -p Prime -v "Other View" -H other-view -U UserName -d gmail.com -f Src/apps/vlc2android -R

3. Get the repository:
cd /pub/gittrees/
git clone --bare ~/proj/git-starteam/bin/.git vlc2android.git

4. Delete bin/.git/ folder
cd ~/proj/git-starteam/bin/
rm .git/ -fr


TODO:
* Finish basic support of file query in the Fake Starteam API.
 - Support for folder creation [DONE]
 - Support for file creation [DONE]
 - Support for acurrate file status [DONE]
 - Support for label creation [Not Started]
 - Support for file deletion [DONE]
 - Support for folder moving [DONE]
 - Support for file renaming [DONE]
* Create the fast-export based on the Starteam API.
 - Create basic object for fast-export stream. [DONE]
 - Create CLI for importing from a Project / View / View Configuration (Time) / Folder.
  * Syncronization of the tip [Done]
  * Syncronization by time of commit [Done]
  * Syncronization by Folder [Done]
  * Syncronization by branched View [Done]
  * Syncronization by Label [Not Started]
* Push to starteam
 - Post-receiver example

About

Project to make a bridge between Starteam and Git using the fast-import mechanism

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%