GitExtensions - был баг в Mono

Разработка на C# под linux
 

Второй заход

https://github.com/mono/mono/pull/2273

Вопрос в том, как же всё-таки это работало в reference sources (ведь там такой же код)
Куда в .NET пропадает XML-declaration? он кодируется или кто-то его убирает?

Что делать дальше?
сделать патч для mono, чтобы собрать в gentoo/dotnet.
проблема в том, что я не умею собирать mono (в частности в gentoo)
учись? или ищи работу?

В итоге, мне предложили написать юнит-тесты, которые бы работали на Windows, не работали на mono,
а после применения моего патча начинали бы работать на Mono

Работу на Windows я могу проверить на AppHb.com, если написать соответствующее web-приложение.
Работу такого же приложения я могу проверить на втором сайте (это чтобы приложение не переписывать под консольный вариант)
    Если я запущу тестовый пример на этих двух хостингах и получу разные результаты - значит старая версия Mono работает неправильно. Но мне-то надо проверить текущую версию mono...

bountysource - как им пользоваться?
как пользоваться NUnit-ом в gentoo-билдах?

добавить в файл проекта Git.UI строчки (а поможет это чему?)
<CustomToolNamespace>GitUI.Properties</CustomToolNamespace>
<LogicalName>GitUI.Resources.resources</LogicalName>

добавить в файл Properties/Resources.Designer.cs
слово Partial (вроде оно там и так есть)

изменить namespace файла Properties/Resources.Custom.cs
(вроде с ним тоже всё ок)

- выяснял, почему FileSystemWatcher выдаёт ошибку с HashTable
подумал, что для того, чтобы работал плагин "Show in Github в monodevelop",
нужно, чтобы он видел где находится репозиторий на github
для текущего файла исходников.

Это можно было бы орагнизовать, если смонтировать при помощи overlayfs
репозиторий git
/var/calculate/remote/distfiles/egit-src/mono.git/
на исходники
/var/tmp/portage/dev-lang/mono-4.2.1.91-r1/work/mono-4.2.1/
и там и там есть файл
mcs/class/System/System.IO/FileSystemWatcher.cs

/etc/fstab
overlay /merged overlay noauto,x-systemd.automount,lowerdir=/lower,upperdir=/upper,workdir=/work 0 0

mount -t overlayfs -o [mount options] overlayfs [mountpoint for merged system]
Where [mount options] can be:
lowerdir=somedir: lowerdir is the directory you're going to lay your new filesystem over, if there are duplicates these get overwritten by (actually, hidden in favor of) upperdir's version
upperdir=somedir: upperdir is the directory you want to overlay lowerdir with. If duplicate filenames exist in lowerdir and upperdir, upperdir's version takes precedence.
standard mount options. The only one I've seen from code is ro/rw, but you can experiment.

/var/calculate/remote/distfiles/egit-src/gitextensions.git
/var/lib/layman/dotnet/dev-util/GitExtensions/files/env_vars.patch
cd /var/calculate/remote/distfiles/egit-src/gitextensions.git
patch -p 1 -i /var/lib/layman/dotnet/dev-util/GitExtensions/files/env_vars.patch

Как получить патч для указанных:
файла
SHA1 начальной ревизии
SHA1 конечной ревизии
Plugins/Gerrit/FormGerritPublish.cs
GitUI/Properties/Resources.resx
git diff 527cfc9c363873920bb30229e9b2835918e27205 115249b235422fa3ef3b4f4c770a8245140bfc2a -- Plugins/Gerrit/FormGerritPublish.cs >/var/lib/layman/dotnet/dev-util/GitExtensions/files/unused_variable.patch
git diff 527cfc9c363873920bb30229e9b2835918e27205 115249b235422fa3ef3b4f4c770a8245140bfc2a -- GitUI/Properties/Resources.resx >/var/lib/layman/dotnet/dev-util/GitExtensions/files/slash_in_resources.patch
/var/tmp/portage/dev-lang/mono-4.2.1.91-r1/work/mono-4.2.1/mcs/class/System/System.IO/FileSystemWatcher.cs

Первый заход

windowspositions
- это один из узлов в XML-дереве:
    <setting name="WindowPositions" serializeAs="Xml">
        <value>
        </value>
    </setting>
вопросы:
    1) что означает здесь атрибут "serializeAs" ?
    2) где задокументировано/описано использование тега settings?
        (если нигде, то что понятно про этот тег из исходных текстов?)
Просто наблюдение:
сериализованный объект класса WindowPositionList представляет собой отдельный XML (со своим заголовком)
    Почему ты думаешь, что тут была выполнена сериализация?
The only change made recently is the [iseriliazable]. 2.48 doesnt have this attribute.

none of XmlSerializer, DataContractSerializer, JavaScriptSerializer, JSON.NET or protobuf-net really care about SerializableAttribute.
http://stackoverflow.com/questions/12461321/what-does-system-serializableattribute-do
SerialiableAttribute actually maps to a CLI .class flag, serializable
This doesn't change the meaning, but : as a novelty fact, SerializableAttribute is not actually implemented as an attribute.

Apply the SerializableAttribute attribute even if the class also implements the ISerializable interface to control the serialization process.
hotkeys converts itself to xml in method SaveSettings, in HotkeySettingsManager.cs, at line 117