RTC/Git integration: who's done it/how well does it work?
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
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?
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!
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!
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
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.
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
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"
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
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
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
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?
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
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
- it needs to be to the python3 executable
- 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.
I still have to get my http git access setup before I can finish the 5.0 git repo config
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
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