CI means Continuous (keyword here) Integration it means that every change made to the code is integrated the moment it is committed therefore branching cannot be CI at most it can be Very Often Integration but not CI.
I think those comments are wrong and didn't got the idea.
Continuous integration is continuous not often, continuous.
That means that every change, no matter how little, is integrated immediately. Branches on the other hand only integrate when, in best case, the developer does rebase often(and is still a half integration cuz you are doing things on your bubble without active feedback) or in worst case, when the branch is merged therefore the integration is not continuous.
Unless you are the only developer on the project (and very often even then) you will have branches in your VCS.
Having branches does not prevent you from doing CI. However, not every branch is purposed for CI of course. You don't want to integrate everything without control, do you? Otherwise a small mistake may take down entire project and you'll have to rollback (and lose dollars meanwhile).
So CI is ONLY done on SOME branches. 1. A change is made on non-CI branch. 2. Change passes quality control. 3. Change is merged into a CI branch. 4. Deployment is triggered automatically on EVERY change in CI branch, that's why it's still CONTINUOUS integration (related to that controlled branch).
No, it isn´t and I explained it in my comment the why.
Branches are totally incompatible with CI is literally impossible to do CI having a branching strategy because you wouldn´t be integrating every little change in a continuous manner and your comment already says so with the "You don't want to integrate everything without control, do you?". Yes, I want to integrate everything and then run tests because that is CI.
The only way to do CI is to use trunk based development if not what you are doing is promiscuous integration that is also not bad, not everyone needs or is ready for CI.
How can it be Continuous Integration if it uses branches?
the DB migration thing should be written on the sky :P
why would branches and CI be mutually exclusive? Branches might be the most important part when developing a system with multiple developers.
CI means Continuous (keyword here) Integration it means that every change made to the code is integrated the moment it is committed therefore branching cannot be CI at most it can be Very Often Integration but not CI.
davefarley.net/?p=247
This guy explains it way better than me.
Did you read all the comments in reply to that blog post? Branching does not prevent CI. Failing to integrate changes regularly prevents CI.
I think those comments are wrong and didn't got the idea.
Continuous integration is continuous not often, continuous.
That means that every change, no matter how little, is integrated immediately. Branches on the other hand only integrate when, in best case, the developer does rebase often(and is still a half integration cuz you are doing things on your bubble without active feedback) or in worst case, when the branch is merged therefore the integration is not continuous.
I think you misunderstand CI.
Unless you are the only developer on the project (and very often even then) you will have branches in your VCS.
Having branches does not prevent you from doing CI. However, not every branch is purposed for CI of course. You don't want to integrate everything without control, do you? Otherwise a small mistake may take down entire project and you'll have to rollback (and lose dollars meanwhile).
So CI is ONLY done on SOME branches. 1. A change is made on non-CI branch. 2. Change passes quality control. 3. Change is merged into a CI branch. 4. Deployment is triggered automatically on EVERY change in CI branch, that's why it's still CONTINUOUS integration (related to that controlled branch).
No, it isn´t and I explained it in my comment the why.
Branches are totally incompatible with CI is literally impossible to do CI having a branching strategy because you wouldn´t be integrating every little change in a continuous manner and your comment already says so with the "You don't want to integrate everything without control, do you?". Yes, I want to integrate everything and then run tests because that is CI.
The only way to do CI is to use trunk based development if not what you are doing is promiscuous integration that is also not bad, not everyone needs or is ready for CI.
Okay, Adrián, can you please reference any widely accepted definitions that prove your point?
martinfowler.com/articles/continuo...
and this other guy
davefarley.net/?p=247
Thanks