Skip to content

Commit

Permalink
Merge pull request #259 from GoogleCloudPlatform/tswast-pull-java-rep…
Browse files Browse the repository at this point in the history
…o-tools

Update to latest java-repo-tools.
  • Loading branch information
tswast authored Jun 20, 2016
2 parents b50e720 + 346295f commit 7986276
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 36 deletions.
49 changes: 14 additions & 35 deletions java-repo-tools/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,34 +27,21 @@ git remote add java-repo-tools git@github.com:GoogleCloudPlatform/java-repo-tool
git fetch java-repo-tools master
```

To make it easier to push changes back upstream, create a new branch.

```
git checkout -b java-repo-tools java-repo-tools/master
```

We can then go back to the `my-java-samples` code and prepare a Pull Request to
add the `java-repo-tools` code in a subtree.

```
git checkout master
# Making a new branch ia optional, but recommended to send a pull request to
# start using java-repo-tools.
git checkout -b use-java-repo-tools
```

So that we can pull future updates from the `java-repo-tools` repository, we
merge histories. This way we won't get unnecessary conflicts when pulling changes
in.
add the `java-repo-tools` code in a subtree. Making a new branch is optional, but
recommended so that you can more easily send a pull request to start using
`java-repo-tools`.

```
git merge -s ours --no-commit java-repo-tools/master
git checkout -b use-java-repo-tools origin/master
```

Finally, read the `java-repo-tools` into a subtree.
Finally, read the `java-repo-tools` into a subtree. So that you can pull future
updates from the `java-repo-tools` repository, this command will merge histories.
This way prevents unnecessary conflicts when pulling changes in.

```
git read-tree --prefix=java-repo-tools/ -u java-repo-tools
git subtree add --prefix=java-repo-tools java-repo-tools master
```

Now all the content of `java-repo-tools` will be in the `java-repo-tools/`
Expand Down Expand Up @@ -143,22 +130,14 @@ Pull Request as you would in the normal flow.
What if you make changes in your repository and now want to push them upstream?

Assuming you just commited changes in the `java-repo-tools/` directory of your
`my-main-branch`, to merge the changes into the local `java-repo-tools` branch,
we need to cherry pick this commit using the subtree strategy. It will ignore
any changes to file not in the `java-repo-tools/` directory.

```
git checkout java-repo-tools
git cherry-pick -x --strategy=subtree my-main-branch
```

After you have committed all the changes you want to your `java-repo-tools`
branch, you can push to the upstream `java-repo-tools` repository with the
following command. (Replace `name-for-remote-branch` with the name you'd like to
give the branch on the `java-repo-tools` repository.)
`my-main-branch`, to split the `java-repo-tools` changes into their own branch.
The first time using the `subtree` command, we may need to use the `--rejoin`
argument.

```
git push java-repo-tools java-repo-tools:name-for-remote-branch
git subtree split --prefix=java-repo-tools -b ${USER}-push-java-repo-tools
git checkout ${USER}-push-java-repo-tools
git push java-repo-tools ${USER}-push-java-repo-tools
```

Then, you can send a pull request to the `java-repo-tools` repository.
Expand Down
94 changes: 94 additions & 0 deletions java-repo-tools/scripts/test-localhost.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
#!/usr/bin/env bash
# Copyright 2016 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Usage:
# test-localhost.sh deployment-type path/to/project -- [maven arguments]
#
# This script runs a localhost server Maven plugin and verifies that a request
# to http://localhost:8080/ does not return an error code.

print_usage () {
echo "Usage:" >&2
echo " $0 server-type path/to/project [-- maven arguments]" >&2
echo >&2
echo "server-type can be any of the following:" >&2
echo " appengine" >&2
echo " jetty" >&2
echo " spring-boot" >&2
}

if [[ -z "$1" ]]; then
echo "Missing server-type parameter." >&2
print_usage
exit 1
fi
case $1 in
appengine)
mvn_plugin="appengine:devserver"
server_started_message="localhost:8080"
;;
jetty)
mvn_plugin="jetty:run-exploded"
server_started_message="Started Jetty Server"
;;
spring-boot)
mvn_plugin="spring-boot:run"
server_started_message="Tomcat started on port(s): 8080 (http)"
;;
*)
print_usage
exit 1
;;
esac

if [[ -z "$2" ]]; then
echo "Missing directory parameter." >&2
print_usage
exit 1
fi
code_path=$2

mvn_command="mvn --batch-mode clean ${mvn_plugin} -DskipTests"
if [[ "$3" == "--" ]]; then
shift 3
for mvn_arg in "${@}"; do
mvn_command="${mvn_command} ${mvn_arg}"
done
elif [[ -n "$3" ]]; then
echo "Got unexpected third argument" >&2
print_usage
exit 1
fi

set -e
set -x

(
cd "$code_path"
expect -c "
spawn ${mvn_command}
set timeout 600
expect \"${server_started_message}\"
"'sleep 10
spawn curl --silent --output /dev/stderr --write-out "%{http_code}" http://localhost:8080/
expect {
"200" {
exit
}
}
exit 1
'
)

2 changes: 1 addition & 1 deletion travis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,6 @@ devserver_tests=(
appengine/datastore/indexes-perfect
)
for testdir in ${devserver_tests[@]} ; do
./java-repo-tools/test-devserver.sh "${testdir}"
./java-repo-tools/scripts/test-localhost.sh appengine "${testdir}"
done

0 comments on commit 7986276

Please sign in to comment.