Index by title

Help With Your Account

Accounts here are very easy. Here's where to go if you need help.

Creating An Account

Click the "register" link in the upper-right of your screen.

Forgot Your Password

Click on "Sign in" in the upper right corner, then "Lost password".

Common Account Across Projects

Your account here on software.complete.org is valid automatically for all projects hosted here. You won't have to enter your password more than once.

You Must Login For...

You must login before you can:


The 5-Minute Guide to Contributing With Darcs

Welcome. This will be fast. This guide describes how you can contribute to software projects here using the Darcs version-control system.

Darcs is a distributed VCS, so you do not need to be granted commit access in advance. You can hack, commit, and then send in your patches without permission from anyone.

Step 1: Get Darcs

If you are using Debian, you can simply

apt-get install darcs
. Otherwise, you can download Darcs source or binaries for other Linux, Unix, Windows, and Mac operating systems from the Darcs homepage at http://www.darcs.net/. Instructions will vary depending on your operating system, and are posted on the Darcs site.

Step 2: Tell Darcs who you are

On Unix:

mkdir ~/.darcs
echo "My Name <myemail@example.com>" > ~/.darcs/author

On Windows, this will go under a different location. You can actually omit it and put it in _darcs/prefs/author after you check out the source if you like.

You can even skip this step entirely, but you'll be annoyed because Darcs will ask who you are each time you make a commit if you skip this step.

Step 3: Check Out The Source

You'll run:

darcs get --partial http://darcs.complete.org/projectname
cd projectname

Replace "projectname" with the Darcs name for your project. These names will be given on the project page on this site. One example would be:

darcs get --partial http://darcs.complete.org/offlineimap
cd offlineimap

The [/ Software.Complete.Org project list] and Darcs.Complete.Org project list may be of use to you.

Step 4: Hack

Make your changes. After modifying a file, run:

darcs record -a

You will be asked for a patch name, which is a one-line summary of what you just did. You can, and should, also enter a longer description.

If you add a new file, you'll need to tell Darcs about it before you can use

record
:

darcs add filename

If you rename a file, tell Darcs what you did:

darcs mv oldfilename newfilename

And finally, if you delete a file, Darcs will automatically detect that and send it in as part of the record.

You can leave off the

-a
to record, which will cause Darcs to ask you about each potential change. The
-a
means "all", which tells record to commit all changes you've made.

Step 5: Submit

Once you're done with your feature, submit it to the software manager(s) for consideration. Simply run:

darcs send -a

All version-control history, including your name, commit messages, individual changes, etc. will be e-mailed to the project submission address. Darcs automatically figures out that address from the project repository on complete.org. Darcs also can tell when/if your patches are integrated upstream, and always sends the minimum patch set necessary to bring upstream in sync with your repo.

This, of course, requires a working email setup on your system. You can use

darcs send -o filename
to write a patch bundle to a separate file, which you can then send in manually if email doesn't work for you.

Step 6: Update

If you follow a project for more than a few hours, you'll want to periodically integrate changes from the upstream repository into your local copy.

darcs pull -av

will do this.

Advanced Tips & Tricks

You may also be interested in some of these.

Learning About Commands

darcs --help
will show you a list of commands.
darcs command --help
will show you information about each individual command.

Looking At Changes

You can, of course, use the project timeline here on the website. But for more detailed information, try a command such as:

darcs changes -s | less

You can use

-v
instead of
-s
to see diffs as well.

Your history may not go all the way back to the creation of the project. If you need to do that, check it out again without using

--partial
to
darcs get
. The partial option tells it to download a recent checkpoint, and then play forward only the patches from there. If you leave it off, you will download every single change ever made to the project. This can take quite awhile, consume a lot of disk space, etc. So you should only do that if you really need it -- which will be rarely.

For More Information

Go to the Darcs homepage. There is also a very helpful Wiki and online community on IRC.


The 5-Minute Guide to Contributing With Git

The 5-Minute Guide to Contributing With GitStep 1: Get GitStep 2: Configure GitStep 3: Check Out The SourceStep 4: HackStep 5: SubmitStep 6: UpdateAdvanced Tips & TricksLearning About CommandsLooking At ChangesPretty ColorsFor More Information

Welcome. This will be fast. This guide describes how you can contribute to software projects here using the Git version-control system.

Git is a distributed VCS, so you do not need to be granted commit access in advance. You can hack, commit, and then send in your patches without permission from anyone.

