Windows API: То, что первое сообщение является окном, как гарантируют, получит?

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

, Если у Вас есть бэкенд DB Berkley, если Вы не уверены в том, что Ваш бэкенд, или если Вы изменяете номера версий SVN, Вы собираетесь хотеть использовать svnadmin, чтобы вывести Ваш старый репозиторий и загрузить его в Ваш новый репозиторий. Используя svnadmin dump даст Вам единственное резервное копирование файлов, которое можно скопировать в новую систему. Тогда можно создать новый (пустой) репозиторий и использование svnadmin load, который по существу воспроизведет все фиксации наряду с его метаданными (автор, метка времени, и т.д.).

можно читать больше о процессе дампа/загрузки здесь:

http://svnbook.red-bean.com/en/1.8/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate

кроме того, если Вы делаете svnadmin load, удостоверяется, что Вы используете --force-uuid опция, или иначе люди собираются иметь проблемы при переключении на новый репозиторий. Подрывная деятельность использует UUID для идентификации репозитория внутренне, и это не позволит Вам переключить рабочую копию на различный репозиторий.

, Если у Вас нет доступа к файловой системе, могут быть другие сторонние опции там (или можно записать что-то) чтобы помочь Вам мигрировать: по существу необходимо было бы использовать журнал svn, чтобы воспроизвести каждый пересмотр на новом репозитории, и затем согласовать метаданные впоследствии. Вам будут нужны pre-revprop-change и сценарии рычага post-revprop-change на месте, чтобы сделать это, какой вид принимает доступ к файловой системе, таким образом, YMMV. Или, если Вы не хотите сохранять историю, можно использовать рабочую копию для импорта в новый репозиторий. Но надо надеяться это не имеет место.

7
задан Agnel Kurian 16 November 2009 в 10:27
поделиться

3 ответа

Вы сами ответили на свой вопрос. Я тоже вижу WM_GETMINMAXINFO в Windows XP SP3, затем WM_NCCREATE, WM_NCCALCSIZE и, наконец, WM_CREATE до того, как CreateWindowEx () даже вернет дескриптор создаваемого окна. Какой мусор »

Общий ответ состоит в том, что Microsoft некомпетентна, когда дело доходит до упорядоченного создания и уничтожения объектов. Они ошибаются с Windows, с COM и с драйверами устройств. Всегда есть некоторая уловка-22, когда объект наполовину создан или наполовину разрушен, что требует некоторого извилистого решения для производства надежного продукта.

7
ответ дан 6 December 2019 в 07:06
поделиться

WM_NCCREATE на самом деле самое первое сообщение, которое ваше окно получит , которое придет до WM_CREATE . Это связано с созданием неклиентской области (например, строки заголовка, системного меню и т. Д.), Отсюда префикс NC .

WM_GETMINMAXINFO отправляется перед размером окна / позиция изменяется и может прибыть до WM_CREATE (подробнее см. ниже).

Сообщение WM_CREATE отправляется до того, как CreateWindow () вернется , поэтому вы можете гарантировать, что инициализация каждого окна была выполнена к этому моменту. Процесс вашего окна получит WM_CREATE после создания окна, но до того, как окно станет видимым ( WM_SHOWWINDOW ).

Фактически,

15
ответ дан 6 December 2019 в 07:06
поделиться

Вы можете использовать spy ++, который поставляется с Visual Studio, чтобы увидеть, какие сообщения генерируются при запуске приложения или окна.

1
ответ дан 6 December 2019 в 07:06
поделиться
Другие вопросы по тегам:

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