исследование истории удаленного файла

Предупреждение: Деление на ноль

Предупреждающее сообщение «Подразделение на ноль» является одним из наиболее часто задаваемых вопросов среди новых разработчиков PHP. Эта ошибка не вызовет исключения, поэтому некоторые разработчики будут иногда подавлять предупреждение, добавляя оператор подавления ошибок @ перед выражением. Например:

$value = @(2 / 0);

Но, как и при любом предупреждении, наилучшим подходом было бы отслеживать причину предупреждения и разрешать его. Причина предупреждения будет происходить из любого экземпляра, где вы пытаетесь разделить на 0, переменную, равную 0, или переменную, которая не была назначена (поскольку NULL == 0), потому что результат будет «неопределенным».

Чтобы исправить это предупреждение, вы должны переписать свое выражение, чтобы проверить, что значение не равно 0, если оно есть, сделать что-то еще. Если значение равно нулю, вы не должны делиться или изменять значение на 1, а затем делить так, что деление приводит к эквиваленту того, что он разделен только дополнительной переменной.

if ( $var1 == 0 ) { // check if var1 equals zero
    $var1 = 1; // var1 equaled zero so change var1 to equal one instead
    $var3 = ($var2 / $var1); // divide var1/var2 ie. 1/1
} else {
    $var3 = ($var2 / $var1); // if var1 does not equal zero, divide
}

Вопросы, относящиеся:

155
задан Derrick Rice 6 June 2013 в 18:05
поделиться

7 ответов

Для получения журнала удаленного файла используйте

svn log -r lastrevisionthefileexisted

, Если Вы хотите возродить файл и сохранить его историю версий, используйте

svn copy url/of/file@lastrevisionthefileexisted -r lastrevisionthefileexisted path/to/workingcopy/file

, Если Вы просто хотите содержание файла, но неимеющий версию (например, для быстрого контроля), используйте

svn cat url/of/file@lastrevisionthefileexisted -r latrevisionthefileexisted > file

В любом случае, НЕ израсходуйте 'svn' для возвращения удаленного файла!

80
ответ дан Stefan 23 November 2019 в 21:54
поделиться

Необходимо было бы определить пересмотр.

svn log -r <revision> <deleted file>
1
ответ дан Jack M. 23 November 2019 в 21:54
поделиться

А-ч, так как я учусь использовать Базар, это - что-то, что я попробовал. Без успеха кажется, что Вы не можете журнал и аннотировать удаленные файлы в настоящее время... :-(

Испытанный:

> bzr log -r 3 Stuff/ErrorParser.hta
bzr: ERROR: Path does not have any revision history: Stuff/ErrorParser.hta

, но любопытно (и к счастью) я могу сделать:

> bzr cat -r 3 Stuff/ErrorParser.hta

и:

> bzr diff -r 2..3 Stuff/ErrorParser.hta

и, как предложено в ошибке выше:

> bzr log -v | grep -B 1 ErrorParser

(корректируются -B (--before-context) параметр по мере необходимости).

4
ответ дан PhiLho 23 November 2019 в 21:54
поделиться

В дополнение к ответу Dustin, если Вы просто хотите исследовать содержание и не проверить его, в его примере, можно сделать:

$ git show 8d4a1f^:slosh.tac

: разделяет пересмотр и путь в том пересмотре, эффективно прося определенный путь в определенном пересмотре.

8
ответ дан Pieter 23 November 2019 в 21:54
поделиться

Это - ничего особенно специального в мерзавце. Если Вы знаете название файла, можно узнать изменение, которое удалило его с журналом:

git log -n 1 -- filename

Тогда можно использовать ту фиксацию для получения файла, поскольку это существовало перед удалением.

git checkout [last_revision]^ filename

Пример:

dhcp-120:/tmp/slosh 587% ls -l slosh.tac
ls: slosh.tac: No such file or directory
dhcp-120:/tmp/slosh 588% git log -n 1 -- slosh.tac
commit 8d4a1f1a94e4aa37c1cb9d329a140d08eec1b587
Author: Dustin Sallings <dustin@spy.net>
Date:   Mon Dec 15 11:25:00 2008 -0800

    Get rid of a .conf and replace it with .tac.
dhcp-120:/tmp/slosh 589% git checkout 8d4a1f^ slosh.tac
dhcp-120:/tmp/slosh 590% ll slosh.tac
-rw-------  1 dustin  wheel  822 Dec 30 12:52 slosh.tac

Примечание, что это на самом деле не откладывает файл в управлении версиями. Это просто отбрасывает файл, поскольку это существовало в своем конечном состоянии в текущее местоположение. Можно тогда добавить его или просто осмотреть его или безотносительно от той точки.

27
ответ дан Dustin 23 November 2019 в 21:54
поделиться

Во-первых, найдите число пересмотра, где файл был удален:

svn log -v > log.txt

Тогда взгляд в log.txt (не гуру SVN, таким образом, я не знаю лучший путь) для строки с

D <deleted file>

и видят, какой пересмотр, который был. Затем как в других ответах, возродите файл с помощью предыдущего пересмотра.

91
ответ дан mjy 23 November 2019 в 21:54
поделиться

Когда Вы хотите посмотреть на старые файлы, действительно необходимо знать различие между:

svn cat http://server/svn/project/file -r 1234

и

svn cat http://server/svn/project/file@1234

первая версия смотрит на путь, который является теперь доступен как http://server/svn/project/file и получает тот файл, поскольку это был в пересмотре 1234. (Таким образом, этот синтаксис делает не работа после того, как файл удалит).

второй синтаксис получает файл, который был доступен как http://server/svn/project/file в пересмотре 1234. Таким образом, этот синтаксис ДЕЛАЕТ работа над удаленными файлами.

можно даже объединить эти методы для получения файла, который был доступен в пересмотре 2345 как http://server/svn/project/file , но с содержанием, поскольку он имел в 1234 с:

svn cat http://server/svn/project/file@2345 -r 1234
146
ответ дан Bert Huijben 23 November 2019 в 21:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: