This is an automated email from the ASF dual-hosted git repository.
mdrob pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 0aba02d Update worktree instructions
0aba02d is described below
commit 0aba02d48b39b20d1ecd6875c42e9e6409067b30
Author: Mike Drob <[email protected]>
AuthorDate: Thu Jun 10 10:49:56 2021 -0500
Update worktree instructions
---
dev-docs/working-between-major-versions.adoc | 34 +++++++++++++++-------------
1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/dev-docs/working-between-major-versions.adoc
b/dev-docs/working-between-major-versions.adoc
index 67dfaee..49c45b7 100644
--- a/dev-docs/working-between-major-versions.adoc
+++ b/dev-docs/working-between-major-versions.adoc
@@ -16,8 +16,8 @@
// specific language governing permissions and limitations
// under the License.
-Working between multiple major versions of `lucene-solr` is often a necessary
part of committing code, due to backports and testing.
-For some versions, this is an even bigger issue because `8.x` and `9.x` use
different build systems, ant and gradle.
+Working between multiple major versions of `solr` is often a necessary part of
committing code, due to backports and testing.
+For some versions, this is an even bigger issue because `8.x` and `9.x` use
different build systems, ant and gradle, and different repository locations.
Switching between these branches will result in many files left around that
are not tracked by the other branch.
Even when the build system between branches is the same, major refactoring can
produce the same issues.
These orphaned files can impact the use of `precommit`, IntelliJ, and other
tools.
@@ -27,37 +27,39 @@ These orphaned files can impact the use of `precommit`,
IntelliJ, and other tool
https://git-scm.com/docs/git-worktree[Git worktree] is a feature of git that
allows you to have different directories store separate checkouts of the same
repository, at the same time.
The git metadata is shared between the different directories, so any remotes
added or local commits made from one worktree are available to all other
worktrees as well.
-For Lucene-Solr, this allows us to have separate directories (worktrees) that
manage the checkouts of `master` and `branch_8x` (or any other major branch).
-One can make a commit on `master`, then easily switch directories and
cherry-pick the commit onto `branch_8x` without having to worry about gradle or
ant files.
-This setup also allows the commit to be tested on `master` and `branch_8x`
simultaneously.
+For Solr, this allows us to have separate directories (worktrees) that manage
the checkouts of `main` and `branch_8x` (or any other major branch).
+One can make a commit on `main`, then easily switch directories and
cherry-pick the commit onto `branch_8x` without having to worry about gradle or
ant files.
+This setup also allows the commit to be tested on `main` and `branch_8x`
simultaneously.
=== Setup
-Wherever you store your source code, create a root folder for lucene-solr.
+Wherever you store your source code, create a root folder for solr.
```
-mkdir lucene-solr
+mkdir solr
```
-This folder is not a git folder however. Instead, it will hold all of our
lucene-solr git checkouts.
+This folder is not a git folder however. Instead, it will hold all of our solr
git checkouts.
```bash
-cd lucene-solr
-# Master will be the main lucene-solr checkout, that all worktrees stem from.
-git clone [email protected]:apache/lucene-solr.git master
-cd master
+cd solr
+# "Main" will be the main lucene-solr checkout, that all worktrees stem from.
+git clone [email protected]:apache/solr.git main
+cd main
+# For older versions we need to add the older lucene-solr repository as a
remote
+git remote add -f lucene-solr [email protected]:apache/lucene-solr.git
# For each branch that you want a separate directory created for, add a
worktree
-git worktree add ../8x branch_8x
+git worktree add ../8x lucene-solr/branch_8x
# If you plan on working on older versions of Solr as well, make worktrees for
them too
-git worktree add ../7x branch_7x
+git worktree add ../7x lucene-solr/branch_7x
```
=== Using the Worktrees
It's not necessary to create a worktree for every branch you are working on.
Creating repositories for each relevant major version is likely sufficient,
because the differences between minor versions is likely not great enough to
require a whole new folder.
-Therefore most developers will only need 2, master and the lastest major
version.
+Therefore most developers will only need 2, main and the lastest major version.
Whenever working on a minor release branch, you can easily use the worktree
that corresponds to the same major version.
If you are using IntelliJ, you will likely want to load each of the worktrees
as a separate project.
-That way when you switch between them, IntelliJ will not have to re-build the
project fully.
\ No newline at end of file
+That way when you switch between them, IntelliJ will not have to re-build the
project fully.