pidgin/pidgin

Use G_DECLARE_DERIVABLE_TYPE for PurpleConversation and additional cleanups

The setters for PurpleConversation are kind of crappy because of the
conversation cache in the purple_conversations api, which we'll address at a
later time.

Testing Done:
Compiled and ran locally, parted a chat and just signed out to verify no new issues.

Reviewed at https://reviews.imfreedom.org/r/613/
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
]>
<chapter id="chapter-using-mercurial">
<title>Using Pidgin Mercurial</title>
<sect2 id="introduction">
<title>Introduction</title>
<para>
These instructions will help you clone a copy of any of the Pidgin
related <ulink url="https://mercurial-scm.org">Mercurial</ulink>
repositories and keep them up to date.
</para>
<note>
These instructions are just for cloning/updating the Pidgin repositories.
If you're looking for documentation on contributing code, please see the
<link linkend="chapter-code-contributions">Code Contributions</link>
page after you have successfully cloned the repository from this page.
</note>
</sect2>
<sect2 id="cloning">
<title>Cloning</title>
<para>
In Distributed Version Control, <emphasis>cloning</emphasis> is the act
of acquiring a source repository. All of the Pidgin repositories are
hosted in Mercurial at
<ulink url="https://keep.imfreedom.org/">keep.imfreedom.org</ulink>. To
clone them you will be using the command
<code>hg clone &lt;URL&gt;</code>. The specific URL can be looked up in
the table below depending what you are trying to clone.
</para>
<note>
If you are trying build Pidgin 3, you can just clone that repository and
the build system will automatically clone the other repositories for you.
</note>
<table label="Repository URLs">
<tgroup cols="3">
<thead>
<row>
<entry>Name</entry>
<entry>URL</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>GPlugin</entry>
<entry>
<ulink url="https://keep.imfreedom.org/gplugin/gplugin"></ulink>
</entry>
<entry>The plugin library used in Pidgin 3.</entry>
</row>
<row>
<entry>LibGNT</entry>
<entry>
<ulink url="https://keep.imfreedom.org/libgnt/libgnt"></ulink>
</entry>
<entry>The toolkit library used in Finch.</entry>
</row>
<row>
<entry>Pidgin</entry>
<entry>
<ulink url="https://keep.imfreedom.org/pidgin/pidgin"></ulink>
</entry>
<entry>
The main pidgin repository that contains LibPurple, Pidgin, and
Finch.
</entry>
</row>
<row>
<entry>Talkatu</entry>
<entry>
<ulink url="https://keep.imfreedom.org/talkatu/talkatu"></ulink>
</entry>
<entry>The conversation widgets used in Pidgin 3.</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
You can see an example clone of Talkatu below but all of the repositories
will output a similar result.
</para>
<programlisting language="screen">
$ hg clone https://keep.imfreedom.org/talkatu/talkatu
destination directory: talkatu
requesting all changes
adding changesets
adding manifests
adding file changes
added 348 changesets with 1074 changes to 268 files
new changesets 0feed1461a4a:f0fda4aace2d
updating to branch default
109 files updated, 0 files merged, 0 files removed, 0 files unresolved
</programlisting>
</sect2>
<sect2 id="updating">
<title>Keeping Your Clone Up to Date</title>
<para>
If you are just tracking Pidgin development and are not contributing,
chances are you are still on the <emphasis>default</emphasis> branch. But
let's make sure, and run <code>hg update default</code>. This will change
to the <emphasis>default</emphasis> branch if you're not currently on it
or do nothing.
</para>
<para>
Now that you are on the <emphasis>default</emphasis> branch, you can
simply run <code>hg pull --update</code> to pull in all new changes and
update your local copy. Please note, if you accidentally run
<code>hg pull</code>, that is without the update, a subsequent
<code>hg pull --update</code> will not update to the latest revisions as
this invocation of <code>hg pull</code> did not find any new revisions. To
properly update in this scenario, you'll need to run
<code>hg update</code>.
</para>
<para>
Below is an example of updating Talkatu when it's already up to date.
</para>
<programlisting>
$ hg pull --update
pulling from https://keep.imfreedom.org/talkatu/talkatu
searching for changes
no changes found
</programlisting>
<para>
At this point you can review the code, build it, patch it, etc.
</para>
</sect2>
</chapter>