2016-04-07 22:46:00 +02:00
Commit Dance
============
2016-04-06 03:12:10 +02:00
2016-04-07 22:46:00 +02:00
**Update:** commit dance became much simpler after
[removing psl-monad submodule ](https://github.com/PowerShell/PowerShell/issues/656 ).
Thus, this really only applies to `src/windows-build` and
`src/Modules/Pester` . If you need to touch their content, this doc
provides the overview of the process. Remember that it's written
against `src/monad` submodule, which doesn't exist anymore.
Also see the [submodules documentation ](./submodules.md ).
2016-04-06 03:12:10 +02:00
Sometimes, you need to do the work in a submodule (i.e. you added a new string in `.resx` file).
2016-03-11 21:14:52 +01:00
The submodule has a relationship to the SuperProject (PowerShell), but in order to be sure that CI is
2016-03-11 02:49:37 +01:00
notified about changes in a submodule, you need be sure that this is reflected as a pull request in the SuperProject.
2016-03-11 21:14:52 +01:00
**Scenario**: Jim fixes issue in `src/monad/monad/src/engine/DataStoreAdapter.cs`
2016-03-11 02:49:37 +01:00
the following takes place in the submodule:
2016-03-11 21:14:52 +01:00
* Make the code change
* Commit the code change in a feature branch. Branch name in form `<alias>/<moniker>` , i.e `jim/colon-drive` .
* Push the branch (in the submodule project): `git push origin jim/colon-drive`
* Pull request in the submodule to notify people via email about new code review.
Then, in the SuperProject (PowerShell)
* `git status` should show a change of submodule **as a whole** (not individual files). _In my case_ it is `src/monad` .
* `git diff` should show something like
2016-03-11 02:49:37 +01:00
2016-03-11 21:14:52 +01:00
```diff
index 1ba8dd4..ed5d202 160000
--- a/src/monad
+++ b/src/monad
@@ -1 +1 @@
-Subproject commit 1ba8dd4f721f2cd4363f64609515ec1600378c30
+Subproject commit ed5d2022617f317a78a8a57e2c257c8e29cddbd5
```
2016-03-11 02:49:37 +01:00
2016-03-11 21:14:52 +01:00
* Commit that change into a branch with the same name, i.e. `jim/colon-drive`
* Push the branch (in the SuperProject): `git push origin jim/colon-drive`
* Pull request in the superproject to kick-in CI build and notify people. Reference submodule pull-request in the PR message to make navigation between two simpler.
2016-03-11 02:49:37 +01:00
2016-04-07 22:47:07 +02:00
Commands log
------------
2016-03-11 21:14:52 +01:00
Here is a transcript of command Jim used:
2016-04-07 22:47:07 +02:00
```sh
2016-03-11 02:49:37 +01:00
cd $HOME/PowerShell/src/monad/monad/src/engine
vi DataStoreAdapter.cs
2016-03-11 21:14:52 +01:00
git checkout -b jim/colon-drive
2016-03-11 02:49:37 +01:00
git commit -a
2016-03-11 21:14:52 +01:00
git push origin jim/colon-drive
2016-03-11 02:49:37 +01:00
```
then I went to the web interface and did the pull request *in the submodule* . After that, back to the commandline:
2016-04-07 22:47:07 +02:00
```sh
2016-03-11 02:49:37 +01:00
cd $HOME/PowerShell
2016-03-11 21:14:52 +01:00
git checkout -b jim/colon-drive
2016-03-11 02:49:37 +01:00
git commit -a
2016-03-11 21:14:52 +01:00
git push origin jim/colon-drive
2016-03-11 02:49:37 +01:00
```
and back to the web interface for the pull request *in the superproject* .