Можно ли создать полку из разницы двух версий одной ветки только некоторыми операциями в tfs/tfpt?
например. создать полку из (changeet 2013 → changeet 2034)
Можно ли создать полку из разницы двух версий одной ветки только некоторыми операциями в tfs/tfpt?
например. создать полку из (changeet 2013 → changeet 2034)
Нет, это невозможно. Изменения и полки - разные вещи, с разными целями. Возможно, вы могли бы написать плагин, чтобы сделать то, что вам нужно (получить набор изменений, проверить файлы, отложить файлы).
Можно создать полку из набора изменений с некоторыми ограничениями. Мне нужно было отменить переход от ветки, чтобы удалить ее из релиза, но она не была в какой-либо другой ветке, поэтому я хотел сохранить изменения на полке. Я достиг этого как ниже:
Вы можете применить эту технику к случаю, описанному в вопросе, но это будет много усилий вручную, так как это нужно было бы повторить для каждого набора изменений. Это также создаст массу беспорядков в TFS, так как вам придется также проверять откаты откат.
В то время как это решение не включает в себя чистое решение TFS, оно не связано с ошибкой в истории изменений TFS, как это делает Ли Ричардсон.
Вы можете использовать Git-TFS для клонирования репозитория или ветки TFS, а затем создать новую ветку из предыдущего фиксации (проверка TFS), reapply изменится с нового фиксатора и опубликует его как полки:
Посмотрите git log
для фиксации до того, который вы хотите создать набор изменений для:
$ git log --oneline
AAAAAAA Newest commit
BBBBBBB The commit for which I want a shelveset
CCCCCCC The commit where I will create a new branch from
Создайте новую ветку из фиксации, которая возникает до того, который вы хотите ретроактивно создать на полке:
$ git checkout -b CCCCCCC
Оформить изменения с фиксацией, для которой вы хотите создать полки для:
$ git checkout BBBBBBB -- .
Зафиксируйте эти поэтапные файлы:
$ git commit -m "Committing stuff for a retroactive shelveset that does X, Y and Z."
Создайте полки:
$ git tfs shelve my_retroactive_shelveset HEAD
<сильные > Преимущества
Это позволяет сохранить историю изменений в TFS, не требуя от вас изменения в наборе изменений, создать полку для отмены отмены ранее измененного набора изменений.
Поскольку полка была создана из ветки в Git, вы можете удалить эту ветку и по-прежнему сохранить свою историю Git -TFS.
Недостатки
Это не невозможно. С технической точки зрения, вы можете это сделать, хотя вы, возможно, и не захотите. Я разрешу читателю решить.
Вы можете сделать это в новой рабочей области.
Теперь вы можете создать Shelveset.
Если вы можете сфокусироваться на определенной папке, тогда она будет работать быстрее, и вы сможете ее автоматизировать. Вот пример командной строки, которая сделает это. Я просто попробовал, и это сработало для меня.
В этом примере я указываю папку из корня под названием "Src". Измените его корневую папку.
md tmpws
cd tmpws
tf vc workspace /new /noprompt tmpws /location:local /permission:private
tf vc get "$/Src" /version:C2222 /recursive /noprompt
cd ..
md tmp
move "tmpws\Src" tmp
cd tmpws
tf vc get "$/Src" /version:C1111 /recursive /noprompt /force /overwrite
cd ..
robocopy "tmp\Src" "tmpws\Src" /mir
tf vc reconcile /promote /adds /deletes /diff /recursive /noprompt
tf vc shelve /replace /noprompt mychange
tf vc undo "$/Src" /recursive /noprompt
tf vc workspace /delete tmpws
cd ..
rmdir /q /s tmp
rmdir /q /s tmpws