The RubyForge FAQ

Please post to the support forum if you have a suggestion for improving this document, thanks! And you might want to read this blog entry on the purpose of the support forum as well.

  1. How do I upload pages to myproject.rubyforge.org?
  2. Got any Webalizer or AWStats reports?
  3. How can I authenticate my CVS/Subversion commits with a public key?
  4. How do I get diff emails when I commit code?
  5. Why does Subversion prompt me for a password multiple times?
  6. How can I get notified when people submit bugs or post to my forums?
  7. What's all this trove stuff about?
  8. How do I get news posted on the RubyForge front page?
  9. How can I use a public key for authentication?
  10. How can I make my project summary page cleaner?
  11. Got any Wiki support?
  12. I can't log in via SSH - it keeps saying 'restricted shell'
  13. I just released a file and I can't download it!
  14. I deleted a gem, but it still shows up in gem install myproject ! How do I remove it entirely?
  15. My mailing lists are getting lots of spam!
  16. I typed my password wrong a few times and now I'm getting the message ssh_exchange_identification: Connection closed by remote host!
  17. I'm getting a SSH error Disconnecting: Corrupted check bytes on input when I try to commit.
  18. Can I host a Rails plugin on RubyForge?
  19. How can I rename my project?
  20. Oops, I removed myself as project admin and I can't get admin permissions back!
  21. I want to make a tax-deductible contribution!
  22. What if I upload a gem with someone's project name?
  23. What's a good way to structure my Subversion repository?
  24. Project xyz seems to be abandoned. Can you pass it to me?
  25. The files in my virtual host aren't group-writeable!
  26. Anonymous cvs/svn checkouts and exports keep failing
  27. I can't push to my project's Git repository!
  28. How do I start my Git repository?

  1. How do I upload pages to myproject.rubyforge.org?
    You can put web pages for your project on RubyForge at /var/www/gforge-projects/[yourproject]/. You can copy content into that directory using SCP (secure copy). Here's an example:

    $ scp index.html tom@rubyforge.org:/var/www/gforge-projects/support/
    index.html           100%
    |**********************************************************************|    25
    00:00
    $
    

    Note that you can also use SFTP to do this.

    You can use PSCP for Windows - download it from the Putty web site. Here's an example of PSCP:

    C:\>pscp test.html tom@rubyforge.org:/var/www/gforge-projects/support/
    tom@rubyforge.org's password:
    test.html                 |         11 kB |  11.2 kB/s | 
    ETA: 00:00:00 | 100%
    
    C:\> 

  2. RubyForge's host key is

    2048 35 2712821469779601356879786632862393483206159676635804839487746154631525842844777072518794232492807976734
    52288899396923951697917389180490051455331579916738448586885124538215795263083376617824319691830569744331640311493436
    01280808054465112619654124214030411270623679483897209834029345658919046381078172003770636477168485426650339607221016
    93730730967620763236891830039742213023291548864502112341293541392223755220162522085398264461119586415182870226369343
    76954714162323703380635132170971069484339145511049843619588789699865519841596310559919512418055368067018415945004841
    01919755558081660006339131162436310076649867950041
  3. Got any Webalizer or AWStats reports?
    Sadly, no. We had these set up for a while, but they became spam referrer link farms. Ah well.


  4. How can I authenticate my CVS/Subversion commits with a public key?

    RubyForge supports two SCM utilities - CVS and Subversion. You can pick which one you want to use when you start your project. Also, if you want to convert an existing project from CVS to Subversion, just put in a support request. Some more details on the Subversion support are on Tom's blog.

    If you already have a CVS or Svn repository in place, we can drop that into your SCM space at RubyForge so you can keep all your branches and history and such. If you want to do that, please put in a support request.

    If you want a graphical tool to help with managing CVS or Svn, check out TortoiseCVS or TortoiseSVN.

    * Subversion notes

    To import some code to your Subversion repository, first make sure you have a Subversion client installed. Then do something like this - just plug in your user name in place of 'fred' and your project name in place of 'rubyinstaller':

    svn import svn+ssh://fred@rubyforge.org//var/svn/rubyinstaller
    

    Here are some notes - thanks to Nick Skriloff for putting these together - about connecting to a RubyForge Subversion repository from Windows using the cvillejam project as an example:

    I will first explain how to get the command line option working. Then I will get TortiseSVN working. This is all on Windows XP.

    TortiseSVN:

    If you're looking to get Subversion+TextMate+RubyForge working, check out this post by Aaron Smith.

    If you're using SvnX, check out this post by Jacques Distler.

    * CVS notes

    You've probably got some code you want to import into the CVS repository. You can do that by setting your CVSROOT. Note that if you're running Windows, the CVS client from here may work better than the one from cvsnt.org. Note also that [myprojectname] is your "unix name" - i.e., no spaces or other "funny characters" - so for the "Mini Ruby Wiki" project, for example, the "unix name" is "minirubywiki":

    $ CVSROOT=:ext:tom@rubyforge.org:/var/cvs/[myprojectname] && export CVSROOT
    
    and your CVS_RSH:
    $ CVS_RSH=ssh && export CVS_RSH
    
    using then the CVS import command. So, for example, if you were importing a "support" module, the import command would look like this:
    $ cvs import -m "initial import" support tom start
    N support/test.txt
    
    No conflicts created by this import
    

    Note that when doing a cvs import:


  5. How do I get diff emails when I commit code?

    You may want to configure CVS or Subversion to notify you when a commit or add occurs. In either case, if you want the commits to go to a mailing list, you'll need to add at least one email address to the Mailman sender filters. To do this for Subversion commits, go to the Mailman admin page for the list (e.g., http://rubyforge.org/mailman/admin/your-list-name/), click on "Privacy options", click on "Sender filters", and add the address nobody@rubyforge.org to the "accept_these_nonmembers" option text box. To do the same for CVS commits, go to the same page but add all the email addresses for the folks who are committing code. This has to be their RubyForge account addresses - so if a committer's RubyForge account name is rubyhacker you'll need to enter rubyhacker@rubyforge.org as the email address.


  6. Why does Subversion prompt me for a password multiple times?
    A choice passage from the Subversion docs: "Note that the Subversion client often makes multiple connections to the repository, though users don't normally notice this due to the password caching feature. When using svn+ssh:// URLs, however, users may be annoyed by ssh repeatedly asking for a password for every outbound connection.". So you're strongly encouraged to set up public key authentication to avoid this annoyance. Thanks to Robin Stocker for hunting down this information!


  7. How can I get notified when people submit bugs or post to my forums?
    To make sure you get notified when anything happens on your project, you can go to each of the "trackers" - i.e., the bug tracker, the feature request tracker - and enable email notification. To do that, go to your project page, click on "Tracker" on the left side of the page, click on "Admin" at the top of the page, click on "Bugs", click on "Update preferences", and put your email address in the "Send email on new submission to address:" box. Also, you can check the box right below it that says "Send email on all changes".

    You might also want to go to the discussion forums and click the "monitor" button at the top of each forum. That way you'll get an email if someone posts to the forum.


  8. What's all this trove stuff about?
    The Trove is accessed in the website navigation bar atop the RubyForge home page by clicking on the
    Project Tree tab. You'll probably want to categorize your project in the Trove so that other folks can find it more easily. To do this, log in, go to your project's admin page, and click on the "Trove Categorization:: [Edit]" link in the middle of the page.


  9. How do I get news posted on the front page?
    Feel free to post news to your project - it'll show up immediately on your project, and once every couple of days Tim Sutherland will go thru the news submissions and promote certain ones to the front page - whatever he thinks would be interesting to the RubyForge community as a whole.


  10. How can I use a public key for authentication?
    To use a SSH public key for authentication (i.e., so you won't be prompted for a password when doing CVS or Subversion checkins), log in, click on "My Page", click on "Account Maintenance", scroll down to the bottom of the page, click on "Edit keys", paste in your SSH public key (which you can create using a command like ssh-keygen -t rsa), and click "Update". Note that a public key may include a small type prefix like "ssh-dss" or ssh-rsa". A cron job runs at the top of each hour that copies that public key into your home directory on RubyForge, and you should be all set.

  11. How can I make my project summary page cleaner?
    If you don't plan to use some of the features that RubyForge provides, consider disabling them; after all, you can always turn them back on. You can turn things off by logging in to RubyForge, clicking over to your project's summary page, clicking the Admin tab, clicking the "Edit Public Info" link, and deselecting the appropriate checkboxes. Likely candidates for disabling include the mailing lists, the project/task manager, and the surveys.

  12. Got any Wiki support?
    You can enable a Wiki for your project by clicking over to your project's summary page, clicking the Admin tab, clicking the "Edit Public Info" link, and selecting the 'Wiki' check box. Some notes on how to do Wiki formatting are
    here. Also, to link to an external site from your Wiki, use "HTTP", not "http". This is an anti-spam technique, which seem to help reduce it a bit, curse those spammers!

  13. I can't log in via SSH - it keeps saying 'restricted shell'!
    Note that RubyForge doesn't allow shell access - we're trying to keep the server load down so that RubyForge is more responsive for everyone. Eventually maybe we'll come up with some sort of chroot'd shell access.... but that's down the road a bit.

  14. I just released a file and I can't download it!
    Files and gems are sync'd out to the mirror servers. This syncing process runs every half an hour, so there's a window of time when the file may not be available for download. All RubyGems are also served by mirrors, so there's a bit of a delay there, too.

  15. I deleted a gem, but it still shows up in gem install myproject ! How do I remove it entirely?
    This means your gem is stuck in the gemserver mirror rotation. If this happens and you're sure you want to get rid of it, you can file a
    support request. Just include something like 'please remove my_gem_name from the gem server' as your summary.

  16. My mailing lists are getting lots of spam!
    Here are some tips on keeping your mailing lists neat and tidy:

    1. Your list will undoubtedly receive spam, and every time this happens you as list administrator will get an email saying "do you want to approve this pending message?". This gets annoying, so you may want to simply discard all non-member postings. To do this, go to your list admin page, the URL for which is something like this: http://rubyforge.org/mailman/admin/support-mirrors. Log in, then click on "Privacy options" and then click on "Sender filters". Scroll down to the generic_nonmember_action radiobuttons, and then select "discard". Right below that, select "no" beside the forward_auto_discards setting. Then click "Submit your changes". No more annoying emails!
    2. You may want to hold non-member postings for a few days and then discard them automatically if you haven't taken action on them. That's the way new lists are set up by default - held postings are discarded after 7 days. To change this, log in to your list admin page and you'll be taken to the "General options" page. Scroll down to the bottom of that page and tweak the max_days_to_hold setting as you see fit.
    3. If you forget your mailing list password, no problemo, just file a support request and I'll reset it.

  17. I typed my password wrong a few times and now I'm getting the message ssh_exchange_identification: Connection closed by remote host!
    If you're trying to do CVS or Subversion operations (or use scp or SFTP), you may get a message like this after a couple of login failures:

    ssh_exchange_identification: Connection closed by remote host
    svn: Connection closed unexpectedly
    

    If this happens, it means that your IP address has been blocked by DenyHosts. To get around this, send an email with your IP address to me and I'll whitelist it. Also, you may want to set up public key authentication since then you won't have to type your password to authenticate to RubyForge during these operations.

  18. I'm getting a SSH error Disconnecting: Corrupted check bytes on input when I try to commit.
    Try adding the line Cipher blowfish to your ~/.ssh/config file.

  19. Can I host a Rails plugin on RubyForge?
    Thanks to
    Zak Mandhro for writing up these instructions!

    If you are using Subversion as your SCM, all you need to do is create a folder structure for the plugin within your SVN tree and provide your users with a link to web-svn. If you are using CVS, you'd want to keep reading.

    Simply putting your plugin source files in your project web folder will not work because RubyForge web server's auto-generated index page is not compatible with Rails plugin HTTP fetcher. I've created a Rake extension that will generate the index files and structure for publishing your plugin. You can get it from here.


  20. How can I rename my project?
    Renaming your project is rather difficult in GForge - the name is embedded all over the place. The best way to get your project renamed is to put in a new project request and when it's been approved and you've got things migrated over, put in a support request to have the old one deleted. This will help keep RubyForge tidy, too... which is nice.

  21. Oops, I removed myself as project admin and I can't get admin permissions back!
    If you've accidentally twiddled the permissions in your project so that there are no longer any project admins, just put in a support request and I'll fix it. And don't feel too bad; this happens once or twice a week - it's really just poor UI design.

  22. I want to make a tax-deductible contribution!
    Super! You can donate to
    Ruby Central; they provide the RubyForge hardware.

  23. What if I upload a gem with someone's project name?

    RubyGems released on RubyForge are built into one gem index which is keyed by the gem name. So, for example, "rails-1.1.6.gem" is in the gem index and maps to the Rails gem. Some salient points:


  24. What's a good way to structure my Subversion repository?
    Here's some advice on this from
    Vincent Fourmond:

    Some projects want to have only one 'main directory' in their repository, so that it would look like

    svn://rubyforge.org/var/svn/some_project/trunk
    svn://rubyforge.org/var/svn/some_project/branches
    svn://rubyforge.org/var/svn/some_project/tags
    

    You can create this structure as a project admin by running these commands:

    svn mkdir svn+ssh://developername@rubyforge.org/var/svn/project/trunk
    svn mkdir svn+ssh://developername@rubyforge.org/var/svn/project/tags
    svn mkdir svn+ssh://developername@rubyforge.org/var/svn/project/branches
    

    Another way is to do subprojects:

    svn://rubyforge.org/var/svn/some_project/subproject_1/trunk
    svn://rubyforge.org/var/svn/some_project/subproject_1/branches
    svn://rubyforge.org/var/svn/some_project/subproject_1/tags
    

    and so on for other subprojects. Finally, I would say that usually, you check out a svn repository with the following command:

    svn co svn+ssh://deve@rubyforge.org/var/svn/some_project/trunk some_project
    

    This way, the trunk directory is mapped as a some_project directory on your local copy: it is much easier to work on.

  25. Project xyz seems to be abandoned. Can you pass it to me?

    This comes up occasionally - a well-named or positioned project gets started, then the project admin falls out of sight and can't be reached. Patches pile up, people start wondering what's going on, and it seems a shame to lose the project name by forking it. So someone will ask if we as RubyForge admins will pass over control of the project to them.

    We really, really, hesitate to transfer admin privileges from one person to another, even if the original admin has completely disappeared. I suspect there are legal complications, and we don't have the budget to deal with those. Furthermore, suppose the original admin has been off on furlough for a year and comes back to find that his project has been moved away from him. Not a pleasant situation.

    In situations where the project admin can't be reached for a long time and folks want to move forward, I suggest forking the project. You're welcome to host a xyz2 version of project xyz on RubyForge, and if the original admin ever shows up again and wants to hand over the project to you, we can help facilitate that.

  26. The files in my virtual host aren't group-writeable!

    If you have several people uploading files to your virtual host, the permissions maybe get messed up - for example, the files might not be group-writeable. As the project admin, you can fix this by logging in, clicking on the "admin" tab of the project, and then clicking the "Schedule a reset of virtual host permissions to be group-writeable" button on the left side of the page. This will cause the permissions to be reset next time the appropriate cronjob runs - which happens once a minute.

  27. Anonymous cvs/svn checkouts and exports keep failing

    Sometimes you'll see a svn: Connection closed unexpectedly error message when you try to export or check out a Subversion repository using anonymous Subversion - e.g., svn co svn://rubyforge.org/var/svn/rspec/trunk/rspec rspec. Or with CVS, the message will be something like cvs [checkout aborted]: end of file from server (consult above messages if any). This is probably happening because we throttle anonymous connections based on server load (using xinetd). You may instead want to use HTTP for anonymous Subversion checkouts instead -e.g., svn co http://rspec.rubyforge.org/svn/trunk/rspec rspec.

  28. I can't push to my project's Git repository!

    RubyForge Git repositories are managed via gitosis; gitosis does authentication via public keys. This means that in order to push to a RubyForge Git repository you'll need to upload a public key to your account - see notes on that here.

    Generally, Git support is something we've just introduced, so feedback about it on the forums would be quite welcome.

  29. How do I start my Git repository?

    Rather than "importing" an initial source tree as you do with Subversion or CVS, with Git you create a local repository and then "push" it to RubyForge. Here's an example of the steps you can use to do this:

    mkdir my_project 
    cd my_project 
    git init 
    git remote add origin gitosis@rubyforge.org:my_project.git 
    echo "Initial push for my_project" > README 
    git add README 
    git commit -a -m "Added a README file" 
    git push origin master:refs/heads/master
    

    Dr. Nic Williams wrote up some excellent suggestions for working with RubyForge's Git repos.