Thanks Stefan. My immediate takeaway is that by using a distributed VCS we have the capabilities that I am more used to in that we are working "connected" instead of "disconnected" with the connection blocker being someone who can commit in SVN on ASF.
Once we agree we have something that fits together, we throw it over the wall to committer and hope they get to it in a reasonable timeframe. If I got this right, it sounds like a good thing, so I need more instructions/pointers as to where to even start. Question: Is how do we track what we are doing so that the correct info gets into JIRA or is that the committers job to fix JIRA as he/she commit our code? ---------------------------------------------------------------------- Roy Chastain -----Original Message----- From: Stefan Bodewig [mailto:bode...@apache.org] Sent: Saturday, August 13, 2011 11:18 To: log4net-dev@logging.apache.org Subject: Re: Moving forward with updates, builds and versions On 2011-08-13, Roy Chastain wrote: >>> Who are those people? Maybe they should comment on this? > I am one of those people. At this point I have minimal (if any) > understanding of the actual patch insertion process, but given I don't > have write privileges that is okay. I also have minimal/no > understanding of how to apply patches that are not "committed" to > something I am building. (I know I need to read the manual.) I have > no allegiance to SVN other than I know I will face it again in the > future. I'll leave the distributed VCS part to Dominik as I think he's more experienced in that area than myself (I'm a long time darcs user with some git sprinkled in but have never used hg or Bitbucket myself). Let me try to address the current process. My I assume you are familiar with TFS? svn is pretty similar to TFS with the major exception being that by default the svn server doesn't track who has checked out what - all your checkouts are local only. This also means "shared checkout" is the default, it is possible to lock files but this is frowned upon. In the eleven+ years I've been working on ASF code bases I've had less than 20 merge conflicts that I needed to resolve - in reality it is very rare that two developers touch the same code at the same time. Commit early and commit often. I am a command line guy so I apply a patch by using the GNU patch command from my Cygwin installation. Unfortunately I'm not familiar with any alternatives to that. The process is "download the patch from JIRA", "apply it to your working copy", "build and test" and finally "commit". > I thought it was a duplication of effort, but Stefan seems to think it > may have merit, so what is the merit? [once I was ready I realized I did talk about the DVCS part as well, sorry. Dominik, please point out where I'm wrong or fill in what I've forgotten to say.] Basically using a site like Bitbucket allows others to have a public workspace they have write access to. This gives those others the advantage of revision control while they develop a feature/fix and gives log4net devs the ability to say "no, don't do it that way, take a different route" and play back and forth until all sides are satisfied. Basing such a workspace on a read-only clone of the "master" svn tree means that this public workspace can be kept in sync with log4net's current code. The distributes VCSes are all pretty good at merging and tracking what they have already merged. Bitbucket, github, launchpad and similar sites make it easy to ship patches from one workspace to another if they are related. Say Dominik had prepared some code change in a workspace and he's ready then he can ask the maintainer of a Bitbucket copy of log4net's svn tree to pull in a certain set of changes - and the infrstructure will perform all necessary merge steps if the request is accepted. A bridge from hg to svn exists that would make it easy to then send the same changes to the svn tree. So what Dominik suggests is to enable a different workflow that is proven and works well for people who are used to these tools. This alternative is more agile and more interactive - several people could be working together on a changeset that is going fix a given bug or implement a given feature - than the "central source tree", "patches in issue tracker", "committer as gateway" process we usually employ. Stefan