Подтвердить что ты не робот

Как увидеть изменения 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.

4b9b3361

Ответ 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).