Hi ALL, I had started a discussion about integrating SCM with OBS in our company. And now when I checked back http://en.opensuse.org/Category:Build_Service, I found there was an interesting wiki page(http://en.opensuse.org/openSUSE:Build_Service_Concept_GitUpstreamSupport) talking about the similar task, also noticed that some of you have started relevant work. Here I would like share my thoughts. Follows my writing in my earlier emails. ====================================== For example, we would like to have Meego OBS to build a package -- gstreamer, which is located at http://git.gitorious.org/maemo-multimedia/gstreamer.git. With current OBS, we need fetch all the code from gitorious, create a compressed tar file, then upload the tar file, spec/dsc file to OBS source server, these files will go into /srv/obs/sources/gstreamer/. OBS scheduler(bs_sched) will detect the file change, and trigger a rebuild. If source repository URL is included in the meta file of this package as below <package project="devel" name="gstreamer"> <title>gstreamer</title> <description>gstreamer</description> <sources>http://git.gitorious.org/maemo-multimedia/gstreamer.git</sources> </package> Then create a new server in OBS, may be named as bs_scmagent, which focuses on the following tasks -- * maintain a package list for all the packages whose meta data file includes a source repository URL, * connect to SCM server to detect code change, * if changed, fetch code from SCM, tar them, put the new file into /srv/obs/sources/gstreamer/, let bs_sched to trigger a rebuild. bs_scmagent needs to support plugin, which is to give support for different kinds of SCM. For compatibility, a special value is needed to indicate that the files were uploaded manually. <package project="devel" name="gstreamer"> <title>gstreamer</title> <description>gstreamer</description> <sources>native</sources> </package> How to detect code change? For git, Polling seems to be the only solution since it is distributed version control system. Thus, we need tune up the polling way for performance consideration. * polling not that frequently, for example, once n hours(n can be configured from webui or osc, and is limited between a range) * if developer wants his code change being built immediately, an osc action will be involved, he can run "osc remoteupdatesource gstreamer" to tell bs_scmagent to get latest code. ====================================== "osc git refresh" mentioned in http://en.opensuse.org/openSUSE:Build_Service_Concept_GitUpstreamSupport seems much like "osc remoteupdatesource" I proposed. I like the idea of generating a diff from SCM as a patch for spec file, but I don't like "git" as an action of "osc". I prefer the interfaces to be clear, osc is osc, git is git, don't mess them up. Also how about other SCMs except git? What's your progress now? ---------------- Best Regards, Brook Hong -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org