mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	Remove largely obsolete documentation pages.
(imported from commit eb02c24dd25a12a5676b5e52c914993650f73aa6)
This commit is contained in:
		@@ -11,12 +11,10 @@ Contents:
 | 
				
			|||||||
.. toctree::
 | 
					.. toctree::
 | 
				
			||||||
   :maxdepth: 2
 | 
					   :maxdepth: 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   welcome
 | 
					 | 
				
			||||||
   new-feature-tutorial
 | 
					   new-feature-tutorial
 | 
				
			||||||
   code-style
 | 
					   code-style
 | 
				
			||||||
   directory-structure
 | 
					   directory-structure
 | 
				
			||||||
   testing
 | 
					   testing
 | 
				
			||||||
   schema-changes
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Indices and tables
 | 
					Indices and tables
 | 
				
			||||||
==================
 | 
					==================
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,131 +0,0 @@
 | 
				
			|||||||
==============
 | 
					 | 
				
			||||||
Schema changes
 | 
					 | 
				
			||||||
==============
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
If you are making a change that requires a database schema upgrade,
 | 
					 | 
				
			||||||
there are a few extra things you need to keep in mind.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Using South for migrations
 | 
					 | 
				
			||||||
--------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1. Discuss the change informally with your team.
 | 
					 | 
				
			||||||
#. Edit ``zerver/models.py`` for your particular class.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   * See notes below about keep\_default.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Run ``./manage.py schemamigration zerver --auto``
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   * This will create the ``000#_***.py`` schema migration file in
 | 
					 | 
				
			||||||
     ``zerver/migrations``.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Read `Notes and Cautions`_ section below, as you may need to edit
 | 
					 | 
				
			||||||
   the migration. A common step here is setting keep\_default to True.
 | 
					 | 
				
			||||||
#. Do ``git add`` with your new migration.
 | 
					 | 
				
			||||||
#. Run ``./manage.py migrate zerver``.
 | 
					 | 
				
			||||||
#. Write supporting code or otherwise validate the DB change locally.
 | 
					 | 
				
			||||||
   TODO: Advice on testing schema changes?
 | 
					 | 
				
			||||||
#. Commit your changes:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   a. The migration must be in the same commit as the models.py changes.
 | 
					 | 
				
			||||||
   #. Include [schema] in the commit message.
 | 
					 | 
				
			||||||
   #. Include [manual] in the commit message if additional steps are
 | 
					 | 
				
			||||||
      required.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Before deploying your code fix, read the notes on `Deploying to
 | 
					 | 
				
			||||||
   staging`_.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Deploying to staging
 | 
					 | 
				
			||||||
--------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Always follow this process.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1. Schedule the migration for after hours.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. For long-running migrations, double check that you use appropriate
 | 
					 | 
				
			||||||
   library helpers in ``migrate.py`` to ensure that changes happen in small
 | 
					 | 
				
			||||||
   batches that are committed frequently.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Announce that you are doing the migration to your team, to avoid
 | 
					 | 
				
			||||||
   simultaneous migrations and other outcomes of poor communication.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Do any administrative steps, such as increasing
 | 
					 | 
				
			||||||
   checkpoint\_segments.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Apply the migration in advance from staging, using commands similar
 | 
					 | 
				
			||||||
   to the following, where ``[your commit]`` is the commit that has your
 | 
					 | 
				
			||||||
   migration::
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
     cd ~/zulip
 | 
					 | 
				
			||||||
     git fetch
 | 
					 | 
				
			||||||
     cd /tmp
 | 
					 | 
				
			||||||
     git clone ~/zulip
 | 
					 | 
				
			||||||
     cd zulip
 | 
					 | 
				
			||||||
     git checkout [your commit]
 | 
					 | 
				
			||||||
     ./manage.py migrate zerver
 | 
					 | 
				
			||||||
     cd /tmp
 | 
					 | 
				
			||||||
     rm -Rf zulip
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Undo any temporary administrative changes, such as increasing
 | 
					 | 
				
			||||||
   checkpoint\_segments.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Because staging and prod share a database, for most migrations, nothing
 | 
					 | 
				
			||||||
special needs to be done when deploying to prod since the shared
 | 
					 | 
				
			||||||
database schema will have already been updated, but in some cases some
 | 
					 | 
				
			||||||
code to properly initialize data structures may need to be run.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Migrating to a new schema
 | 
					 | 
				
			||||||
-------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
When doing a git pull and noticing a [schema] commit, you must manually
 | 
					 | 
				
			||||||
perform a schema upgrade: ``./manage.py migrate zerver``.
 | 
					 | 
				
			||||||
``generate-fixtures`` should automatically detect whether
 | 
					 | 
				
			||||||
the schema has changed and update things accordingly.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Notes and Cautions
 | 
					 | 
				
			||||||
