2016-10-28 12 views
9

Когда файл открыт в редакторе (например, Sublime или Atom), и файл редактируется вне редактора, редактор неизменно отказывается обновлять отображаемый файл. Эта ситуация встречается редко, поскольку, скорее всего, будет использоваться только один инструмент для редактирования файла в определенный период времени. Это явно не проблема, когда файл только для чтения. Например, при чтении системного журнала ошибок файл будет обновляться по мере запуска системы и может иметь новый журнал ошибок, но файл журнала не будет редактироваться, чтобы он не вызывал конфликт.Есть ли способ предотвратить случайную перезапись после git pull из-за того, что редактор не обновляется автоматически?

Однако это вызывает проблемы, когда файл обновляется на git pull.

Когда человек извлекает последние обновления для репо, он может открыть файл в редакторе, в который были внесены некоторые изменения в обновление. Если редактор не обновляет файл, файл сохраняется со старым содержимым, а любые новые изменения теряются.

Иногда бывает просто раздражать обратный ход, используя sourcetree, но когда есть несколько обновленных файлов, эта перезапись может быть незамедлительно нажата на сервер git - до появления ошибки. В настоящее время мы используем команду git log --follow -p -- file, чтобы найти и вернуть ошибку, но это невозможно, если перезапись не замечена вовремя, заставив нас скопировать строки вручную. Есть ли способ предотвратить эту перезапись в первую очередь?

+0

Решение, которое я бы использовал, - это отойти от редакторов, которые ведут себя таким образом. Большинство современных IDE (Eclipse, IntelliJ, NetBeans и т. Д.) Не имеют этой проблемы. –

+0

Любой вариант для PHP? (и лучше быть свободным, поэтому PHPStorm не вариант) – cytsunny

+0

Я думаю, что видел это даже в IntelliJ несколько раз, но это никогда не было проблемой, достаточно большой, чтобы волноваться. Я не знаю, какой редактор вы могли бы использовать для PHP, что бы избежать этого. Notepad ++, похоже, очень хорошо себя ведет в этой области, то есть он не питается вашими обновлениями. –

ответ

4

Когда папка открыта редактором (главным образом, Sublime или Atom в нашей команде), а код редактируется вне редактора, иногда содержимое в редакторе обновляется, но иногда это не так.

Это именно то, что обсуждается в Atom issue 3594

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

У вас такая же проблема reported in this thread для SublimeText. Как упоминалось в that thread, эта проблема еще более актуальна для Windows при доступе к файлу через сетевой ресурс.
File Reloader может помочь, но не обнаруживает внешние изменения.

SublimeText thread упоминает установку (2016)

{ "always_prompt_for_file_reload": true } 

Но это не может помочь, когда есть изменения, как в редакторе, так и в сохраненном файле: editor like Visual Studio Code решить это с помощью:

Если с обеих сторон (с диска и через редактор) есть изменения, когда вы пытаетесь сохранить файл с помощью VSCode, редактор предупредит вас об этой ситуации, и сравнение файлов позволит вам решить, что делать.

Вот почему, с SublimeText (в добавление настройки "always_prompt_for_file_reload"), вы, возможно, потребуется FileDiff plugin.
Это позволит сравниваете файл с сохраненными:

https://forum.sublimetext.com/uploads/default/original/3X/5/a/5a59f922e26fea423cc31ae5c1d744eca8205143.png

1

Есть ли способ, чтобы предотвратить такого рода перезапись на первом месте?

Да, поскольку ваши редакторы не выполняют обнаружение путем прерывания из файловой системы, затем выполняют их путем периодического опроса файловой системы как каждые 3 секунды.

При программировании на Notepad ++ эта ошибка очень очевидна, поэтому необходим плагин опроса, который периодически проверяет файловую систему на изменения в файлах.

Для Sublime Text и Notepad++, плагины являются:

  1. https://packagecontrol.io/packages/Auto%20Refresh
  2. https://superuser.com/a/592913/458103 (монитор документов => начинают контролировать)

Я использовал их в течение длительного времени, из-за для программирования с тем же файлом на нескольких текстовых редакторах/IDE. Затем, когда вы меняете редактор, я больше всего теряю свою работу, потому что они не перезагружают файлы из файловой системы. Однако после установки упомянутых плагинов я больше никогда не сталкивался с этой проблемой или не замечал проблем с производительностью из-за периодической перезагрузки.