.. _configure:
#############################
Right Configuration
#############################
Generate Missing SSH Keys
=============================
The following command will generate missing **ssh keys** for a user::
if [ ! -f ~/.ssh/id_rsa ]; then ssh-keygen -N '' -f ~/.ssh/id_rsa; fi
Configure git
=============================
Publishing on the web is a form of coding, and code belongs in a repository.
While there are many options for repositories, **git** [#]_ has become a
*de facto* standard for publicly exchanged projects. Enter the following
console commands to configure git::
git config --global user.name "firstname lastname"
git config --global user.email "email@domain"
git config --global branch.master.remote origin
git config --global branch.master.merge refs/heads/master
git config --global --add color.ui true
These global settings are recorded in home directory file :file:`~/.gitconfig`.
Create a Project Folder
=============================
Documentation is treated as a project. Work is divided into projects which are
stored locally as sub-folders of a :file:`Projects` folder. Oddly, Linux
desktops create folders for music, downloads, pictures, videos, and so forth,
but a place to do actual work? Missing. Create the missing folder and start
your first project with the following command::
git init ~/Projects/doc-firsttask
This creates the directory :file:`~/Projects/doc-firsttask/.git` where
repository information is kept for that project.
.. _gitignore:
Prepare .gitignore
=============================
Your project will contain files with content that you create, and other files
which are generated by the system. The git repository should track content and
not system files. Using ``nano`` or ``kate``, create a :file:`.gitignore` file
to identify untracked files to git. [#]_ Here is some suggested content for
:file:`.gitignore`::
# ignore editor backup files
*~
*/*~
# ignore compilation from make
*build/*
*/*build/*
# ignore deployment content
*deploy/*
*/*deploy/*
# keep hidden placeholder files which preserve directories
!.gitkeep
!*/.gitkeep
Add Sphinx to a Project
=============================
Add the Sphinx documentation features to your new project from the console as
follows::
cd ~/Projects/doc-firsttask
sphinx-quickstart
Answer the resulting questions, which are::
Root path for the documentation [.]:
Separate source and build directories (y/N) [n]:
Name prefix for templates and static dir [_]:
Project name: __First Project__
Author name(s): __Your Name Here__
Project version: __1.0__
Project release [1.0]:
Source file suffix [.rst]:
Name of your master document (without suffix) [index]:
Do you want to use the epub builder (y/N) [n]:
autodoc: automatically insert docstringss from modules (y/N) [n]:
doctest: automatically test code snippets in doctest blocks (y/N) [n]:
intersphinx link between Sphinxx documentation of different projects (y/N) [n]:
todo: write "todo" entries that can be shown or hidden on build (y/N) [n]:
coverage: checks for documentation coverage (y/N) [n]:
pngmath: include math, rendered as PNG images (y/N) [n]:
mathjax: include math, rendered in the browser by MathJax (y/N) [n]:
ifconfig: conditional inclusion of content based on config values (y/N) [n]:
viewcode: include links to the source code of documented Python objects (y/N) [n]:
Create Makefile? (Y/n) [y]:
Create Windows command file? (Y/n) [y]: __n__
Only four questions actually require answering; the rest are defaulted.
Add Documentation Folders
=============================
A publication may require additional folders to hold images, downloads, static
content, web program includes, and deployed results. Following are commands to
create these folders::
cd ~/Projects/doc-firsttask
mkdir _build; touch _build/.git_keep
mkdir _deploy; touch _deploy/.git_kep
mkdir _downloads; touch _downloads/.git_keep
mkdir _images; touch _images/.git_keep
mkdir _include; touch _include/.git_keep
mkdir _static; touch _static/.git_keep
You can avoid typing all these commands, however, by downloading the following
two scripts to your :file:`~/Projects` folder:
+ :download:`Documentation project startup script <_downloads/docproject-start.sh>`
+ :download:`Add documentation to project script <_downloads/docbranch-add.sh>`
To start a new documentation project, from :file:`~/Projects`, run the command::
bash docproject-start.sh {document_foldername}
To add a documentation branch to a code project repository, from
:file:`~/Projects`, run the command::
bash docbranch-add.sh {project_foldername}
.. note:: These scripts assume that you have already created the documentation
or project folder, that ``git init`` has been run on the folder, and that a
remote host repository is named using ``git remote add origin {remotename}``.
Add Changes to git
=============================
Now add your changes to git [#]_ and view the results with the commands::
git add .
git status
git commit -m "Empty project directory for firsttask"
Summary Configuration
=============================
This section covered:
+ Generating Missing SSH keys
+ Configuring git
+ Creating a Projects folder and the first project within it
+ Initializing the project for git tracking
+ Applying Sphinx documentation tools on the project
+ Adding other folders for later use
+ Performing the first git commit
------
.. rubric:: Footnotes
.. [#] For information on git, see http://en.wikipedia.org/wiki/Git_(software).
A git online reference manual is at http://gitref.org/.
.. [#] `GitHub Help `_ has an excellent
explanation of :file:`.gitignore`.
.. [#] `Try GitHub `_ offers a quick tutorial on Git
and GitHub to bring you up to speed.