Step 1: Get Git

These instructions assume you have git 1.5.1 or above.

Step 2: Configure Git

Now we'll run a few commands to teach Git about you:

git-config --global user.name "My Name" 
git-config --global user.email "myemail@example.com" 

If you aren't on Unix, or if you're not going to use sendmail to send out mail, configure email with your SMTP server information:

git-config --global sendemail.smtpserver smtp.example.com

If your server requires you to log in, you'll also want to give:

git-config --global sendemail.smtpuser "myusername" 
git-config --global sendemail.smtppass "myPassWord" 

Step 3: Check Out The Source

You'll run:

git clone git://git.complete.org/projectname
cd projectname

Replace "projectname" with the Git name for your project. These names will be given on the project page on this site. One example would be:

git clone git://git.complete.org/listlike
cd listlike

The Software.Complete.Org project list and Git.Complete.Org project list may be of use to you.

If the checkout fails or hangs: you may be behind a restrictive firewall. In those cases, substitute http:// instead of git://. It'll be slower, but it'll work. In the above example, that would be: git clone http://git.complete.org/listlike

Step 4: Hack

Make your changes. After modifying a file, run:

git commit -a

An editor will be opened for you to describe what you changed. By convention, the first line will be a 1-line summary, and the rest of the lines will describe your change in more detail.

If you add a new file, you'll need to tell Git about it before you can use commit:

git add filename

To rename a file, don't just use a command such as mv. Instead, use:

git mv oldfilename newfilename

And finally, if you delete a file, use git rm filename to tell Git about it.

Then git commit -a like usual.

Step 5: Submit

Once you're done with your feature, submit it to the software manager(s) for consideration. Make sure you have run git commit -a. Then, simply run:

git format-patch -M -C --stdout origin > submit
git send-email submit

All version-control history, including your name, commit messages, individual changes, etc. will be e-mailed. You will be prompted for the address to email to. This will usually be jgoerzen AT complete DOT org

This, of course, requires a working email setup on your system. You can alternatively attach the submit file to an email using your standard mail client, which will also work.

Step 6: Update

If you follow a project for more than a few hours, you'll want to periodically integrate changes from the upstream repository into your local copy.

git fetch
git rebase origin

will do this.

Advanced Tips & Tricks

You may also be interested in some of these.

Learning About Commands

git help will show you some of the commands. git command --help will show you information about each command.

Looking At Changes

You can, of course, use the project timeline here on the website. But for more detailed information, try a command such as:

git log

Pretty Colors

If you want pretty colors in your terminal, run:

git-config --global color.branch auto
git-config --global color.diff auto
git-config --global color.interactive auto
git-config --global color.status auto
git-config --global color.pager false

I wouldn't try this on Mac or Windows, where your terminals may not be capable of showing the colors properly.

For More Information

Go to the Git homepage. Also check out:


h1.InterMapTxt

This is the place for definingInterWiki prefixes

This page was modelled after theMeatBallInterMapTxt page.
In addition, an optional comment is allowed after the mapping.

This page is interpreted in a special way by Trac, in order to support
InterWiki links in a flexible and dynamic way.

The code block after the first line separator in this page
will be interpreted as a list of InterWiki specifications:
prefix <space> URL [<space> # comment]

By using $1, $2, etc. within the URL, it is possible to create
InterWiki links which support multiple arguments, e.g. Trac:ticket:40.
The URL itself can be optionally followed by a comment,
which will subsequently be used for decorating the links
using that prefix.

New InterWiki links can be created by adding to that list, in real time.
Note however that deletions are also taken into account immediately,
so it may be better to use comments for disabling prefixes.

Also note that InterWiki prefixes are case insensitive.

List of Active Prefixes

[InterWiki]]


Prefix Definitions

PEP     http://www.python.org/peps/pep-$1.html                                       # Python Enhancement Proposal 
Trac-ML  http://thread.gmane.org/gmane.comp.version-control.subversion.trac.general/ # Message $1 in Trac Mailing List
trac-dev http://thread.gmane.org/gmane.comp.version-control.subversion.trac.devel/   # Message $1 in Trac Development Mailing List

Mercurial http://www.selenic.com/mercurial/wiki/index.cgi/ # the wiki for the Mercurial distributed SCM
RFC       http://rfc.net/rfc$1.html # IETF's RFC $1

