Reputation: 555
What I am trying to do I don't think the SVN:ignore command is going to do what i want it do.
I have an SVN repository which is the same application deployed for a handful of seperate clients. I have made changes to a group of files, but only one of the clients (client A we'll call them) wants these changes (they want their web app to be accessible in an iframe, whilst the others don't).
I don't want to just ignore the files on the other servers because in the future I will be making modifications to those files that they need.
Essentially for everyone that isn't client A i need to update their server but not update any of the changes on revision x which are only for client A.
I don't even know if this is possible because in the future it would be very easy to overwrite those files wouldn't it? I would forever have to be remembering to ignore that revision wouldn't I?
If it isn't possible, are there any other workarounds people have used? One method I thought but can't seem to get working the way i thought it would in theory is to merge those changes for Client A's server into a different branch, but then I will have to maintain a different repository branch each time a client wants something different from the other clients?
Upvotes: 0
Views: 339
Reputation: 12010
To be a bit contrarian here, I don't think branches or tags are the correct solution to your problem, unless you have an infinite amount of time to merge code between development lines.
A different approach is a monolithic code base where you adapt a superset of features for all your clients. For each client, you configure features on and off. (Your configuration for each client is separate from your codebase, right?) Even if you have different paths your code follows for each client, you get the benefit of being able to fix common features once.
Additionally, as you develop varied features for each client, you have the opportunity to sell a client a feature that's potentially already built. All you need to do is configure it on.
Granted, if the needs of each of your clients is vastly different, this solution may not work. However, since you're keeping the codebase in the same repo, I'm going to assume it is.
Upvotes: 2
Reputation: 8978
I think a separate branch is the most reasonable solution. At least in this case you may setup test system to run tests from both branches: for client A and others. Your either keep changes in some subversion branch/trunk or can easily lose/forget them. You can't exclude revision X fully automatically because theoretically there can be a conflict while applying some change of revision Y > X that assumes that changes from revision X exist.
Upvotes: 1
Reputation: 2707
The correct method to use here is creating a branch for client A. SVN ignore is for something completely different.
Upvotes: 0