------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Large tables**
 | 
					 | 
				
			||||||
  For large tables like Message and UserMessage, you
 | 
					 | 
				
			||||||
  want to take precautions when adding columns to the table, performing
 | 
					 | 
				
			||||||
  data backfills, or building indexes. We have a ``migrate.py`` library to
 | 
					 | 
				
			||||||
  help with adding columns and backfilling data. For building indexes,
 | 
					 | 
				
			||||||
  we should do this outside of South using postgres's CONCURRENTLY
 | 
					 | 
				
			||||||
  keyword.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Numbering conflicts across branches**
 | 
					 | 
				
			||||||
  If you've done your schema change in a branch, and meanwhile another
 | 
					 | 
				
			||||||
  schema change has taken place, South will now have two migrations with
 | 
					 | 
				
			||||||
  the same number. To fix this, delete the migration file that South
 | 
					 | 
				
			||||||
  generated, and re-run ``./manage.py schemamigration zerver --auto``.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Avoid nullables**
 | 
					 | 
				
			||||||
  You generally no longer need a Nullable column
 | 
					 | 
				
			||||||
  to avoid problems with staging and prod not having the same models.
 | 
					 | 
				
			||||||
  See the next point about setting ``keep_default=True``.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Use keep\_default**
 | 
					 | 
				
			||||||
  When adding a new column to an existing table,
 | 
					 | 
				
			||||||
  you almost always will want to set ``keep_default=True`` in the South
 | 
					 | 
				
			||||||
  migration ``db.add_column`` call. If you don't, everything will
 | 
					 | 
				
			||||||
  appear to work fine in testing and on staging, but once the schema
 | 
					 | 
				
			||||||
  migration is done, the pre-migration code running on prod will be
 | 
					 | 
				
			||||||
  unable to save new rows for that table (so e.g. if you were adding a
 | 
					 | 
				
			||||||
  new field to UserProfile, we'd be unable to create new users). The
 | 
					 | 
				
			||||||
  exception to this rule is when your field default is not a constant
 | 
					 | 
				
			||||||
  value. In this case, you'll need to do something special to either
 | 
					 | 
				
			||||||
  set a database-level default or use a Nullable field and a multi-step
 | 
					 | 
				
			||||||
  schema deploy process.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Rebase pain**
 | 
					 | 
				
			||||||
  If you ever need to rebase a schema change past
 | 
					 | 
				
			||||||
  other schema changes made on other branches, in addition to
 | 
					 | 
				
			||||||
  renumbering your schema change, youalso need to be sure to regenerate
 | 
					 | 
				
			||||||
  at least the bottom part of your migration (which shows the current
 | 
					 | 
				
			||||||
  state of all the models) after rebasing; if you don't, then the next
 | 
					 | 
				
			||||||
  migration made after your migration is merged will incorrectly
 | 
					 | 
				
			||||||
  attempt to re-apply all the schema changes made in the migration you
 | 
					 | 
				
			||||||
  skipped. This can be potentially dangerous.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Upstreaming**
 | 
					 | 
				
			||||||
  We recommend upstreaming schema changes as soon as possible to
 | 
					 | 
				
			||||||
  avoid schema numbering conflicts (see above).
 | 
					 | 
				
			||||||
@@ -1,39 +0,0 @@
 | 
				
			|||||||
========
 | 
					 | 
				
			||||||
Welcome!
 | 
					 | 
				
			||||||
========
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This document will guide you through getting started on Zulip development.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Installation
 | 
					 | 
				
			||||||
============
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
You should clone the Zulip git repository onto a Linux or OS X machine.
 | 
					 | 
				
			||||||
Then follow the instructions in README.dev.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Running the development server
 | 
					 | 
				
			||||||
==============================
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
After installing, you will have a virtual machine serving a development Zulip instance.
 | 
					 | 
				
			||||||
To start it, simply run `vagrant up` and navigate to `http://localhost:9991/`__ in
 | 
					 | 
				
			||||||
your browser.  Behind the scenes, this is running `run-dev.py` via `supervisor`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Viewing the server log
 | 
					 | 
				
			||||||
----------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Sometimes things go wrong when you change backend code.  The server logs are stored
 | 
					 | 
				
			||||||
in `/var/logs/supervisor/zulip-dev-stdout---supervisor-******.log`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Restarting run-dev.py
 | 
					 | 
				
			||||||
---------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Most of the time, the server will refresh when you change underlying python
 | 
					 | 
				
			||||||
files or style sheets, but sometimes you might need to restart the server
 | 
					 | 
				
			||||||
(for example, if you have a syntax error or need to change the database schema).
 | 
					 | 
				
			||||||
To do so, use `sudo supervisorctl restart zulip-dev`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Making changes
 | 
					 | 
				
			||||||
==============
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.. attention::
 | 
					 | 
				
			||||||
   We need to determine our final development workflow
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user