There has been a whole lot of discussion about "Branch Repositories" vs. "Named Branches". If they are both OK ways of achieving the same thing, and ultimately look pretty much the same as far as the repository is concerned, it seems to me that Kiln might be able to abstract away the difference (at least to a certain extent).
Right now, a branch repository is a repository that has been developed separately from development in a different branch repository but the two share a common ancestral revision. The only difference with a named branch is that the two lines of development are within one repository.
To edit each branch in the branch repository case, you MUST have 2 separate repositories (And also working copies, since you are doing work to them). In the named branch case, however, you typically switch between named branches within a single repository to work on each one. It would be possible, however, to have 2 separate repositories in the named branch case and simply have each repository set to pull from a different head. In this case, named branches where you only work on one head per repository/working copy, things work pretty much like how things work with branch repositories.
So, if you have been following along so far and haven't gotten lost, we've established that named branches can work similarly to branch repositories. Given that, could Kiln switch which head is "current" when cloning a repository? If that is possible, it would seem that Kiln could possibly treat named branches almost the same as it treats branch repositories.
The differences would be:
- that a new branch repository would get created in the web UI when a changeset with multiple heads gets pushed in...one head is the existing repository, and the new head(s) create new branch repositories.
- When you clone a "normal" branch repository, it works as it does now, but when you clone a Named Branch branch repository, you are actually cloning the full repository the named branch resides in but you are cloning it in such a way that Kiln automatically sets the current named branch to the branch you are cloning.
I realize I may have lost many people, and I suspect I have made a number of incorrect assumptions, but is what I proposed possible? If not, what prevents it, and if so, what problems might arise?
Also, if I am wrong, please point out where I am wrong so that we all may learn!