WowAce.com Knowledge base

Repositories / Repository FAQ

Can anyone get a repository?

As long as you have an account on the Curse Network and are able to get a project approved, you'll be able to get your own repository.

How do I get my own code repository?

  1. Create a project if you haven't already, wait for an admin to approve your project.
  2. On your project page, you should go to Repository Actions -> Edit Repository.
  3. For "Repository Type", select the one you want. Currently Subversion, Git, and Mercurial are supported.
  4. In "Package As", put the name of your project's main folder. For World of Warcraft, this will be the same as your Addon's TOC.
  5. Wait roughly a minute, and your repository should be created.

How do I actually use my repository now?

Subversion

  1. You have the option of using a simple SVN password. SSH keys are far more secure, but harder to set up.
  2. To use SSH keys, follow the instructions of the article about SSH Public Keys and use the "Development url" starting with svn+ssh://.
  3. To use simple SVN password, go to http://www.curseforge.com/home/repository-authorization/edit/ and setup your SVN password. Then use the "Development url" starting with svn:// that should contains your username in lowercase. Enter your password when told to do so.
  4. svn checkout svn+ssh://[email protected]/wow/my-project/mainline/trunk MyProject (Replace with your "Development url" and project name)
  5. cd MyProject
  6. Add whatever files you want
  7. svn add *
  8. svn commit -m "Your commit message"

