flag changesets that won't be merged
It would be useful to be able to set a flag on a changset such that it won't be merged from the branch it exists on (by merging from a subsequent changeset, although cherry picking it could possibly be an exception).
I sometimes need to make temporary changes on a branch (eg. for testing), but don't want to risk these getting merged upstream.
Normally I do periodic checkins of all changed files, so need to be careful to exclude these. It would be nice for the temporary changes to be managed by the SCM in a safe way.
I don't know if something similar could be achieved via custom change lists, but for some reason the 'Move to changelist' option is greyed out.
re the change-lists: I'm not sure what is possible with these - the option is disabled and I can't try them. I suspect they won't help with the above though?
Yes, your example is exactly what I would like to do. cset 1 would contain temporary edits that should stay on the branch. 3 & 4 would contain edits (possibly to the same files as in 1) that I would like merged.
It is awkward to retain temporary edits in a workspace, particularly if you need to make some 'real' edits to the same files.
I'm confused about your last sentence: do you mean moving files to a different changelist so that you avoid checking in them at all?
Your main point: marking the cset as "unmergeable"... uhm... we could probably consider the "merge-from" permission cset by cset (at the risk of making the merge slower).
But what if you have a branch like this:
cset 0 - cset 1 - cset 3 - cset 4
You mark cset 1 as "non-mergeable" but then you try to merge from cset 4 ... should it let you merge?