#
# A arbitrary pick ofInterWiki prefixes...
#
Acronym          http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=
C2find           http://c2.com/cgi/wikiFindPage&value=
Cache            http://www.google.com/search?q=cache:
CPAN             http://search.cpan.org/perldoc?
DebianBug        http://bugs.debian.org/
DebianPackage    http://packages.debian.org/
Dictionary       http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=
Google           http://www.google.com/search?q=
GoogleGroups     http://groups.google.com/group/$1/msg/$2        # Message $2 in $1 Google Group
JargonFile       http://downlode.org/perl/jargon-redirect.cgi?term=
MeatBall         http://www.usemod.com/cgi-bin/mb.pl?
MetaWiki         http://sunir.org/apps/meta.pl?
MetaWikiPedia    http://meta.wikipedia.org/wiki/
MoinMoin         http://moinmoin.wikiwikiweb.de/
WhoIs            http://www.whois.sc/
Why              http://clublet.com/c/c/why?
c2Wiki             http://c2.com/cgi/wiki?
WikiPedia        http://en.wikipedia.org/wiki/

h1.InterTrac Links

Trac supports a convenient way to refer to resources of other Trac servers, from within the Wiki markup, since version 0.10.

Definitions

AnInterTrac link can be seen as a scopedTracLinks.
It is used for referring to a Trac resource
(Wiki page, changeset, ticket, ...) located in another
Trac environment.

List of ActiveInterTrac Prefixes

[InterTrac]]

Link Syntax

Simply use the name of the other Trac environment as a prefix,
followed by a colon, ending with the resource located in the other environment.

<target_environment>:TracLinks>

The other resource is specified using a regularTracLinks, of any flavor.

That target environment name is either the real name of the
environment, or an alias for it.
The aliases are defined in trac.ini (see below).
The prefix is case insensitive.

For convenience, there's also some alternative short-hand form,
where one can use an alias as an immediate prefix
for the identifier of a ticket, changeset or report:
(e.g. #T234, [T1508], [trac 1508], ...)

Examples

#!comment
 Besides the other environments run by the same server process
 (called _sibling_ environments), which are automatically detected,
Support for sibling environments has been disabled.
See http://thread.gmane.org/gmane.comp.version-control.subversion.trac.devel/157

It is necessary to setup a configuration for theInterTrac facility.
This configuration has to be done in theTracIni file, [intertrac] section.

Example configuration:
...
[intertrac]
# -- Example of setting up an alias:
t = trac

# -- Link to an external Trac:
trac.title = Edgewall's Trac for Trac
trac.url = http://projects.edgewall.com/trac
trac.compat = false

The .url is mandatory and is used for locating the other Trac.
This can be a relative URL in case that Trac environment is located
on the same server.

The .title information will be used for providing an useful tooltip
when moving the cursor over anInterTrac links.

Finally, the .compat option can be used to activate or disable
a compatbility mode: Now, given the above configuration, one could create the following links:

The generic form intertrac_prefix:module:id is translated
to the corresponding URL &lt;remote&gt;/module/id, shorthand links
are specific to some modules (e.g. !#T234 is processed by the
ticket module) and for the rest (intertrac_prefix:something),
we rely on theTracSearch#quickjump facility of the remote Trac.


Discussion

I think that the trac prefix could even be set as a default in the [intertrac]TracIni section. --CB

----
See also:TracLinks,InterWiki


Support forInterWiki links

(since [milestone:0.10])

Definition

AnInterWiki link can be used for referring to a Wiki page
located in another Wiki system, and by extension, to any object
located in any other Web application, provided a simple URL
mapping can be done.

At the extreme,InterWiki prefixes can even be used to simply introduce
links to new protocols, such as tsvn: used byTortoiseSvn.

Link Syntax

<target_wiki>(:<identifier>)+

The link is composed by the targeted Wiki (or system) name,
followed by a colon (e.g. MeatBall:@),
followed by a page specification in the target.
Note that, as forInterTrac prefixes, _InterWiki prefixes are case insensitive*.

The target Wiki URL is looked up in theInterMapTxt wiki page,
modelled afterMeatBallInterMapTxt.

In addition to traditionalInterWiki links, where the target
is simply appended to the URL,
Trac supports parametricInterWiki URLs:
identifiers $1, $2, ... in the URL
will be replaced by corresponding arguments.
The argument list is formed by splitting the page identifier
using the ":" separator.

Examples

If the following is an excerpt of theInterMapTxt page:


h1.InterMapTxt =
 This is the place for definingInterWiki prefixes ==

Currently active prefixes: [InterWiki]]

