Upload group web pages

See Homepage for general info on the per-group web pages.

To import an initial setup web pages for your group, use the web repository (this is completely separate from any source trees). The web tree always uses CVS. For basic CVS usage, see CvsGettingStarted.

  1. First, you need to configure your SshAccess.

  2. You should have read instructions in your CVS group page on savannah (e.g., the emacs CVS page is http://savannah.gnu.org/cvs/?group=emacs).

  3. Go to the local directory where you want to put your local copy the CVS HTML tree. For example:

    mkdir ~/group/www
    cd ~/group/www
  4. Download the CVS HTML tree structure (substitute developername with your login and group_name with your group system name):

    cvs -z3 -d:ext:developername@cvs.sv.gnu.org:/web/group_name co group_name
  5. Then, in the directory \~/group/www/group_name, copy all the files you want to insert in the CVS HTML tree. For example:

    cp ~/tmp/index.html ~/group/www/group_name
  6. Once you have locally set your HTML tree, you can import it. To import a file and a directory:

    cd ~/group/www/group_name
    cvs add index.html
    cvs add mydir
    # (or: cvs add index.html mydir)
    cvs commit

Done! The webpages will be updated within a few minutes. The location of your homepage is the default URL in your group Select Features.

Similarly, updating your web pages after the initial import is a matter of updating and committing in your CVS tree.

Exception: large updates, involving either many updates or many megabytes, may not be fully completed. Unfortunately, there is no warning when this happens (Savannah does not receive any information from the backend FSF machines), it's just that some files may not be present. If you notice this, the thing to do is submit a new ticket at Savannah support tracker.

For Savannah administrators

We can retrigger the update at the FSF side with the same command that is run by the CVS loginfo hook (SavannahInternals). Do this on the vcs machine (though probably it does not technically matter).

# T=gnu or T=non-gnu
# PROJ=group identifier
vcs$ curl http://www.gnu.org/new-savannah-project/new.py \
          -s -F type=$T -F project=$PROJ

A successful call should result in an empty HTTP-200, e.g.:

# curl -D /dev/stderr http://www.gnu.org/new-savannah-project/new.py -s -F type=non-gnu -F project=pretest 2>&1   
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Thu, 01 Dec 2016 04:29:15 GMT
Server: Apache/2.4.7
Access-Control-Allow-Origin: (null)
Cache-Control: max-age=0
Expires: Thu, 01 Dec 2016 04:29:15 GMT
Content-Length: 0
Content-Type: text/html
Content-Language: en

It may take more than one call, a few minutes apart.

NOTES: 1. The script new.py will return HTTP-404 (page not found) on any errors! That's not only confusing, but also hard to troubleshoot. The 404 errors are sent back to apache, which in turns renders an entire www.gnu.org "page not found" template. 2. The script new.py will return HTTP-404 (page not found) if the group name is invalid, or if the type is invalid (e.g. not "gnu" or "non-gnu"). 3. A copy of the script can be found in fencepost:/srv/data/www-mirror/new-savannah-project/new.py. 4. A copy of the relevant apache configuration can be found in fencepost:/srv/data/www-config/sites-available/www.gnu.org-common (search for "new.py").