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.
gem
install myproject ! How do I remove it entirely?ssh_exchange_identification: Connection closed by remote host!Disconnecting: Corrupted check bytes on input when I try to commit.$ 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:\>
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.
c:\Program Files\putty.
c:\Program Files\putty) in the windows path and validate that you can run from a windows command line:
plink@rubyforge.org svnserve -t
Mine looked like
C:\>plink skriloffn@rubyforge.org svnserve -t skriloffn@rubyforge.org's password: ( success ( 1 2 ( ANONYMOUS EXTERNAL ) ( edit-pipeline ) ) )
public.ppk and private.ppk. I saved them in c:\Program Files\putty\. Note) Putty is going to use the private.ppk key and RubyForge is going to use the public.ppk.
Session--Host=rubyforge.org,protocol=ssh Session.Logging--Save a log file somewhere in case there are problems Connection.Data--auto-login username=(I used skriloffn) ssh--Preferred ssh protocol version=1 ssh.auth--private key file for authentication c:\Program Files\putty\private.ppk
Make sure you save this session. For my example I saved it as cvilleCodeJam.
plink @rubyforge.org svnserve -t with plink cvilleCodeJam svnserve -t. Mine looked like:
C:\temp\tempJam\cvillejam\ideas>plink cvilleCodeJam svnserve -t ( success ( 1 2 ( ANONYMOUS EXTERNAL ) ( edit-pipeline ) ) )
Hit enter and you will be back to a command prompt. You should not have had to enter a password this time.
C:\Documents and Settings\\Application Data\Subversion\config File and change line 41 or so:
### Section for configuring tunnel agents. [tunnels] ssh=plink
svn checkout svn+ssh://cvilleCodeJam/var/svn/cvillejam
You should see the files checked out. FYI the url=svn+ssh://cvilleCodeJam/var/svn/cvillejam. You can now run svn help to see how to commit files.
TortiseSVN:
svn+ssh://cvilleCodeJam/var/svn/cvillejam. Because you have the putty session and putty is in your path, Tortise will find it.
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 CVSROOTand your CVS_RSH:
$ CVS_RSH=ssh && export CVS_RSHusing 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:
How do I get diff emails when I commit code?
$ CVSROOT=:ext:tom@rubyforge.org:/var/cvs/support && export CVSROOT $ cvs co CVSROOT cvs server: Updating CVSROOT U CVSROOT/checkoutlist U CVSROOT/commitinfo U CVSROOT/config U CVSROOT/cvswrappers U CVSROOT/editinfo U CVSROOT/loginfo U CVSROOT/modules U CVSROOT/notify U CVSROOT/passwd U CVSROOT/rcsinfo U CVSROOT/readers U CVSROOT/taginfo U CVSROOT/verifymsg [tom@hal tmp]$
Now edit your CVSROOT/loginfo file and put your email address (or a list address ) in there:
$ cat CVSROOT/loginfo | grep "@" DEFAULT /usr/local/bin/syncmail %s tom@infoether.com
And check it back in
$ cvs -q ci -m "Added commit email notification" CVSROOT/ Checking in CVSROOT/loginfo; /var/cvs/support/CVSROOT/loginfo,v <-- loginfo new revision: 1.5; previous revision: 1.4 done cvs server: Rebuilding administrative file database [tom@hal tmp]$
Try committing some code; you should get an email shortly containing a list of files modified.
Here are some notes from Vincent Fourmond on setting up commit emails for a Subversion project:
To turn on commit mails for project qtodo, write a file called post-commit with the following contents:
#!/bin/sh REPOS="$1" REV="$2" PATH=/usr/bin:/bin:/usr/local/bin PROJECT=/var/svn/rubyrpc svnnotify --repos-path "$REPOS" --revision "$REV" --svnlook /usr/local/bin/svnlook --to qtodo-commits@rubyforge.org --from nobody@rubyforge.org --with-diff --subject-cx --handler HTML::ColorDiff
I guess you'll find which bits to change to suit your needs ;-). Then, run sftp:
sftp devel@rubyforge.org:/var/svn/qtodo/hooksThen from sftp, run the following command:
put post-commit chmod 755 post-commit
That's it, run a dummy commit to check the emails are reaching you. To turn it off, log in again using sftp, and run:
rm post-commit
Note you can also do something like:
--to qtodo-commits@rubyforge.org --from `whoami`@rubyforge.org
This way, the "from" address corresponds to the rubyforge
developer's address. Chris Guidry notes that if you do this you'll need to
tweak the "accepted non-members" Mailman list setting to be ^.*\@rubyforge\.org.
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.
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!
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.
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!
max_days_to_hold setting as you see fit. 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.
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.
full_name
differs notably from the gem file name, it won't be deployed to the gem
index. This is to prevent someone from deploying a gem with a file name
of mygem-0.1.gem and a full_name of rail-4.2.gem
and hijacking the Rails gem's spot in the index. You may well
experience this if you give a gem a platform-specific name that differs
greatly from the filename; I'm still not sure of the best way of making
this work.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.
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.
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.
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.
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.