***UPDATED 8-3-2017: New build process, see below
If you'll notice, sometimes it takes a long time for submissions to the project to actually get committed to the main repository. Things get lost in the shuffle, it wasn't clear that this was the final version, the link to the asset died, etc. If you just
post your submission on the forums, it might be a while before you see it in the freedoom autobuilds.

In order to get your submission committed as fast as possible, you could try the method of submitting changes directly to the repository, through what is known as a "pull request".

This guide assumes that your asset is ready to submit. If you're not certain, then post it in the appropriate thread for feedback.

IMPORTANT: Please read the submission rules first:

Pull Request Instructions:

Step 1:

Register for a github account if you haven't already: Link

Step 2:

Once you have registered and authorized your account, what you want to do is create a "Fork" of the main freedoom repository (link). What this does is give you your own copy of the freedoom repository to make changes to, and it stores it on your github account.

To do this, click "Fork" at the top right of the main freedoom repository page.

Step 3:

The process might take a while. Once it is finished, what you want to do next is download and install the GitHub Desktop client: Link

Step 4:

Once the Github Desktop client is finished installing and you have logged in to your account, you want to click the "Add repository" button in the upper right, select "clone", then select your freedoom fork and click "clone repository".

Then, select a folder you wish to clone it into, then click OK:

This process might take a while. Depending on the time of day, GitHub might be very slow.

Step 5:

Once the clone process is completed, you now have a full copy of the freedoom repository on your computer to work from. Navigate to the directory where the repository is stored:

Step 6:

edit: Symlinks have been removed! yay!

Just drop your submission into the appropriate folder (sprites, patches, etc.)


Step 7:

Now, switch back to the GitHub application. If you'll notice, you'll see that it has kept track of your changes, and lists the files that have been modified.

If you screwed something up and you need to fix something, or don't want to commit a certain file, just right click the file and select "Discard changes"
Step 8:

If everything looks good here, what you want to do next is build freedoom with your changes in place, to make sure everything looks right and it doesn't break the build process. The instructions for setting this up are below.

Step 9:

If you're satisfied that you've included everything that you want to submit, you can then "commit" your changes to your repository. Enter in a brief descriptive title, and and a description of what your submitting and any changes that you have made.

IMPORTANT: For the title, put in which type of submission it is followed by a short description (i.e.: "sprites: new rocket launcher", "patches: new sky patches", etc.).

If you are committing multiple different assets (say, rocket launcher sprites and shotgun sprites), please make individual commits for each. You can select which assets get put into each commit by checking the checkboxes on the left.

If this is a new asset that is replacing an already existing asset, make sure to list what you are replacing.

If this is fixing an issue documented on the repository (link), then include the issue number with the "#" sign (e.g. "issue #150")

Step 10:

Once your satisfied with that, then click the "Commit to Master" button.

If right after this, you realized that you didn't want to make that commit, you can click the settings button in the upper right corner, and click "Undo most recent commit"

Step 11:

Once the changes are committed, you can then finally create the pull request. Just click the button in the upper right.

This should be filled out automatically if you have a single commit. Tf you have multiple commits, then you should summarize them in the title and description.

Step 12:

Click "Send Pull Request"! That's it, it's all done.

You can view the pull request's status online to see if it's been merged yet:

Once the pull request has been merged, you can see your changes in the latest freedoom autobuilds (daily builds at 2:30am GMT)

**************************************   **UPDATED 8-3-2017**
Building and testing your submission.

Before you commit your changes, you might want to test to make sure everything looks right and it doesn't break the build process.

Cygwin is usually a pain to set up for building freedoom, so I've come up with a relatively painless way to setup Cygwin that is ready to build freedoom.

Step 1:

Download the MobaXterm installer, and install it.

MobaXterm is a cygwin shell replacement that I find a bit easier to set up. It also allows plugins.

Step 2: **UPDATED 8-3-2017**
  Download my custom deutex plugin.

This allows you to use deutex without having to build it from source.

Copy it to the directory where you installed MobaXterm. This should be "C:\Program Files (x86)\Mobatek\MobaXterm Personal Edition"

Step 3:

Open up MobaXterm, and start a "local terminal"

Step 4:

At the local shell, copy and paste these strings:

apt-get install libpng16 make python python-pip pip install pillow

this will install all the additional packages needed to build Freedoom.   Step 5:

Once all the packages are installed, change your directory (using the command "cd") to where your local copy of the repository is stored. By default, this should should be "MyDocuments/GitHub/freedoom/"

Note: if it's stored in a place other than your desktop or your documents, you'll have to go through the windows directory structure by going to "/cygdrive" first.
Step 6:

Type "make". That's it.

If you're building after already having done another build, type "make clean" first. This will get rid of all the previously built files.
Step 7:

Now that the files are made, you should find the built wads in the "wads" folder in your repository. Run these with your favorite source port and make sure your changes are in place and that everything looks right.