It's all about the answers!

Ask a question

RTC/Git integration: who's done it/how well does it work?


Paul Smith (26122) | asked Oct 17 '11, 5:30 p.m.
Hi all. I've read the "Integrating other SCM Systems with Rational Team Concert 2.0" document from 2009, which gives a lot of detail but is a little lacking as to the higher-level pros and cons, and searched these forums looking for people who've actually implemented this integration but haven't found much.

Has anyone out there actually implemented the RTC/Git bridge described in the above document? How is it working for you? Do you have any advice? Are you willing to give a general overview of how your system works? With a DVCS there are lots of decisions to make (it seems to me); do you connect RTC with only the "master" git repository? All of them? Etc. Is there any existing community around this environment that I can contact?

What features of RTC does one lose by choosing the Git bridge instead of the builtin SCM? The above doc just says "it is possible to provide a similar type of integration between RTC work items and other SCM systems by using comments and the "Related Artifacts" links provided by the Work Items component. The level of integration will not be as high as with RTC SCM but it is useful none the less"; I'm wondering exactly what "not as high" means: what features are preserved, and which are not.

Finally in some of my readings I've seen discussion of a "connector", while the above doc describes a Git "bridge". Are "connector" and "bridge" different names for the same thing? If not what is the advantage of a connector over a bridge (or vice versa), and if a connector gives tighter integration then is there one available for Git and/or would it be difficult to create one?

Thanks for any guidance/pointers/guidelines anyone can provide!
Cheers!

22 answers



permanent link
Geoffrey Clemm (30.1k23035) | answered Oct 18 '11, 11:27 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
We use the term "connector" to refer to a mechanism for integrating two
distinct repositories. The terms "bridge", "synchronizer", and
"importer" refer to different types of connectors. A bridge allows you
to create links from artifacts in one repository to artifacts in another
repository, and allows you to navigate those links. A synchronizer
takes a user-selected object in one repository, creates a clone of that
object in the other repository, and keeps the object and its clone
synchronized. An importer is like a one-way synchronizer ... taking
objects in one repository, and creating copies in the other repository.

Cheers,
Geoff

On 10/17/2011 5:53 PM, madscientist wrote:
...
Finally in some of my readings I've seen discussion of a
"connector", while the above doc describes a Git
"bridge". Are "connector" and "bridge"
different names for the same thing? If not what is the advantage of a
connector over a bridge (or vice versa), and if a connector gives
tighter integration then is there one available for Git and/or would
it be difficult to create one?

permanent link
Geoffrey Clemm (30.1k23035) | answered Oct 26 '11, 12:18 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Enhancing the GIT integration is being actively investigated, but there
is not yet a committed plan ... stay tuned.

Cheers,
Geoff

On 10/25/2011 11:53 AM, madscientist wrote:
gmclemmwrote:
We use the term "connector" to refer to a mechanism for
integrating two distinct repositories. The terms "bridge",
"synchronizer", and
"importer" refer to different types of connectors. A
bridge allows you to create links from artifacts in one repository to
artifacts in another repository, and allows you to navigate those
links. A synchronizer takes a user-selected object in one
repository, creates a clone of that object in the other repository,
and keeps the object and its clone synchronized. An importer is like
a one-way synchronizer ... taking objects in one repository, and
creating copies in the other repository.
Thanks Geoff; that's very helpful in understanding the docs
available.

So far I've had no responses to anyone using RTC with git, in real
life. Is this not something anyone has ended up doing, "for
real"? The whitepaper is interesting but it was published in
2009 IIRC, and uses RTC 2.0. Are there any updates/enhancements
available if one is using RTC 3.x? I was hoping to find a user
community around RTC+git but so far...

Thanks!

permanent link
Paul Smith (26122) | answered Oct 25 '11, 11:52 a.m.
We use the term "connector" to refer to a mechanism for integrating two distinct repositories. The terms "bridge", "synchronizer", and
"importer" refer to different types of connectors. A bridge allows you to create links from artifacts in one repository to artifacts in another repository, and allows you to navigate those links. A synchronizer takes a user-selected object in one repository, creates a clone of that object in the other repository, and keeps the object and its clone synchronized. An importer is like a one-way synchronizer ... taking objects in one repository, and creating copies in the other repository.

Thanks Geoff; that's very helpful in understanding the docs available.

So far I've had no responses to anyone using RTC with git, in real life. Is this not something anyone has ended up doing, "for real"? The whitepaper is interesting but it was published in 2009 IIRC, and uses RTC 2.0. Are there any updates/enhancements available if one is using RTC 3.x? I was hoping to find a user community around RTC+git but so far...

Thanks!

permanent link
Amrinder Singh (6111) | answered Aug 12 '14, 3:45 p.m.
 Hi Guys,

I am working on RTC 5.0 integration with GIT. My goal is to integrate RTC work item with GIT commit. Till now I have followed IBM documentation for this activity http://www-01.ibm.com/support/knowledgecenter/#!/SSCP65_5.0.0/com.ibm.team.connector.cq.doc/topics/c_integ_git.html

but no luck, when I push my changes to git repository with work item id, it doesnt create a link in RTC. Also as per document it says GIT repo should be hosted on Apache Smart HTTP server but my GIT repo is hosted on Gerrit Jetty Web server. Btw we also use Gerrit. I dont know if that makes a difference but please let me know what possible workaround can be done or has anyone worked on this integration?