This page is modelled after theMeatBallInterMapTxt page.
In addition, an optional comment is allowed after the mapping.
----
<pre>
PEP      http://www.python.org/peps/pep-$1.html           # Python Enhancement Proposal $1 
Trac-ML  http://thread.gmane.org/gmane.comp.version-control.subversion.trac.general/$1  # Message $1 in Trac Mailing List

tsvn     tsvn:                                            # Interact withTortoiseSvn
...
MeatBall http://www.usemod.com/cgi-bin/mb.pl?
MetaWiki http://sunir.org/apps/meta.pl?
MetaWikiPedia http://meta.wikipedia.org/wiki/
MoinMoin http://moinmoin.wikiwikiweb.de/
...
</pre>
Then,

----
See also:InterTrac,InterMapTxt


The 5-Minute Guide to Contributing With Mercurial

Welcome. This will be fast. This guide describes how you can contribute to software projects here using the Mercurial version-control system.

Darcs is a distributed VCS, so you do not need to be granted commit access in advance. You can hack, commit, and then send in your patches without permission from anyone.

Step 1: Get Mercurial

If you are using Debian, you can simply

apt-get install mercurial
. Otherwise, you can download Mercurial source or binaries for other Linux, Unix, Windows, and Mac operating systems from the Mercurial homepage at http://www.selenic.com/mercurial/. Instructions will vary depending on your operating system, and are posted on the Mercurial site.

Step 2: Configure Mercurial

On Unix, you'll edit the file ~/.hgrc. On Windows, you'll edit a similar file, but it may be located elsewhere. You'll add lines like this to it:

[ui]
username = My Name <myemail@example.com>

[email]
from = myemail@example.com
method = /usr/sbin/sendmail

If you aren't on Unix, or if you're not going to use sendmail to send out mail, set up the email section like this instead of the above example:

[email]
from = myemail@example.com
method = smtp

[smtp]
host = somehost.example.com
port = 25
tls = False
username = myuser
password = mypass

You can omit all settings in the smtp section except the host if they are not relevant to you.

If you are using a recent version of Mercurial, you will also need to add the following, to enable the
email extension:

[extensions]
patchbomb =

(sic)

Step 3: Check Out The Source

You'll run:

hg clone http://hg.complete.org/projectname
cd projectname

Replace "projectname" with the Mercurial name for your project. These names will be given on the project page on this site. One example would be:

hg clone http://hg.complete.org/listlike
cd listlike

The [/ Software.Complete.Org project list] and Hg.Complete.Org project list may be of use to you.

Step 4: Hack

Make your changes. After modifying a file, run:

hg commit

An editor will be opened for you to describe what you changed. By convention, the first line will be a 1-line summary, and the rest of the lines will describe your change in more detail.

If you add a new file, you'll need to tell Mercurial about it before you can use

commit
:

hg add filename

To rename a file, don't just use a command such as

mv
. Instead, use:

hg mv oldfilename newfilename

And finally, if you delete a file, use

hg rm filename
to tell Mercurial about it.

Step 5: Submit

Once you're done with your feature, submit it to the software manager(s) for consideration. Simply run:

hg email -go

All version-control history, including your name, commit messages, individual changes, etc. will be e-mailed. You will be prompted for the address to email to.

This, of course, requires a working email setup on your system. You can use

hg bundle filename
to write a patch bundle to a separate file, which you can then send in manually if
hg email
doesn't work for you.

Step 6: Update

If you follow a project for more than a few hours, you'll want to periodically integrate changes from the upstream repository into your local copy.

hg pull -u

will do this.

If you need to merge changes, Mercurial will tell you and you can use

hg merge
to do so.

Advanced Tips & Tricks

You may also be interested in some of these.

Learning About Commands

hg --help
will show you a list of commands.
hg command --help
will show you information about each individual command.

Looking At Changes

You can, of course, use the project timeline here on the website. But for more detailed information, try a command such as:

hg log -v | less

For More Information

Go to the Mercurial homepage. There is also a very helpful Wiki and online community on IRC.


Recent Changes

[RecentChanges]]


Reporting Bugs

To report a bug, you must simply:

  1. Create a new account or log in to your existing account using the links on the upper-right corner of any page. See AccountQuestions for help with that.
  2. Pull up the project page for the project you want to submit a ticket to. See the project list if you need help finding the page.
  3. Click the New Issue button to submit a new ticket

