Вот ограничения, которые управляют тем, что вы можете нажать:
- вы можете толкать только целые наборы изменений - если вы фиксируете какие-то изменения вместе, все или ничего на фронте подталкивания, вы не можетеразбить набор изменений после его фиксации
- вы не можете выдвинуть набор изменений, не переместив все его наборы изменений предка в
Так что после того, как вы зафиксировали линейную историю, подобную этой:
[0]---[1]----[2]-----[3]
вы можете сдвигать наборы изменений в ноль и единицу, не нажимая два и три, но если вы хотите подтолкнуть два, вы также должны нажать ноль и единицу.
И если набор изменений один содержит изменениядля обоих / MyProject / OtherStuff и / MyProject / MySharedLib / вы должны объединить их вместе.
Ваша единственная гибкость наступает прежде, чем вы совершите коммит, где вы можете контролировать:
- что входит вchangeset
- каковы родители набора изменений (которые также должны быть добавлены с ним)
Так что, если ваша история в настоящее время выглядит так:
[0]---[1]
а также hg status
показывает что-то вроде этого:
M MyProject/OtherStuff/file1
M MyProject/OtherStuff/file2
M MyProject/MySharedLib/file3
M MyProject/MySharedLib/file4
Затем вы хотите создать новый набор изменений, который содержит только те изменения для MySharedLib, которые вы хотите отправить:
hg commit --include MyProject/MySharedLib
создание вашей историивыглядят так:
[0]----[1]-----[2]
и затем, перед тем, как фиксировать изменения в OtherStuff, вы не хотите нажимать, вы делаете hg update
, чтобы изменить текущую ревизию parent
, чтобы ваш новый набор изменений имелродитель одного вместо двух:
hg update 1
Теперь, когда вы сделаете:
hg commit
ваш новый набор изменений, три, будет иметь только изменения не-MySharedLib и родитель одного, так что ваша история будет выглядеть так:
[0]-----[1]--------[2]
\
--------[3]
Поскольку два и три не являются предками друг друга, вы можете толкать любого из них, не толкая другого.
Это говорит о том, что всеобщее правильно: ваше использование не просто странно, это неправильно.Вы должны посмотреть на настройку subrepo.Это почти наверняка достигает ваших целей лучше, чем то, что вы или я только что описали.