Как подражать 'git stash' в ископаемом, bzr? - PullRequest
14 голосов
/ 16 декабря 2009

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

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

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

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

Ответы [ 3 ]

27 голосов
/ 16 декабря 2009

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

12 голосов
/ 18 декабря 2009

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

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

    $scmtool diff > working.patch

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

  • позже примените патч с:

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

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

8 голосов
/ 25 ноября 2011

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

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

...