Git

  1. Follow the instructions of the article about SSH Public Keys.
  2. Go to your project page and it will list your "Development url". This is what you will be pushing to. ''Note: If you have a pre-1.6.2 version of Git, you can't clone the repository if it's empty, you'll have to push to it first.''
  3. mkdir MyProject (Or whatever your project's name is)
  4. cd MyProject
  5. git init
  6. git remote add origin [email protected]:wow/my-project/mainline.git (Whatever your "Development url" actually is)
  7. Add whatever files you want, commit it locally
  8. git push origin master
  9. Add some more files, commit locally
  10. git push (You only have to do this from now on)

Mercurial (HG)

  1. Follow the instructions of the article about SSH Public Keys.
  2. Go to your project page and it will list your "Development url". This is what you will be pushing to.
  3. hg clone ssh://hg.curseforge.net/wow/my-project/mainline MyProject (Replace with your "Development url" and project name)
  4. cd MyProject
  5. Edit whatever files you want, commit locally
  6. hg push

How do I get the packager to make a release or beta

You need to create a tag with your repository.

Subversion

Something along the lines of

 svn cp svn://svn.curseforge.net/wow/my-project/mainline/trunk svn://svn.curseforge.net/wow/my-project/mainline/tags/v0.1 -m "Tagging as v0.1"

Except replace

svn:~//svn.curseforge.net/wow/my-project/mainline

with your repository url and

v0.1

with the tag you want.

Git

 cd MyProject
 git tag -a v0.1 -m "Tagging as v0.1"
 git push origin master tag v0.1

Mercurial

 hg tag -m "Tagging as v0.1" v0.1
 hg push

Through the website

Go to your project page's repository section, and there will be a "tag repository" link on the side panel. Put in the name you want for your tag, and it will tag it for you.

How does the packager know whether a tag is a release or a beta?

It checks if the tag name matches the regex ^v?[0-9\.\-_]+$|release|stable. In layman's terms, it is a release if either:

  • It optionally starts with "v" and has only numbers, dots, dashes, or underscores.
  • It has 'release' in the name
  • It has 'stable' in the name

How can I specify externals? (a.k.a. embeds/libraries)

See .pkgmeta file

I tagged my project, but I don't see a file made!

Relax. The packager only runs on set intervals (approximately every 20 minutes), at which point it packages any new tags that were created since its last run. If you tag your project, give it up to 30 minutes or so (on the outside) to build the zip.

Changes to packager settings won't affect whether the packager detects a tag or not - only whether it actually packages it. If you change your packager settings before a tag is built, the new packager settings will be in effect when it goes to build the tag. There's no need to recommit a tag if you change your packaging settings, unless the tag was already built.

How do I import an existing repository?

Subversion

  1. svn checkout svn+ssh://[email protected]/wow/my-project/mainline/trunk MyProject (Replace with your "Development url" and project name)
  2. cd MyProject
  3. Add whatever files you want
  4. svn add *
  5. svn commit -m "Your commit message"

Git

  1. git clone [email protected]:wow/my-project/mainline.git
  2. Add whatever files locally and commit them.
  3. git push

Mercurial (HG)

  1. hg clone ssh://hg.curseforge.net/wow/my-project/mainline MyProject (Replace with your "Development url" and project name)
  2. cd MyProject
  3. Edit whatever files you want, commit locally
  4. hg push

Error Messages

SVN

svn: Authorization failed

Your username in the development URL (if using the non-SSH URL) should be in lowercase. Likewise when prompted for your username/password entry, your username should be lowercase.

Git

fatal: The remote end hung up unexpectedly

Replace the git://git.curseforge.net:wow/my-project/mainline.git with [email protected]:wow/my-project/mainline.git. The git://... protocol is read-only access.

Repository hooks

Your .pkgmeta file is invalid: Git repository not found: 'git://git.curseforge.net/wow/...'

Apart from the obvious problem of malformed URLs, this can also be caused by a repository that has not been pushed to yet. If you created a new library and are trying to refer to it in an external, check if you pushed any commits to the library's repository.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of adamson_g adamson_g Mar 17, 2013 at 16:40 UTC - 1 like

    I try doing svn commit and get this:
    Authentication realm: <svn://svn.bukkit.org:3690> Curseforge
    Username:
    What should i put as username?
    EDIT: Figured it out

    Last edited Mar 17, 2013 by adamson_g
  • Avatar of adamson_g adamson_g Mar 17, 2013 at 11:08 UTC - 0 likes

    what is svn? i get svn is not recognized as internal or external command operable program or batch file.

    Last edited Mar 17, 2013 by adamson_g
  • Avatar of Tokotsi Tokotsi Feb 22, 2013 at 00:26 UTC - 0 likes

    Two notes: 1) The tag explanation for how the packager determines beta or release seems to be wrong, at least for git. I tagged a git commit as v0.1_alpha which should not match the regex ^v?[0-9\.\-_]+$|release|stable since the regex should fail soon as it hit the a in alpha, but I note on my files page that the release type still got marked as beta. No big deal, but be nice to see behavior match documentation or vice versa.

    2) I'd love to see an answer to bsides question along with a explanation or link to how external repos really work. I like some of the github tools, and have some apps that unfortunately *only* work with github hosted repos (lame I know), but not sure what how I'd set up CurseForge to look at github's repo, or what I'd lose by doing so. Currently I just plan on pushing to both as needed, but not sure if the external repo functionality is a better solution.

    Nice work with all this, despite the comments. It's an impressive site and service. Thanks.

    Last edited Feb 22, 2013 by Tokotsi
  • Avatar of bsides bsides Jan 17, 2012 at 04:06 UTC - 5 likes

    Does this works with external repository? Meaning: I have a repository at github.com and want my project page to make a package from there... is it possible? Will my project be approved with only external repository? I'm asking because I don't really want to use 2 repos...

    Thank you.

  • Avatar of seahen seahen Sep 08, 2011 at 10:19 UTC - 0 likes

    SVN accepted my commits to LFGForwarder and TradeForwarder, even though I'm not a maintainer on either project, but they just disappeared. I would've expected the commits to either fail or else automatically create a branch. Where are they?

  • Avatar of Lombra Lombra Apr 08, 2011 at 01:52 UTC - 1 like

    I just happened to read this FAQ again after giving up on my repo like a year ago, because I never got it to work, and many thanks, Xinhuan, for adding the part about your user name having to be in lower case. That's what was missing for me, and I could never have figured it out myself.

  • Avatar of arith arith Aug 23, 2010 at 08:38 UTC - 0 likes

    I find the answer.

    Roles

    Artist

    • Manage project images

    Author

    • Clone closed repository
    • Commit to code repository
    • Manage english project translations
    • Manage files
    • Manage project components
    • Manage project images
    • Manage project milestones
    • Manage project pages
    • Manage project polls
    • Manage project ticket templates
    • Manage project tickets
    • Manage relationships
    • Translate project
    • View code repository

    Contributor

    • View code repository

    Documenter

    • Manage project pages

    Former author

    Maintainer

    • Clone closed repository
    • Commit to code repository
    • Manage english project translations
    • Manage files
    • Manage project components
    • Manage project images
    • Manage project milestones
    • Manage project pages
    • Manage project polls
    • Manage project ticket templates
    • Manage project tickets
    • Manage relationships
    • Translate project
    • View code repository

    Manager

    • Abandon project
    • Delete repository
    • Manage english project translations
    • Manage files
    • Manage project
    • Manage project components
    • Manage project donation info
    • Manage project images
    • Manage project milestones
    • Manage project pages
    • Manage project polls
    • Manage project reward splits
    • Manage project ticket templates
    • Manage project tickets
    • Manage relationships
    • Manage remote sync
    • Manage repository
    • Manage roles
    • Merge project
    • Resubmit project for approval
    • Translate project
    • View code repository

    Tester

    • View code repository

    Ticket Manager

    • Manage project ticket templates
    • Manage project tickets

    Translator

    • Translate project
  • Avatar of arith arith Aug 23, 2010 at 02:48 UTC - 0 likes

    What's the relationship between project roles and repository permission if the repository is set to private? In what project role the team member can also upload files to the repository?

  • Avatar of OrionShock OrionShock Nov 30, 2009 at 02:30 UTC - 0 likes

    it should be noted for git some basics:

    > git config --global user.name "Your Name Comes Here"
    
    > git config --global user.email you@yourdomain.example.com
    

    to set your uid and email

    Last edited Nov 30, 2009 by OrionShock
  • Avatar of Arrowmaster Arrowmaster Sep 08, 2009 at 23:23 UTC - 0 likes
    Quote from watchout:

    to me it seems that actually it's not the tag name that is parsed, but the commit message of the tagging commit, could this be true?

    No.