Як побачити, що буде оновлено з репозиторію перед тим, як видавати команду “svn update”?


115

Я вніс зміни в численні файли до сховища SVN з Eclipse.

Потім я переходжу до каталогу веб-сайтів у вікні linux, де хочу оновити ці зміни з репозиторію до каталогу, що знаходиться там.

Я хочу сказати "svn update project100", який буде оновлювати каталоги в "project100" з усіма доданими та зміненими файлами тощо.

ЗАРАЗ, я не хочу обов'язково оновлювати зміни, які я не робив. Тому я думав, що можу сказати "svn status project100", але коли я це роблю, я отримую зовсім інший перелік змін, які будуть внесені, жодна з моїх не є в списку, що не дивно.

Отже, щоб бути впевненим, що лише мої зміни оновлюються у веб-каталозі, я змушений переходити до кожного каталогу, де я знаю, що я вніс зміни, і явно оновлюю лише ті файли, наприклад, "svn update newfile1.php" тощо. що стомлює.

Чи може хтось пролити тут будь-яке світло на стандартну робочу процедуру, а саме як мені отримати точний перелік усіх змін, які мають бути внесені, перш ніж виконати команду "оновлення svn"? Я подумав, що це команда "статус".

Відповіді:


167

Спробуйте:

svn status --show-updates

або (те саме, але коротше):

svn status -u

9
або коротше: svn st -u
Kenyakorn Ketsombut

Що означають знаки Х у виході?
ІгорГанапольський

1
Крім того, використовуйте: svn status -q -u... Показує лише зміни оновлення та локальні зміни, які відносяться до файлів, що належать до сховища. Ви не отримуєте знаків запитання (?) З файлів, що не містять сховища.
буде

56

Залежно від того, що ви хочете знати між робочою копією та останнім сховищем сервера svn, не оновлюючи локальну робочу копію, ось що ви можете зробити:

якщо ви хочете знати, що було змінено у сховищі сервера svn, запустіть команду:

$ svn st -u

якщо ви хочете знати, чи був змінений той самий файл як у вашій локальній робочій копії, так і у сховищі сервера svn, запустіть команду:

$ svn st -u | grep -E '^M {7}\*'

якщо ви хочете, щоб список файлів змінився між певною версією та HEAD, запустіть команду:

$ svn diff -r revisionNumber:HEAD --summarize

якщо ви хочете отримати список файлів, змінених між вертикулярними версіями, запустіть команду:

$ svn diff -r revisionNumber:anotherRevisionNumber --summarize

якщо ви хочете побачити, що буде оновлено (без фактичного оновлення), запустіть команду:

$ svn merge --dry-run -r BASE:HEAD .

якщо ви хочете знати, який вміст певного файлу було змінено в сховищі сервера svn порівняно з вашою робочою копією, запустіть команду:

$ svn diff -r BASE:HEAD ./pathToYour/file

якщо ви хочете знати, який вміст усіх файлів змінено у сховищі сервера svn порівняно з вашою робочою копією, запустіть команду:

$ svn diff -r BASE:HEAD .

43

Ви можете побачити, що буде оновлено (без фактичного оновлення), видавши:

svn merge --dry-run -r BASE:HEAD .

Детальніше тут .


Вище мені не вийшло, довелося бігтиsvn merge --dry-run --revision BASE:HEAD .
Знаркус

3
Отримання "svn: E195020: Не вдається об'єднатись у робочу копію змішаної редакції [16032: 16061]; спробуйте оновити спочатку"
Hubert Grzeskowiak

Чудова відповідь - шкода, що це не працює на змішаній редакції робочих копій. Це навчиться мене
Джерард ОНІЛ

2
@HubertGrzeskowiak - Я люблю іронію q: how do I ... without doing an update?a: first, do an update, then ...:) :) :)
Jesse Chisholm

17

Це те, що я шукав. Спершу перевірив Google, але в svn helpрезультаті перейшов на мене :)

svn diff -r BASE:HEAD .


0

Ви можете використовувати "svn diff", щоб побачити різницю між вашою робочою копією та сховищем.


9
Неправильно. Вони перераховують лише відмінності між вами та останнім разом, коли ви синхронізувались із сховищем. Ви не побачите жодних відмінностей, які інші люди взяли до сховища тим часом. ОП хоче знати , що ці зміни, не застосовуючи їх черезsvn update
dland

@Andrew мав намір запропонувати OP запустити "svn diff -r HEAD URL", щоб побачити різницю від перевірених файлів до тих, що зареєстровані як HEAD або версійна версія у сховищі.
Мак

0

Теоретично ви можете внести всі зміни у галузь, яку ви створили для власного використання. Тоді ви будете досить впевнені, що ви єдиний скоїли це.

Розробка функцій IMHO повинна здійснюватися так.

Потім ви могли оновити цю цільову машину з цієї гілки замість магістралі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.