Как увидеть изменения git svn dcommit "перед удалением?
С svn-git
, как я могу увидеть, что должно произойти?
с git svn dcommit
?
Вот команды, которые я запускаю:
git svn clone file:///svn/test1 test1-git
cd test1-git
echo "first line" > test1.txt
git add test1.txt
git commit
Теперь он привязан к репозиторию git - хорошо. Но прежде чем я запустил git svn dcommit
, я хотел бы увидеть diff, содержащий изменения, которые будут переданы в репозиторий SVN.
Ответы
Ответ 1
Если ваша удаленная ветвь называется git-svn
(она называется, если вы просто делаете простой git svn clone
), вы можете увидеть разницу между текущей ветвью и git-svn
:
git diff git-svn HEAD
Вы увидите все изменения, которые присутствуют в вашей текущей ветке, но не в репозитории svn.
Ответ 2
Вывод 'git svn dcommit -dry-run' можно снова подать в git так:
git diff-tree 2282c630eeef26fecbc3f3519be55a9dce094c80~12282c630eeef26fecbc3f3519be55a9dce094c80 -u
Обратите внимание на '-u' в конце.
Затем вы увидите diff.
Если вы просто хотите увидеть что-то вроде "svn stat", вы можете использовать "-stat":
krausem-> git diff-tree f00e37882b7186e9e7f38c2fa28778e39734e2e7~1 f00e37882b7186e9e7f38c2fa28778e39734e2e7 --stat
.../src/main/webapp/tiles/vertrag/freiKlauseln.jsp | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
Ответ 3
Второй ответ (пересмотренный после комментариев, указывающих, что -dry-run недостаточно)
В зависимости от ваших ожиданий, можно использовать журнал git следующим образом:
git log remotes/svn.. --oneline
Обратите внимание на два периода в конце. Это покажет все фиксации текущей ветки с момента последнего общего родителя. В случае типичного использования git -svn это будут все локальные коммиты с момента последнего dcommit. (Предполагается, что ваше имя ветки удаленной SVN - "remotes/svn". Вы можете запустить "git branch -a", чтобы перечислить все ветки.) Важно понять, что это делает, или просто запускать его дословно, но, возможно, это обеспечивает больше того, что вы ищете.
Первый ответ
Вы можете использовать -dry-run с dcommit:
git svn dcommit --dry-run
См. этот дублированный вопрос/ответ: Как узнать, что было проверено в git, но не было выполнено для svn через dcommit?.
Ответ 4
Когда я нахожусь в состоянии запуска git svn dcommit
, я сначала открываю gitk
и прошу его показать мне переданные коммиты:
gitk git-svn..
Это предполагает, что ваше восходящее SVN-репо действительно называется git-svn
, поскольку Tomas упоминает. Если вы не знаете о своем восходящем SVN-репо, просто запустите gitk
и найдите ветку, которую вы не создали (и звучит Git -SVN-ish).