Push Trunk or Push Branch to Production
I'd like to get an idea of some processes on build process with Tortoise SVN. Primarily
I'm wondering do you push:
- The Mainline Trunk
- A branch after QA has grabbed it into a working copy locally and tested the branch and then some build pushes that branch
The problem I have is I work at a craphole (hey, it is what it is and I'm venting on stackoverflow, you better believe it..good way to relieve stress due to complete utter chaos) and we have no formal process for pushing anything. In fact even worse my boss directly codes against production. When I have changes, he pushes the mainline trunk. The problem becomes when I make database changes on our Dev database for lets say Branch A. Well...that breaks Branch B and 开发者_如何学运维C. I have like 4 projects going on at once! Why? Well, I will not get into that (chaos).
So consequently I rename a table field, or add a field or whatever in SQL Server and walla, now my other branches have stale code pointing to previous field names.
So what happens? I have to merge certain changes to this branch, to that branch, etc. It feels like a war zone.
Finally, what happens is I try to only merge the minimum. Lets say I made DB changes for Branch A's code but now I had to jump back on Branch B's project. Well I need to merge "some" of A's changes over for those database changes so that B's code is not going to bomb out and is able to work with the new table changes.
Finally boss pushes the mainline trunk to production. Now I get an email "you forgot to remove the hyperlink for this". That hyperlink was actually a feature I added in Branch A. But what he's talking about here is he just pushed the mainline trunk to production which now has my merged changes from Branch B and any database scripts for Branch A because remember I had some DB changes and if he pushes code, it's got to reflect those changes thus some partial database changes must also be pushed even if it's not related to this project. Well...I missed the hyperlink, so kill me. Maybe that's why we need a build process boss? (sorry, it's been a nightmare working here which is why this thread is getting so detailed).
Anyway, obviously this is a nightmare. And he dictates almost everything. The only reason we have source control is because I've worked on hard core teams and that's the first thing you setup. Well there was none here. Problem is I can't dictate the structure..he does but he's never really used source control!! My God.
So we have no QA. This is an e-commerce website. That's another huge issue. So consequently I'm expected to be perfect. That means mainline trunk needs to be perfect for whatever we're pushing, whatever branch feature.
Is this luda? wtf do I do? I could go off on him after tying so many times tactfully to explain that we need a freakin build process (not just copy local mainline trunk to production!) but I've tried to push before and got yelled at. So I gave up on that.
So it will help me tremendously to know how others are pushing their source from Tortoise to production. I was not the person pushing when I was on previous teams so really I'm not too versed in build processes.
We are a fairly good size e-commerce site and get a couple millions hits a month.
From what you say it sounds like your branches are so-called "feature branches", not maintenance branches. While in theory you could push directly from the feature branch, what happens if you run into conflicts when the branch is merged into the mainline? The most bullet-proof process is to merge the feature branch into trunk, then create maintenance branch out of that point of the trunk and push that.
Regarding the chaos and the boss, what can I say dude... Before you quit, try to change it, and learn as much as you can in the process.
精彩评论