Как эмулировать 'git stash' в ископаемом, bzr?

Можно ли эмулировать поведение "git stash" при использовании ископаемого /bzr?

В основном я заинтересован в обработке следующего рабочего процесса:

  • в какой-то момент дерево исходного кода имеет состояние X, оно совершается
  • Я перехожу к написанию нового кода, я пишу его некоторое время, и я вижу возможность рефакторинга
  • Я не могу совершить на этом этапе, потому что изменение, которое я начал делать, не завершено, оно еще не атомно
  • В этот момент я бы сделал "git stash", сохранил бы текущую работу и вернуться к состоянию X
  • Я бы сделал рефакторинг и фиксацию, исходный код теперь имеет состояние Y
  • Я бы объединил исходный код в состоянии Y с кодом в stash, завершите изменение чтобы сделать его атомарным, а затем совершить еще раз, нажав исходный код в состояние Z

Я думаю, что вообще можно эмулировать этот сценарий при использовании другой SCM, разветвляя код в состоянии X вместо выполнения 'git stash', делая рефакторинг в этой ветки, затем слияние ветки назад в главный. Но я знаю, что ветвление - это не всегда дешевая операция. Так существуют ли какие-либо более конкретные подходы, которые в конечном итоге опираются на конкретные особенности ископаемых/bzr?

Ответы

Ответ 1

Используйте команды bzr shelve и bzr unshelve.

Ответ 2

Вы можете использовать команду patch вашей системы.

  • Сначала вы создаете "stash", сохраняя сгенерированный diff как файл .patch:

    $scmtool diff > working.patch

  • затем reset ваш рабочий каталог.

  • примените патч с помощью:

    patch -p1 --dry-run < working.patch

  • а затем это работает, удалите --dry-run, чтобы применить патч для реального.

Ответ 3

Команда stash была недавно реализована в ископаемых. Вы должны проверить последний исполняемый файл ископаемого, вы увидите stash в списке доступных команд.

Вот ссылка на веб-справку по ее синтаксису.