Note: the New Issue button will not be visible if you aren't logged in.

Please DO NOT submit tickets here on site -- submit them to the specific project!

Also, bugs are NOT the appropriate place to get support. Use mailing lists or forums for that.


The Sandbox

This is just a page to practice and learnWikiFormatting.

Go ahead, edit it freely.


Viewing Revision Logs

[TracGuideToc]]

When you browse the repository, it's always possible to query the
Revision Log view corresponding to the path you're currently seeing.
This will display a list of the most recent changesets in which the
current path or any other path below it has been modified.

The Revision Log Form

It's possible to set the revision at which the revision log should
start, using the View log starting at field. An empty value
or a value of head is taken to be the newest changeset.

It's also possible to specify the revision at which the log should
stop, using the back to field. By default, it's left empty,
which means the revision log will stop as soon as 100 revisions have
been listed.

Also, there are three modes of operation of the revision log.

By default, the revision log stops on copy, which means that
whenever an Add, Copy or Rename operation is detected,
no older revision will be shown. That's very convenient when working
with branches, as one only sees the history corresponding to what
has been done on the branch.

It's also possible to indicate that one wants to see what happened
before a Copy or Rename change, by selecting the
Follow copies mode. This will cross all copies or renames changes.
Each time the name of the path changes, there will be an additional
indentation level. That way, the changes on the different paths
are easily grouped together visually.

It's even possible to go past an Add change, in order to see
if there has been a Delete change on that path, before
that Add. This mode corresponds to the mode called
Show only adds, moves and deletes.
While quite useful at times, be aware that this operation is quite
resource intensive.

Finally, there's also a checkbox Show full log messages,
which controls whether the full content of the commit log message
should be displayed for each change, or only a shortened version of it.

The Revision Log Information

For each revision log entry, there are 7 columns shown:
1. The first column contains a pair of radio buttons and should used
for selecting the old and the new revisions that will be
used for [TracRevisionLog#viewingtheactualchanges]].
2. A color code (similar to the one used for the [TracChangesetChangesetHeader]])
indicating kind of change.
Clicking on this column refreshes the revision log so that it restarts
with this change.
3. The Date at which the change was made.
4. The Revision number, displayed as @xyz.
This is a link to theTracBrowser, using that revision as the base line.
5. The Changeset number, displayed as [xyz].
This is a link to theTracChangeset view.
6. The Author of the change.
7. The Log Message, which contains either a summary or the full commit
log message, depending on the value of the Show full log messages
checkbox in the form above.

Inspecting Changes Between Revisions

The View changes... buttons (placed above and below the list
of changes, on the left side) will show the set of differences
corresponding to the aggregated changes starting from the old
revision (first radio-button) to the new revision (second
radio-button), in theTracChangeset view.

Note that the old revision doesn't need to be actually
older than the new revision: it simply gives a base
for the diff. It's therefore entirely possible to easily
generate a reverse diff, for reverting what has been done
in the given range of revisions.

Finally, if the two revisions are identical, the corresponding
changeset will be shown (same effect as clicking on column 5).

Alternative Formats

TheChangeLog Text

At the bottom of the page, there's a 'ChangeLog_ link
that will show the range of revisions as currently shown,
but as a simple text, matching the usual conventions for
ChangeLog files.

RSS Support

The revision log also provides a RSS feed to monitor the changes.
To subscribe to a RSS feed for a file or directory, open its
revision log in the browser and click the orange 'XML' icon at the bottom
of the page. For more information on RSS support in Trac, seeTracRss.

----
See also:TracBrowser,TracChangeset,TracGuide


Why are there ads on software.complete.org?

The ads are here because it costs me money to host complete.org. About $600 each year, in fact.

The ads don't pay for that; in fact, they don't even come close. But they do help, and that's important to help me save money.

I know ads can be annoying, but these are Google ads, so hopefully they shouldn't be too bad.


Editing Wiki Pages

Very simple:

  1. Pull up the project page for the project you want to submit a ticket to. See the project list if you need help finding the page.
  2. Create a new account or log in to your existing account using the links on that page. See AccountQuestions for help with that.
  3. Navigate to the page you want to edit, and click Edit.

Welcome to Software.Complete.Org

This site contains information for many projects, most hosted in Git, most managed by John Goerzen.

Starting Points

Other Links