-
- |
-
-``sbt.log.format``
-
-.. raw:: html
-
- |
-
-
-Boolean
-
-.. raw:: html
-
- |
-
-
-unset
-
-.. raw:: html
-
- |
-
-
-If true, enable ANSI escape codes such as colors.
-If false, disable them, which can be useful on build servers or terminals
-that don't support color.
-If unset, whether to use escape codes is automatically detected.
-
-.. raw:: html
-
- |
-
-
- |
-
-``sbt.global.base``
-
-.. raw:: html
-
- |
-
-
-Directory
-
-.. raw:: html
-
- |
-
-
-``~/.sbt``
-
-.. raw:: html
-
- |
-
-
-The directory containing global settings and plugins
-
-.. raw:: html
-
- |
-
-
- |
-
-``sbt.ivy.home``
-
-.. raw:: html
-
- |
-
-
-Directory
-
-.. raw:: html
-
- |
-
-
-``~/.ivy2``
-
-.. raw:: html
-
- |
-
-
-The directory containing the local Ivy repository and artifact cache
-
-.. raw:: html
-
- |
-
-
- |
-
-``sbt.boot.directory``
-
-.. raw:: html
-
- |
-
-
-Directory
-
-.. raw:: html
-
- |
-
-
-``~/.sbt/boot``
-
-.. raw:: html
-
- |
-
-
-Path to shared boot directory
-
-.. raw:: html
-
- |
-
-
- |
-
-``sbt.main.class``
-
-.. raw:: html
-
- |
-
-
-String
-
-.. raw:: html
-
- |
- |
- |
-
-
- |
-
-``xsbt.inc.debug``
-
-.. raw:: html
-
- |
-
-
-Boolean
-
-.. raw:: html
-
- |
-
-
-false
-
-.. raw:: html
-
- |
- |
-
-
- |
-
-``sbt.version``
-
-.. raw:: html
-
- |
-
-
-Version
-
-.. raw:: html
-
- |
-
-
-0.11.3
-
-.. raw:: html
-
- |
-
-
-sbt version to use, usually taken from project/build.properties
-
-.. raw:: html
-
- |
-
-
- |
-
-``sbt.boot.properties``
-
-.. raw:: html
-
- |
-
-
-File
-
-.. raw:: html
-
- |
- |
- |
-
-
- |
-
-``sbt.override.build.repos``
-
-.. raw:: html
-
- |
-
-
-Boolean
-
-.. raw:: html
-
- |
-
-
-false
-
-.. raw:: html
-
- |
-
-
-If true, repositories configured in a build definition are ignored and
-the repositories configured for the launcher are used instead. See
-``sbt.repository.config`` and the :doc:`Launcher` documentation.
-
-.. raw:: html
-
- |
-
-
- |
-
-``sbt.repository.config``
-
-.. raw:: html
-
- |
-
-
-File
-
-.. raw:: html
-
- |
-
-
-~/.sbt/repositories
-
-.. raw:: html
-
- |
-
-
-A file containing the repositories to use for the launcher. The format
-is the same as a ``[repositories]`` section for a :doc:`Launcher`
-configuration file. This setting is typically used in conjuction with
-setting ``sbt.override.build.repos`` to true (see previous row and the
-:doc:`Launcher` documentation).
-
-.. raw:: html
-
- |
-
-
-.. raw:: html
-
-
-
-
-
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| Property | Values | Default | Meaning |
++==============================+===========+=====================+====================================================+
+| ``sbt.log.noformat`` | Boolean | false | If true, disable ANSI color codes. Useful on build |
+| | | | servers or terminals that don't support color. |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``sbt.global.base`` | Directory | ~/.sbt | The directory containing global settings and |
+| | | | plugins |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``sbt.ivy.home`` | Directory | ~/.ivy2 | The directory containing the local Ivy repository |
+| | | | and artifact cache |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``sbt.boot.directory`` | Directory | ~/.sbt/boot | Path to shared boot directory |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``sbt.main.class`` | String | | |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``xsbt.inc.debug`` | Boolean | false | |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``sbt.extraClasspath`` | Classpath | | A list of classpath entries (jar files or |
+| | Entries | | directories) that are added to sbt's classpath. |
+| | | | Note that the entries are deliminted by comma, |
+| | | | e.g.: ``entry1, entry2,..``. See also |
+| | | | ``resources`` in the :doc:`Launcher` |
+| | | | documentation. |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``sbt.version`` | Version | 0.11.3 | sbt version to use, usually taken from |
+| | | | project/build.properties |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``sbt.boot.properties`` | File | | |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``sbt.override.build.repos`` | Boolean | false | If true, repositories configured in a build |
+| | | | definition are ignored and the repositories |
+| | | | configured for the launcher are used instead. See |
+| | | | ``sbt.repository.config`` and the :doc:`Launcher` |
+| | | | documentation. |
++------------------------------+-----------+---------------------+----------------------------------------------------+
+| ``sbt.repository.config`` | File | ~/.sbt/repositories | A file containing the repositories to use for the |
+| | | | launcher. The format is the same as a |
+| | | | ``[repositories]`` section for a :doc:`Launcher` |
+| | | | configuration file. This setting is typically used |
+| | | | in conjuction with setting |
+| | | | ``sbt.override.build.repos`` to true (see previous |
+| | | | row and the :doc:`Launcher` documentation). |
++------------------------------+-----------+---------------------+----------------------------------------------------+
diff --git a/src/sphinx/Detailed-Topics/Understanding-incremental-recompilation.rst b/src/sphinx/Detailed-Topics/Understanding-incremental-recompilation.rst
index 9c6188fbb..51b96d3ee 100644
--- a/src/sphinx/Detailed-Topics/Understanding-incremental-recompilation.rst
+++ b/src/sphinx/Detailed-Topics/Understanding-incremental-recompilation.rst
@@ -56,10 +56,60 @@ SBT heuristics
SBT tracks source dependencies at the granularity of source files. For
each source file, SBT tracks files which depend on it directly; if the
**interface** of classes, objects or traits in a file changes, all files
-dependent on that source must be recompiled. In particular, this
-currently includes all transitive dependencies, that is, also
-dependencies of dependencies, dependencies of these and so on to
-arbitrary depth.
+dependent on that source must be recompiled. At the moment sbt uses the
+following algorithm to calculate source files dependent on a given source
+file:
+
+ - dependencies introduced through inheritance are included *transitively*;
+ a dependency is introduced through inheritance if a class/trait in one
+ file inherits from a trait/class in another file
+ - all other direct dependencies are included; other dependencies are also
+ called "meber reference" dependencies because they are introduced by
+ referring to a member (class, method, type, etc.) defined in some other
+ source file
+
+Here's an example illustrating the definition above::
+
+ //A.scala
+ class A {
+ def foo: Int = 123
+ }
+
+ //B.scala
+ class B extends A
+
+ //C.scala
+ class C extends B
+
+ //D.scala
+ class D(a: A)
+
+ //E.scala
+ class E(d: D)
+
+There are the following dependencies through inheritance:
+
+.. code-block:: none
+
+ B.scala -> A.scala
+ C.scala -> B.scala
+
+There are also the following member reference dependencies:
+
+.. code-block:: none
+
+ D.scala -> A.scala
+ E.scala -> D.scala
+
+Now if the interface of ``A.scala`` is changed the following files
+will get invalidated: ``B.scala``, ``C.scala``, ``D.scala``. Both
+``B.scala`` and ``C.scala`` were included through transtive closure
+of inheritance dependencies. The ``E.scala`` was not included because
+``E.scala`` doesn't depend directly on ``A.scala``.
+
+The distinction between depdencies by inheritance or member reference
+is a new feature in sbt 0.13 and is responsible for improved recompilation
+times in many cases where deep inheritance chains are not used extensively.
SBT does not instead track dependencies to source code at the
granularity of individual output ``.class`` files, as one might hope.
@@ -107,6 +157,83 @@ just to illustrate the ideas; this list is not intended to be complete.
issue `SI-2559