Thanks
Amrinder

Comments
sam detweiler commented Aug 12 '14, 4:19 p.m.

you did install the hooks on the git server, right? and configure the variable fo reht rtc server url, etc.  in 5.0 the hook samples are provided. I don't think it matters what server hosts the git server..


permanent link
Amrinder Singh (6111) | answered Aug 12 '14, 4:28 p.m.

Yeah my project repo is "testproject2.git". There is a hooks folder and I copied post-receive.py and pre-receive.py scripts over there. I did same for Gerrit and placed ref-update.py and ref-updated.py scripts.

In the scripts I have " Jazz repo Url, GIT repo key, Python path and hooks path " But apart from this stuff, is there anything I need to modify in those scripts, I downloaded the hook scripts from jazz.net and followed Readme.txt


Comments
sam detweiler commented Aug 12 '14, 4:38 p.m.

is the right python version installed on the server?  these scripts depend on the pre-compiled python classes (pyc). that also need to be in the path (I think.. just setting this up on my 5.0 server (since I hadn't done it)..

just finished jenkins/svn/git integration with hooks.
have jenkins/RTC already. so this is next.


permanent link
Amrinder Singh (6111) | answered Aug 12 '14, 4:47 p.m.
edited Aug 12 '14, 4:47 p.m.

Yeah Python-3.3.5. Are you talking about hookslib.pyc and rtcprocess.pyc? I havent copied these in the path.

So i copy these scripts to where I have installed python? This is the path I have on my server

/usr/share/doc/Python-3.3.5/rtcgithooks : I copied all scripts here (AssociateWorkitem.py, post-receive.py, pre-receive.py, ref-update,ref-updated and ValidatePush.py)


Comments
sam detweiler commented Aug 12 '14, 4:50 p.m.

and that location is in the path for the git server?
note that the hooks talk about c:/python

on my unix server thats not where python would be.
from the post-receive hook

jazzRepoUrl='https://localhost:9443/ccm'

commitUrl='$repo/commits/$sha1'


gitRepoKey=459b3e8774be4c5e9013326e3329645a
pythonPath="C:/Python33/python"
hooksPath="C:/rtcgithooks"


permanent link
Amrinder Singh (6111) | answered Aug 12 '14, 5:01 p.m.

Yes the path I have mentioned is in GIT server. Hooks talk about C:/python but thats an illustration?

Please share how the path should like so I can do some search on my end?


Comments
sam detweiler commented Aug 12 '14, 5:26 p.m.

Ok, I was wrong.. on the 5.0 integration, the path to the git server must be HTTP based..  mine uses the git protocol, so that won't work.

the path is not an 'illustration in the 5.0 code
 $pythonPath $hooksPath/AssociateWorkitem.py $jazzRepoUrl $gitRepoKey $userId $local_ref $local_sha $remote_ref


permanent link
Amrinder Singh (6111) | answered Aug 12 '14, 5:56 p.m.

You mean the Url to git server?? Mine is based on HTTPS..

So how would the installation path to python look like on linux server?


Comments
Amrinder Singh commented Aug 12 '14, 6:27 p.m.

I am talking in regards to this path:

pythonPath="C:/Python33/python"
hooksPath="C:/rtcgithooks"

Isnt this an illustration and we have to fill in the python path from the server?


sam detweiler commented Aug 12 '14, 8:31 p.m. | edited Aug 12 '14, 9:06 p.m.

got it.. illustration meant something else to me

on my ubuntu 12.04 with python3 installed it is '/usr/bin/python3'
and I put the rtc stuff in /etc/rtc-git


permanent link
Amrinder Singh (6111) | answered Aug 13 '14, 12:53 p.m.

Btw.. I am also using Ubuntu 12.04.  So you think my python path is not right where I installed it (/usr/share/doc/Python-3.3.5)?

You put your rtc git stuff in /etc/rtc-git (You mean all the hook scripts and python scripts?)


Comments
sam detweiler commented Aug 13 '14, 12:56 p.m. | edited Aug 13 '14, 1:24 p.m.
  1. it needs to be to the python3 executable

  2. yes, sorry meant /opt

    well, the hook scripts need to be installed in the
       git repo hooks folder, (once for every repo), or link to a common place from the hooks folder)  made executable, and edited for the path info.
         

    git will call post-receive after a push from a client.

sam detweiler commented Aug 13 '14, 1:25 p.m.

I still have to get my http git access setup before I can finish the 5.0 git repo config


permanent link
Amrinder Singh (6111) | answered Aug 13 '14, 2:33 p.m.

But shouldnt the hook scripts be placed in hooks folder of your git repository?? Example: git-repo-location/ .git/hooks folder.

And I am also configuring Gerrit server side hooks so they'll be in gerrit-installation-location/hooks


Comments
sam detweiler commented Aug 13 '14, 2:37 p.m.

yes, see my updated comment.. I unzipped the rtc provided zip into /opt/rtg-git

then made executable, then edited, then made a link from the hooks folder to these
(that way when I have multiple repos, and need to fix the script, I only change it in one place.

see the ln command while in the hooks folder

Your answer


Register or to post your answer.