├── HEAD ├── ORIG_HEAD ├── refs ├── heads │ └── master └── remotes │ ├── origin │ ├── HEAD │ └── master │ └── upstream │ ├── HEAD │ └── master ├── COMMIT_EDITMSG ├── index ├── description ├── dropdown.png ├── favicon.png ├── rocketlogo.bmp ├── rocketlogo.png ├── dropdown@2x.png ├── README.md ├── FETCH_HEAD ├── Launcher-Calculator-ogimage.png ├── packed-refs ├── objects ├── 11 │ └── 0690e75189f06dc812b27bdafea7929a1f5635 ├── 15 │ └── 580a9084cd32c075944b7c8d93bcd3b3d6576a ├── 19 │ └── e16cac7a59776f132a5ef593a5076f7e2f1ed3 ├── 23 │ └── acf3b8849f5e6d3574ba296e3465ad90001e1b ├── 73 │ └── 8c65770c3002dbcce27689b35e730c309ce948 ├── 78 │ └── a6ceec5f0c5c75ae6dfc9ad24b78a596026405 ├── 90 │ └── c086928292d7dd0009b6fdb6b783a437c21d18 ├── 95 │ └── 1d2907b8a07526f4f83c35d6a6cdd4d33d12e8 ├── 97 │ └── 53271b5c0281eba585ef17e7494eef10b667a0 ├── 0a │ └── 52f0e77476c9630642fa4502d8f6f6f5d8b71b ├── 1b │ └── 49047257d14b5737caaac5d0a902c832b1ff93 ├── 1e │ └── 6e3f2328d6a2be8da468cc68b4033725a78e0c ├── 1f │ └── bdeaaa25f92446e6fd5df5390c3f1204a9acbe ├── 3d │ └── 7d5723710ee8023dfa800c39e0dc37827723ac ├── 5f │ ├── 093fef1be094b03700acf2a588132658c0247e │ └── c10a5300257cb5b597c5d827dc84532440b918 ├── 9f │ └── 4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e ├── a7 │ └── 0534f6c2bcc6a6c626e82f624fbc393ffc0c1b ├── a8 │ └── 261ae54719c53f310068619c0e379130e09b84 ├── ab │ └── e18c9c50cebd339ebaaf79e5d02d4834f173d4 ├── ad │ └── 8ff6343e5d793a4a666074b11245b49b2a28ed ├── b0 │ └── 9f57c73de2f89efe20c3c4a3e45e210cb28c55 ├── b5 │ └── 2cf5189c9793461933fc659f2e185d1d1c2deb ├── ba │ └── 004dd3287c160675a4d53e29bdcf20abe3dbe2 ├── ce │ └── 7e2f450d3db720f432ca0d524e4e153a778f75 ├── cf │ └── 27dbdc4d7f1dc8954626505ff0df4ef71bbcda ├── e5 │ └── 7e6d1b2e33a72c2f667d0fc934fd33f20731f7 ├── f7 │ └── 9d61fef877dcff76c822861d1863c61a27fa5a └── pack │ ├── pack-727da6f8c5dbe0aa20405c5242433ffc817d8ac9.idx │ └── pack-727da6f8c5dbe0aa20405c5242433ffc817d8ac9.pack ├── logs ├── refs │ ├── remotes │ │ ├── upstream │ │ │ ├── HEAD │ │ │ └── master │ │ └── origin │ │ │ ├── master │ │ │ └── HEAD │ └── heads │ │ └── master └── HEAD ├── hooks ├── post-update.sample ├── pre-merge-commit.sample ├── pre-applypatch.sample ├── applypatch-msg.sample ├── pre-receive.sample ├── commit-msg.sample ├── pre-push.sample ├── prepare-commit-msg.sample ├── pre-commit.sample ├── push-to-checkout.sample ├── update.sample ├── fsmonitor-watchman.sample └── pre-rebase.sample ├── info └── exclude ├── config ├── LICENSE └── .github └── workflows └── main.yml /HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /ORIG_HEAD: -------------------------------------------------------------------------------- 1 | a8261ae54719c53f310068619c0e379130e09b84 2 | -------------------------------------------------------------------------------- /refs/heads/master: -------------------------------------------------------------------------------- 1 | b09f57c73de2f89efe20c3c4a3e45e210cb28c55 2 | -------------------------------------------------------------------------------- /refs/remotes/origin/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/remotes/origin/master 2 | -------------------------------------------------------------------------------- /refs/remotes/upstream/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/remotes/upstream/master 2 | -------------------------------------------------------------------------------- /COMMIT_EDITMSG: -------------------------------------------------------------------------------- 1 | Update index.html 2 | 3 | Added Miura 5 (PLD Space) 4 | -------------------------------------------------------------------------------- /refs/remotes/origin/master: -------------------------------------------------------------------------------- 1 | b09f57c73de2f89efe20c3c4a3e45e210cb28c55 2 | -------------------------------------------------------------------------------- /refs/remotes/upstream/master: -------------------------------------------------------------------------------- 1 | a3a2857505c49d1beb86128020036ec30d082fd7 2 | -------------------------------------------------------------------------------- /index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/index -------------------------------------------------------------------------------- /description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /dropdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/dropdown.png -------------------------------------------------------------------------------- /favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/favicon.png -------------------------------------------------------------------------------- /rocketlogo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/rocketlogo.bmp -------------------------------------------------------------------------------- /rocketlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/rocketlogo.png -------------------------------------------------------------------------------- /dropdown@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/dropdown@2x.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Launcher-Calculator 2 | An open source orbital launch vehicle payload calculator by Launcher 3 | -------------------------------------------------------------------------------- /FETCH_HEAD: -------------------------------------------------------------------------------- 1 | b09f57c73de2f89efe20c3c4a3e45e210cb28c55 branch 'master' of https://github.com/LauncherSpace/Launcher-Calculator 2 | -------------------------------------------------------------------------------- /Launcher-Calculator-ogimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/Launcher-Calculator-ogimage.png -------------------------------------------------------------------------------- /packed-refs: -------------------------------------------------------------------------------- 1 | # pack-refs with: peeled fully-peeled sorted 2 | a3a2857505c49d1beb86128020036ec30d082fd7 refs/remotes/origin/master 3 | -------------------------------------------------------------------------------- /objects/0a/52f0e77476c9630642fa4502d8f6f6f5d8b71b: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/0a/52f0e77476c9630642fa4502d8f6f6f5d8b71b -------------------------------------------------------------------------------- /objects/11/0690e75189f06dc812b27bdafea7929a1f5635: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/11/0690e75189f06dc812b27bdafea7929a1f5635 -------------------------------------------------------------------------------- /objects/15/580a9084cd32c075944b7c8d93bcd3b3d6576a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/15/580a9084cd32c075944b7c8d93bcd3b3d6576a -------------------------------------------------------------------------------- /objects/19/e16cac7a59776f132a5ef593a5076f7e2f1ed3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/19/e16cac7a59776f132a5ef593a5076f7e2f1ed3 -------------------------------------------------------------------------------- /objects/1b/49047257d14b5737caaac5d0a902c832b1ff93: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/1b/49047257d14b5737caaac5d0a902c832b1ff93 -------------------------------------------------------------------------------- /objects/1e/6e3f2328d6a2be8da468cc68b4033725a78e0c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/1e/6e3f2328d6a2be8da468cc68b4033725a78e0c -------------------------------------------------------------------------------- /objects/1f/bdeaaa25f92446e6fd5df5390c3f1204a9acbe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/1f/bdeaaa25f92446e6fd5df5390c3f1204a9acbe -------------------------------------------------------------------------------- /objects/23/acf3b8849f5e6d3574ba296e3465ad90001e1b: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/23/acf3b8849f5e6d3574ba296e3465ad90001e1b -------------------------------------------------------------------------------- /objects/3d/7d5723710ee8023dfa800c39e0dc37827723ac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/3d/7d5723710ee8023dfa800c39e0dc37827723ac -------------------------------------------------------------------------------- /objects/5f/093fef1be094b03700acf2a588132658c0247e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/5f/093fef1be094b03700acf2a588132658c0247e -------------------------------------------------------------------------------- /objects/5f/c10a5300257cb5b597c5d827dc84532440b918: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/5f/c10a5300257cb5b597c5d827dc84532440b918 -------------------------------------------------------------------------------- /objects/73/8c65770c3002dbcce27689b35e730c309ce948: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/73/8c65770c3002dbcce27689b35e730c309ce948 -------------------------------------------------------------------------------- /objects/78/a6ceec5f0c5c75ae6dfc9ad24b78a596026405: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/78/a6ceec5f0c5c75ae6dfc9ad24b78a596026405 -------------------------------------------------------------------------------- /objects/90/c086928292d7dd0009b6fdb6b783a437c21d18: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/90/c086928292d7dd0009b6fdb6b783a437c21d18 -------------------------------------------------------------------------------- /objects/95/1d2907b8a07526f4f83c35d6a6cdd4d33d12e8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/95/1d2907b8a07526f4f83c35d6a6cdd4d33d12e8 -------------------------------------------------------------------------------- /objects/97/53271b5c0281eba585ef17e7494eef10b667a0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/97/53271b5c0281eba585ef17e7494eef10b667a0 -------------------------------------------------------------------------------- /objects/9f/4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/9f/4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e -------------------------------------------------------------------------------- /objects/a7/0534f6c2bcc6a6c626e82f624fbc393ffc0c1b: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/a7/0534f6c2bcc6a6c626e82f624fbc393ffc0c1b -------------------------------------------------------------------------------- /objects/a8/261ae54719c53f310068619c0e379130e09b84: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/a8/261ae54719c53f310068619c0e379130e09b84 -------------------------------------------------------------------------------- /objects/ab/e18c9c50cebd339ebaaf79e5d02d4834f173d4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/ab/e18c9c50cebd339ebaaf79e5d02d4834f173d4 -------------------------------------------------------------------------------- /objects/ad/8ff6343e5d793a4a666074b11245b49b2a28ed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/ad/8ff6343e5d793a4a666074b11245b49b2a28ed -------------------------------------------------------------------------------- /objects/b0/9f57c73de2f89efe20c3c4a3e45e210cb28c55: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/b0/9f57c73de2f89efe20c3c4a3e45e210cb28c55 -------------------------------------------------------------------------------- /objects/b5/2cf5189c9793461933fc659f2e185d1d1c2deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/b5/2cf5189c9793461933fc659f2e185d1d1c2deb -------------------------------------------------------------------------------- /objects/ba/004dd3287c160675a4d53e29bdcf20abe3dbe2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/ba/004dd3287c160675a4d53e29bdcf20abe3dbe2 -------------------------------------------------------------------------------- /objects/ce/7e2f450d3db720f432ca0d524e4e153a778f75: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/ce/7e2f450d3db720f432ca0d524e4e153a778f75 -------------------------------------------------------------------------------- /objects/cf/27dbdc4d7f1dc8954626505ff0df4ef71bbcda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/cf/27dbdc4d7f1dc8954626505ff0df4ef71bbcda -------------------------------------------------------------------------------- /objects/e5/7e6d1b2e33a72c2f667d0fc934fd33f20731f7: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/e5/7e6d1b2e33a72c2f667d0fc934fd33f20731f7 -------------------------------------------------------------------------------- /objects/f7/9d61fef877dcff76c822861d1863c61a27fa5a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/f7/9d61fef877dcff76c822861d1863c61a27fa5a -------------------------------------------------------------------------------- /logs/refs/remotes/upstream/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 a3a2857505c49d1beb86128020036ec30d082fd7 unknown 1681752174 -0700 remote set-head 2 | -------------------------------------------------------------------------------- /objects/pack/pack-727da6f8c5dbe0aa20405c5242433ffc817d8ac9.idx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/pack/pack-727da6f8c5dbe0aa20405c5242433ffc817d8ac9.idx -------------------------------------------------------------------------------- /objects/pack/pack-727da6f8c5dbe0aa20405c5242433ffc817d8ac9.pack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LauncherSpace/Launcher-Calculator/HEAD/objects/pack/pack-727da6f8c5dbe0aa20405c5242433ffc817d8ac9.pack -------------------------------------------------------------------------------- /hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /logs/refs/remotes/upstream/master: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 a3a2857505c49d1beb86128020036ec30d082fd7 igorlauncher 1681752174 -0700 fetch --progress --prune --recurse-submodules=on-demand upstream: storing head 2 | -------------------------------------------------------------------------------- /info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /hooks/pre-merge-commit.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed. 4 | # Called by "git merge" with no arguments. The hook should 5 | # exit with non-zero status after issuing an appropriate message to 6 | # stderr if it wants to stop the merge commit. 7 | # 8 | # To enable this hook, rename this file to "pre-merge-commit". 9 | 10 | . git-sh-setup 11 | test -x "$GIT_DIR/hooks/pre-commit" && 12 | exec "$GIT_DIR/hooks/pre-commit" 13 | : 14 | -------------------------------------------------------------------------------- /hooks/pre-applypatch.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed 4 | # by applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. 8 | # 9 | # To enable this hook, rename this file to "pre-applypatch". 10 | 11 | . git-sh-setup 12 | precommit="$(git rev-parse --git-path hooks/pre-commit)" 13 | test -x "$precommit" && exec "$precommit" ${1+"$@"} 14 | : 15 | -------------------------------------------------------------------------------- /config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = false 4 | bare = false 5 | logallrefupdates = true 6 | symlinks = false 7 | ignorecase = true 8 | [submodule] 9 | active = . 10 | [remote "origin"] 11 | url = https://github.com/LauncherSpace/Launcher-Calculator.git 12 | fetch = +refs/heads/*:refs/remotes/origin/* 13 | [branch "master"] 14 | remote = origin 15 | merge = refs/heads/master 16 | [remote "upstream"] 17 | url = https://github.com/LauncherSpace/Launcher-Calculator.git 18 | fetch = +refs/heads/*:refs/remotes/upstream/* 19 | -------------------------------------------------------------------------------- /hooks/applypatch-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message taken by 4 | # applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. The hook is 8 | # allowed to edit the commit message file. 9 | # 10 | # To enable this hook, rename this file to "applypatch-msg". 11 | 12 | . git-sh-setup 13 | commitmsg="$(git rev-parse --git-path hooks/commit-msg)" 14 | test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} 15 | : 16 | -------------------------------------------------------------------------------- /hooks/pre-receive.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to make use of push options. 4 | # The example simply echoes all push options that start with 'echoback=' 5 | # and rejects all pushes when the "reject" push option is used. 6 | # 7 | # To enable this hook, rename this file to "pre-receive". 8 | 9 | if test -n "$GIT_PUSH_OPTION_COUNT" 10 | then 11 | i=0 12 | while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" 13 | do 14 | eval "value=\$GIT_PUSH_OPTION_$i" 15 | case "$value" in 16 | echoback=*) 17 | echo "echo from the pre-receive-hook: ${value#*=}" >&2 18 | ;; 19 | reject) 20 | exit 1 21 | esac 22 | i=$((i + 1)) 23 | done 24 | fi 25 | -------------------------------------------------------------------------------- /hooks/commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message. 4 | # Called by "git commit" with one argument, the name of the file 5 | # that has the commit message. The hook should exit with non-zero 6 | # status after issuing an appropriate message if it wants to stop the 7 | # commit. The hook is allowed to edit the commit message file. 8 | # 9 | # To enable this hook, rename this file to "commit-msg". 10 | 11 | # Uncomment the below to add a Signed-off-by line to the message. 12 | # Doing this in a hook is a bad idea in general, but the prepare-commit-msg 13 | # hook is more suited to it. 14 | # 15 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 16 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 17 | 18 | # This example catches duplicate Signed-off-by lines. 19 | 20 | test "" = "$(grep '^Signed-off-by: ' "$1" | 21 | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { 22 | echo >&2 Duplicate Signed-off-by lines. 23 | exit 1 24 | } 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Launcher 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | # Controls when the action will run. Triggers the workflow on push or pull request 6 | # events but only for the master branch 7 | on: 8 | push: 9 | branches: [ master ] 10 | pull_request: 11 | branches: [ master ] 12 | 13 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 14 | jobs: 15 | # This workflow contains a single job called "build" 16 | build: 17 | # The type of runner that the job will run on 18 | runs-on: ubuntu-latest 19 | 20 | # Steps represent a sequence of tasks that will be executed as part of the job 21 | steps: 22 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 23 | - uses: actions/checkout@v2 24 | 25 | # Runs a single command using the runners shell 26 | - name: Run a one-line script 27 | run: echo Hello, world! 28 | 29 | # Runs a set of commands using the runners shell 30 | - name: Run a multi-line script 31 | run: | 32 | echo Add other actions to build, 33 | echo test, and deploy your project. 34 | -------------------------------------------------------------------------------- /logs/refs/remotes/origin/master: -------------------------------------------------------------------------------- 1 | a3a2857505c49d1beb86128020036ec30d082fd7 1e6e3f2328d6a2be8da468cc68b4033725a78e0c igorlauncher 1681752462 -0700 update by push 2 | 1e6e3f2328d6a2be8da468cc68b4033725a78e0c 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe igorlauncher 1681801719 -0700 update by push 3 | 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe 15580a9084cd32c075944b7c8d93bcd3b3d6576a igorlauncher 1682560891 -0700 update by push 4 | 15580a9084cd32c075944b7c8d93bcd3b3d6576a f79d61fef877dcff76c822861d1863c61a27fa5a igorlauncher 1682748258 -0700 update by push 5 | f79d61fef877dcff76c822861d1863c61a27fa5a 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e igorlauncher 1684557868 -0700 update by push 6 | 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e 5f093fef1be094b03700acf2a588132658c0247e igorlauncher 1684561708 -0700 update by push 7 | 5f093fef1be094b03700acf2a588132658c0247e abe18c9c50cebd339ebaaf79e5d02d4834f173d4 igorlauncher 1684883475 -0700 update by push 8 | abe18c9c50cebd339ebaaf79e5d02d4834f173d4 5fc10a5300257cb5b597c5d827dc84532440b918 igorlauncher 1690138209 -0700 update by push 9 | 5fc10a5300257cb5b597c5d827dc84532440b918 b09f57c73de2f89efe20c3c4a3e45e210cb28c55 igorlauncher 1696392117 -0700 update by push 10 | -------------------------------------------------------------------------------- /hooks/pre-push.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # An example hook script to verify what is about to be pushed. Called by "git 4 | # push" after it has checked the remote status, but before anything has been 5 | # pushed. If this script exits with a non-zero status nothing will be pushed. 6 | # 7 | # This hook is called with the following parameters: 8 | # 9 | # $1 -- Name of the remote to which the push is being done 10 | # $2 -- URL to which the push is being done 11 | # 12 | # If pushing without using a named remote those arguments will be equal. 13 | # 14 | # Information about the commits which are being pushed is supplied as lines to 15 | # the standard input in the form: 16 | # 17 | # 18 | # 19 | # This sample shows how to prevent push of commits where the log message starts 20 | # with "WIP" (work in progress). 21 | 22 | remote="$1" 23 | url="$2" 24 | 25 | zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" 48 | exit 1 49 | fi 50 | fi 51 | done 52 | 53 | exit 0 54 | -------------------------------------------------------------------------------- /hooks/prepare-commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare the commit log message. 4 | # Called by "git commit" with the name of the file that has the 5 | # commit message, followed by the description of the commit 6 | # message's source. The hook's purpose is to edit the commit 7 | # message file. If the hook fails with a non-zero status, 8 | # the commit is aborted. 9 | # 10 | # To enable this hook, rename this file to "prepare-commit-msg". 11 | 12 | # This hook includes three examples. The first one removes the 13 | # "# Please enter the commit message..." help message. 14 | # 15 | # The second includes the output of "git diff --name-status -r" 16 | # into the message, just before the "git status" output. It is 17 | # commented because it doesn't cope with --amend or with squashed 18 | # commits. 19 | # 20 | # The third example adds a Signed-off-by line to the message, that can 21 | # still be edited. This is rarely a good idea. 22 | 23 | COMMIT_MSG_FILE=$1 24 | COMMIT_SOURCE=$2 25 | SHA1=$3 26 | 27 | /usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" 28 | 29 | # case "$COMMIT_SOURCE,$SHA1" in 30 | # ,|template,) 31 | # /usr/bin/perl -i.bak -pe ' 32 | # print "\n" . `git diff --cached --name-status -r` 33 | # if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; 34 | # *) ;; 35 | # esac 36 | 37 | # SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 38 | # git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" 39 | # if test -z "$COMMIT_SOURCE" 40 | # then 41 | # /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" 42 | # fi 43 | -------------------------------------------------------------------------------- /hooks/pre-commit.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed. 4 | # Called by "git commit" with no arguments. The hook should 5 | # exit with non-zero status after issuing an appropriate message if 6 | # it wants to stop the commit. 7 | # 8 | # To enable this hook, rename this file to "pre-commit". 9 | 10 | if git rev-parse --verify HEAD >/dev/null 2>&1 11 | then 12 | against=HEAD 13 | else 14 | # Initial commit: diff against an empty tree object 15 | against=$(git hash-object -t tree /dev/null) 16 | fi 17 | 18 | # If you want to allow non-ASCII filenames set this variable to true. 19 | allownonascii=$(git config --type=bool hooks.allownonascii) 20 | 21 | # Redirect output to stderr. 22 | exec 1>&2 23 | 24 | # Cross platform projects tend to avoid non-ASCII filenames; prevent 25 | # them from being added to the repository. We exploit the fact that the 26 | # printable range starts at the space character and ends with tilde. 27 | if [ "$allownonascii" != "true" ] && 28 | # Note that the use of brackets around a tr range is ok here, (it's 29 | # even required, for portability to Solaris 10's /usr/bin/tr), since 30 | # the square bracket bytes happen to fall in the designated range. 31 | test $(git diff --cached --name-only --diff-filter=A -z $against | 32 | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 33 | then 34 | cat <<\EOF 35 | Error: Attempt to add a non-ASCII file name. 36 | 37 | This can cause problems if you want to work with people on other platforms. 38 | 39 | To be portable it is advisable to rename the file. 40 | 41 | If you know what you are doing you can disable this check using: 42 | 43 | git config hooks.allownonascii true 44 | EOF 45 | exit 1 46 | fi 47 | 48 | # If there are whitespace errors, print the offending file names and fail. 49 | exec git diff-index --check --cached $against -- 50 | -------------------------------------------------------------------------------- /logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 a3a2857505c49d1beb86128020036ec30d082fd7 igorlauncher 1681752171 -0700 clone: from https://github.com/LauncherSpace/Launcher-Calculator.git 2 | a3a2857505c49d1beb86128020036ec30d082fd7 a8261ae54719c53f310068619c0e379130e09b84 igorlauncher 1681752261 -0700 commit: Update index.html 3 | a8261ae54719c53f310068619c0e379130e09b84 a3a2857505c49d1beb86128020036ec30d082fd7 igorlauncher 1681752268 -0700 reset: moving to a3a2857505c49d1beb86128020036ec30d082fd7 4 | a3a2857505c49d1beb86128020036ec30d082fd7 1e6e3f2328d6a2be8da468cc68b4033725a78e0c igorlauncher 1681752454 -0700 commit: Update index.html 5 | 1e6e3f2328d6a2be8da468cc68b4033725a78e0c 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe igorlauncher 1681801715 -0700 commit: Update index.html 6 | 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe 15580a9084cd32c075944b7c8d93bcd3b3d6576a igorlauncher 1682560889 -0700 commit: Update index.html 7 | 15580a9084cd32c075944b7c8d93bcd3b3d6576a f79d61fef877dcff76c822861d1863c61a27fa5a igorlauncher 1682748253 -0700 commit: Update index.html 8 | f79d61fef877dcff76c822861d1863c61a27fa5a 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e igorlauncher 1684531265 -0700 commit: Update index.html 9 | 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e 5f093fef1be094b03700acf2a588132658c0247e igorlauncher 1684561705 -0700 commit: Update index.html 10 | 5f093fef1be094b03700acf2a588132658c0247e abe18c9c50cebd339ebaaf79e5d02d4834f173d4 igorlauncher 1684883471 -0700 commit: Update index.html 11 | abe18c9c50cebd339ebaaf79e5d02d4834f173d4 5fc10a5300257cb5b597c5d827dc84532440b918 igorlauncher 1690138202 -0700 commit: Update index.html 12 | 5fc10a5300257cb5b597c5d827dc84532440b918 b09f57c73de2f89efe20c3c4a3e45e210cb28c55 igorlauncher 1696392111 -0700 commit: Update index.html 13 | -------------------------------------------------------------------------------- /logs/refs/heads/master: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 a3a2857505c49d1beb86128020036ec30d082fd7 igorlauncher 1681752171 -0700 clone: from https://github.com/LauncherSpace/Launcher-Calculator.git 2 | a3a2857505c49d1beb86128020036ec30d082fd7 a8261ae54719c53f310068619c0e379130e09b84 igorlauncher 1681752261 -0700 commit: Update index.html 3 | a8261ae54719c53f310068619c0e379130e09b84 a3a2857505c49d1beb86128020036ec30d082fd7 igorlauncher 1681752268 -0700 reset: moving to a3a2857505c49d1beb86128020036ec30d082fd7 4 | a3a2857505c49d1beb86128020036ec30d082fd7 1e6e3f2328d6a2be8da468cc68b4033725a78e0c igorlauncher 1681752454 -0700 commit: Update index.html 5 | 1e6e3f2328d6a2be8da468cc68b4033725a78e0c 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe igorlauncher 1681801715 -0700 commit: Update index.html 6 | 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe 15580a9084cd32c075944b7c8d93bcd3b3d6576a igorlauncher 1682560889 -0700 commit: Update index.html 7 | 15580a9084cd32c075944b7c8d93bcd3b3d6576a f79d61fef877dcff76c822861d1863c61a27fa5a igorlauncher 1682748253 -0700 commit: Update index.html 8 | f79d61fef877dcff76c822861d1863c61a27fa5a 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e igorlauncher 1684531265 -0700 commit: Update index.html 9 | 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e 5f093fef1be094b03700acf2a588132658c0247e igorlauncher 1684561705 -0700 commit: Update index.html 10 | 5f093fef1be094b03700acf2a588132658c0247e abe18c9c50cebd339ebaaf79e5d02d4834f173d4 igorlauncher 1684883471 -0700 commit: Update index.html 11 | abe18c9c50cebd339ebaaf79e5d02d4834f173d4 5fc10a5300257cb5b597c5d827dc84532440b918 igorlauncher 1690138202 -0700 commit: Update index.html 12 | 5fc10a5300257cb5b597c5d827dc84532440b918 b09f57c73de2f89efe20c3c4a3e45e210cb28c55 igorlauncher 1696392111 -0700 commit: Update index.html 13 | -------------------------------------------------------------------------------- /logs/refs/remotes/origin/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 a3a2857505c49d1beb86128020036ec30d082fd7 igorlauncher 1681752171 -0700 clone: from https://github.com/LauncherSpace/Launcher-Calculator.git 2 | a3a2857505c49d1beb86128020036ec30d082fd7 a3a2857505c49d1beb86128020036ec30d082fd7 unknown 1681752173 -0700 remote set-head 3 | a3a2857505c49d1beb86128020036ec30d082fd7 a3a2857505c49d1beb86128020036ec30d082fd7 unknown 1681752443 -0700 remote set-head 4 | 1e6e3f2328d6a2be8da468cc68b4033725a78e0c 1e6e3f2328d6a2be8da468cc68b4033725a78e0c unknown 1681752463 -0700 remote set-head 5 | 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe unknown 1681801721 -0700 remote set-head 6 | 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe 1fbdeaaa25f92446e6fd5df5390c3f1204a9acbe unknown 1682560884 -0700 remote set-head 7 | 15580a9084cd32c075944b7c8d93bcd3b3d6576a 15580a9084cd32c075944b7c8d93bcd3b3d6576a unknown 1682560892 -0700 remote set-head 8 | 15580a9084cd32c075944b7c8d93bcd3b3d6576a 15580a9084cd32c075944b7c8d93bcd3b3d6576a unknown 1682748255 -0700 remote set-head 9 | f79d61fef877dcff76c822861d1863c61a27fa5a f79d61fef877dcff76c822861d1863c61a27fa5a unknown 1682748259 -0700 remote set-head 10 | f79d61fef877dcff76c822861d1863c61a27fa5a f79d61fef877dcff76c822861d1863c61a27fa5a unknown 1684531268 -0700 remote set-head 11 | 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e unknown 1684557869 -0700 remote set-head 12 | 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e 9f4e95f9ad7b8c9d3bbb0dfeda7425eac6cf467e unknown 1684561702 -0700 remote set-head 13 | 5f093fef1be094b03700acf2a588132658c0247e 5f093fef1be094b03700acf2a588132658c0247e unknown 1684561710 -0700 remote set-head 14 | 5f093fef1be094b03700acf2a588132658c0247e 5f093fef1be094b03700acf2a588132658c0247e unknown 1684883471 -0700 remote set-head 15 | abe18c9c50cebd339ebaaf79e5d02d4834f173d4 abe18c9c50cebd339ebaaf79e5d02d4834f173d4 unknown 1684883476 -0700 remote set-head 16 | 5fc10a5300257cb5b597c5d827dc84532440b918 5fc10a5300257cb5b597c5d827dc84532440b918 unknown 1690138210 -0700 remote set-head 17 | b09f57c73de2f89efe20c3c4a3e45e210cb28c55 b09f57c73de2f89efe20c3c4a3e45e210cb28c55 unknown 1696392118 -0700 remote set-head 18 | -------------------------------------------------------------------------------- /hooks/push-to-checkout.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # An example hook script to update a checked-out tree on a git push. 4 | # 5 | # This hook is invoked by git-receive-pack(1) when it reacts to git 6 | # push and updates reference(s) in its repository, and when the push 7 | # tries to update the branch that is currently checked out and the 8 | # receive.denyCurrentBranch configuration variable is set to 9 | # updateInstead. 10 | # 11 | # By default, such a push is refused if the working tree and the index 12 | # of the remote repository has any difference from the currently 13 | # checked out commit; when both the working tree and the index match 14 | # the current commit, they are updated to match the newly pushed tip 15 | # of the branch. This hook is to be used to override the default 16 | # behaviour; however the code below reimplements the default behaviour 17 | # as a starting point for convenient modification. 18 | # 19 | # The hook receives the commit with which the tip of the current 20 | # branch is going to be updated: 21 | commit=$1 22 | 23 | # It can exit with a non-zero status to refuse the push (when it does 24 | # so, it must not modify the index or the working tree). 25 | die () { 26 | echo >&2 "$*" 27 | exit 1 28 | } 29 | 30 | # Or it can make any necessary changes to the working tree and to the 31 | # index to bring them to the desired state when the tip of the current 32 | # branch is updated to the new commit, and exit with a zero status. 33 | # 34 | # For example, the hook can simply run git read-tree -u -m HEAD "$1" 35 | # in order to emulate git fetch that is run in the reverse direction 36 | # with git push, as the two-tree form of git read-tree -u -m is 37 | # essentially the same as git switch or git checkout that switches 38 | # branches while keeping the local changes in the working tree that do 39 | # not interfere with the difference between the branches. 40 | 41 | # The below is a more-or-less exact translation to shell of the C code 42 | # for the default behaviour for git's push-to-checkout hook defined in 43 | # the push_to_deploy() function in builtin/receive-pack.c. 44 | # 45 | # Note that the hook will be executed from the repository directory, 46 | # not from the working tree, so if you want to perform operations on 47 | # the working tree, you will have to adapt your code accordingly, e.g. 48 | # by adding "cd .." or using relative paths. 49 | 50 | if ! git update-index -q --ignore-submodules --refresh 51 | then 52 | die "Up-to-date check failed" 53 | fi 54 | 55 | if ! git diff-files --quiet --ignore-submodules -- 56 | then 57 | die "Working directory has unstaged changes" 58 | fi 59 | 60 | # This is a rough translation of: 61 | # 62 | # head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX 63 | if git cat-file -e HEAD 2>/dev/null 64 | then 65 | head=HEAD 66 | else 67 | head=$(git hash-object -t tree --stdin &2 35 | echo " (if you want, you could supply GIT_DIR then run" >&2 36 | echo " $0 )" >&2 37 | exit 1 38 | fi 39 | 40 | if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then 41 | echo "usage: $0 " >&2 42 | exit 1 43 | fi 44 | 45 | # --- Config 46 | allowunannotated=$(git config --type=bool hooks.allowunannotated) 47 | allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) 48 | denycreatebranch=$(git config --type=bool hooks.denycreatebranch) 49 | allowdeletetag=$(git config --type=bool hooks.allowdeletetag) 50 | allowmodifytag=$(git config --type=bool hooks.allowmodifytag) 51 | 52 | # check for no description 53 | projectdesc=$(sed -e '1q' "$GIT_DIR/description") 54 | case "$projectdesc" in 55 | "Unnamed repository"* | "") 56 | echo "*** Project description file hasn't been set" >&2 57 | exit 1 58 | ;; 59 | esac 60 | 61 | # --- Check types 62 | # if $newrev is 0000...0000, it's a commit to delete a ref. 63 | zero=$(git hash-object --stdin &2 76 | echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 77 | exit 1 78 | fi 79 | ;; 80 | refs/tags/*,delete) 81 | # delete tag 82 | if [ "$allowdeletetag" != "true" ]; then 83 | echo "*** Deleting a tag is not allowed in this repository" >&2 84 | exit 1 85 | fi 86 | ;; 87 | refs/tags/*,tag) 88 | # annotated tag 89 | if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 90 | then 91 | echo "*** Tag '$refname' already exists." >&2 92 | echo "*** Modifying a tag is not allowed in this repository." >&2 93 | exit 1 94 | fi 95 | ;; 96 | refs/heads/*,commit) 97 | # branch 98 | if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then 99 | echo "*** Creating a branch is not allowed in this repository" >&2 100 | exit 1 101 | fi 102 | ;; 103 | refs/heads/*,delete) 104 | # delete branch 105 | if [ "$allowdeletebranch" != "true" ]; then 106 | echo "*** Deleting a branch is not allowed in this repository" >&2 107 | exit 1 108 | fi 109 | ;; 110 | refs/remotes/*,commit) 111 | # tracking branch 112 | ;; 113 | refs/remotes/*,delete) 114 | # delete tracking branch 115 | if [ "$allowdeletebranch" != "true" ]; then 116 | echo "*** Deleting a tracking branch is not allowed in this repository" >&2 117 | exit 1 118 | fi 119 | ;; 120 | *) 121 | # Anything else (is there anything else?) 122 | echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 123 | exit 1 124 | ;; 125 | esac 126 | 127 | # --- Finished 128 | exit 0 129 | -------------------------------------------------------------------------------- /hooks/fsmonitor-watchman.sample: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | use IPC::Open2; 6 | 7 | # An example hook script to integrate Watchman 8 | # (https://facebook.github.io/watchman/) with git to speed up detecting 9 | # new and modified files. 10 | # 11 | # The hook is passed a version (currently 2) and last update token 12 | # formatted as a string and outputs to stdout a new update token and 13 | # all files that have been modified since the update token. Paths must 14 | # be relative to the root of the working tree and separated by a single NUL. 15 | # 16 | # To enable this hook, rename this file to "query-watchman" and set 17 | # 'git config core.fsmonitor .git/hooks/query-watchman' 18 | # 19 | my ($version, $last_update_token) = @ARGV; 20 | 21 | # Uncomment for debugging 22 | # print STDERR "$0 $version $last_update_token\n"; 23 | 24 | # Check the hook interface version 25 | if ($version ne 2) { 26 | die "Unsupported query-fsmonitor hook version '$version'.\n" . 27 | "Falling back to scanning...\n"; 28 | } 29 | 30 | my $git_work_tree = get_working_dir(); 31 | 32 | my $retry = 1; 33 | 34 | my $json_pkg; 35 | eval { 36 | require JSON::XS; 37 | $json_pkg = "JSON::XS"; 38 | 1; 39 | } or do { 40 | require JSON::PP; 41 | $json_pkg = "JSON::PP"; 42 | }; 43 | 44 | launch_watchman(); 45 | 46 | sub launch_watchman { 47 | my $o = watchman_query(); 48 | if (is_work_tree_watched($o)) { 49 | output_result($o->{clock}, @{$o->{files}}); 50 | } 51 | } 52 | 53 | sub output_result { 54 | my ($clockid, @files) = @_; 55 | 56 | # Uncomment for debugging watchman output 57 | # open (my $fh, ">", ".git/watchman-output.out"); 58 | # binmode $fh, ":utf8"; 59 | # print $fh "$clockid\n@files\n"; 60 | # close $fh; 61 | 62 | binmode STDOUT, ":utf8"; 63 | print $clockid; 64 | print "\0"; 65 | local $, = "\0"; 66 | print @files; 67 | } 68 | 69 | sub watchman_clock { 70 | my $response = qx/watchman clock "$git_work_tree"/; 71 | die "Failed to get clock id on '$git_work_tree'.\n" . 72 | "Falling back to scanning...\n" if $? != 0; 73 | 74 | return $json_pkg->new->utf8->decode($response); 75 | } 76 | 77 | sub watchman_query { 78 | my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') 79 | or die "open2() failed: $!\n" . 80 | "Falling back to scanning...\n"; 81 | 82 | # In the query expression below we're asking for names of files that 83 | # changed since $last_update_token but not from the .git folder. 84 | # 85 | # To accomplish this, we're using the "since" generator to use the 86 | # recency index to select candidate nodes and "fields" to limit the 87 | # output to file names only. Then we're using the "expression" term to 88 | # further constrain the results. 89 | my $last_update_line = ""; 90 | if (substr($last_update_token, 0, 1) eq "c") { 91 | $last_update_token = "\"$last_update_token\""; 92 | $last_update_line = qq[\n"since": $last_update_token,]; 93 | } 94 | my $query = <<" END"; 95 | ["query", "$git_work_tree", {$last_update_line 96 | "fields": ["name"], 97 | "expression": ["not", ["dirname", ".git"]] 98 | }] 99 | END 100 | 101 | # Uncomment for debugging the watchman query 102 | # open (my $fh, ">", ".git/watchman-query.json"); 103 | # print $fh $query; 104 | # close $fh; 105 | 106 | print CHLD_IN $query; 107 | close CHLD_IN; 108 | my $response = do {local $/; }; 109 | 110 | # Uncomment for debugging the watch response 111 | # open ($fh, ">", ".git/watchman-response.json"); 112 | # print $fh $response; 113 | # close $fh; 114 | 115 | die "Watchman: command returned no output.\n" . 116 | "Falling back to scanning...\n" if $response eq ""; 117 | die "Watchman: command returned invalid output: $response\n" . 118 | "Falling back to scanning...\n" unless $response =~ /^\{/; 119 | 120 | return $json_pkg->new->utf8->decode($response); 121 | } 122 | 123 | sub is_work_tree_watched { 124 | my ($output) = @_; 125 | my $error = $output->{error}; 126 | if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { 127 | $retry--; 128 | my $response = qx/watchman watch "$git_work_tree"/; 129 | die "Failed to make watchman watch '$git_work_tree'.\n" . 130 | "Falling back to scanning...\n" if $? != 0; 131 | $output = $json_pkg->new->utf8->decode($response); 132 | $error = $output->{error}; 133 | die "Watchman: $error.\n" . 134 | "Falling back to scanning...\n" if $error; 135 | 136 | # Uncomment for debugging watchman output 137 | # open (my $fh, ">", ".git/watchman-output.out"); 138 | # close $fh; 139 | 140 | # Watchman will always return all files on the first query so 141 | # return the fast "everything is dirty" flag to git and do the 142 | # Watchman query just to get it over with now so we won't pay 143 | # the cost in git to look up each individual file. 144 | my $o = watchman_clock(); 145 | $error = $output->{error}; 146 | 147 | die "Watchman: $error.\n" . 148 | "Falling back to scanning...\n" if $error; 149 | 150 | output_result($o->{clock}, ("/")); 151 | $last_update_token = $o->{clock}; 152 | 153 | eval { launch_watchman() }; 154 | return 0; 155 | } 156 | 157 | die "Watchman: $error.\n" . 158 | "Falling back to scanning...\n" if $error; 159 | 160 | return 1; 161 | } 162 | 163 | sub get_working_dir { 164 | my $working_dir; 165 | if ($^O =~ 'msys' || $^O =~ 'cygwin') { 166 | $working_dir = Win32::GetCwd(); 167 | $working_dir =~ tr/\\/\//; 168 | } else { 169 | require Cwd; 170 | $working_dir = Cwd::cwd(); 171 | } 172 | 173 | return $working_dir; 174 | } 175 | -------------------------------------------------------------------------------- /hooks/pre-rebase.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright (c) 2006, 2008 Junio C Hamano 4 | # 5 | # The "pre-rebase" hook is run just before "git rebase" starts doing 6 | # its job, and can prevent the command from running by exiting with 7 | # non-zero status. 8 | # 9 | # The hook is called with the following parameters: 10 | # 11 | # $1 -- the upstream the series was forked from. 12 | # $2 -- the branch being rebased (or empty when rebasing the current branch). 13 | # 14 | # This sample shows how to prevent topic branches that are already 15 | # merged to 'next' branch from getting rebased, because allowing it 16 | # would result in rebasing already published history. 17 | 18 | publish=next 19 | basebranch="$1" 20 | if test "$#" = 2 21 | then 22 | topic="refs/heads/$2" 23 | else 24 | topic=`git symbolic-ref HEAD` || 25 | exit 0 ;# we do not interrupt rebasing detached HEAD 26 | fi 27 | 28 | case "$topic" in 29 | refs/heads/??/*) 30 | ;; 31 | *) 32 | exit 0 ;# we do not interrupt others. 33 | ;; 34 | esac 35 | 36 | # Now we are dealing with a topic branch being rebased 37 | # on top of master. Is it OK to rebase it? 38 | 39 | # Does the topic really exist? 40 | git show-ref -q "$topic" || { 41 | echo >&2 "No such branch $topic" 42 | exit 1 43 | } 44 | 45 | # Is topic fully merged to master? 46 | not_in_master=`git rev-list --pretty=oneline ^master "$topic"` 47 | if test -z "$not_in_master" 48 | then 49 | echo >&2 "$topic is fully merged to master; better remove it." 50 | exit 1 ;# we could allow it, but there is no point. 51 | fi 52 | 53 | # Is topic ever merged to next? If so you should not be rebasing it. 54 | only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` 55 | only_next_2=`git rev-list ^master ${publish} | sort` 56 | if test "$only_next_1" = "$only_next_2" 57 | then 58 | not_in_topic=`git rev-list "^$topic" master` 59 | if test -z "$not_in_topic" 60 | then 61 | echo >&2 "$topic is already up to date with master" 62 | exit 1 ;# we could allow it, but there is no point. 63 | else 64 | exit 0 65 | fi 66 | else 67 | not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` 68 | /usr/bin/perl -e ' 69 | my $topic = $ARGV[0]; 70 | my $msg = "* $topic has commits already merged to public branch:\n"; 71 | my (%not_in_next) = map { 72 | /^([0-9a-f]+) /; 73 | ($1 => 1); 74 | } split(/\n/, $ARGV[1]); 75 | for my $elem (map { 76 | /^([0-9a-f]+) (.*)$/; 77 | [$1 => $2]; 78 | } split(/\n/, $ARGV[2])) { 79 | if (!exists $not_in_next{$elem->[0]}) { 80 | if ($msg) { 81 | print STDERR $msg; 82 | undef $msg; 83 | } 84 | print STDERR " $elem->[1]\n"; 85 | } 86 | } 87 | ' "$topic" "$not_in_next" "$not_in_master" 88 | exit 1 89 | fi 90 | 91 | <<\DOC_END 92 | 93 | This sample hook safeguards topic branches that have been 94 | published from being rewound. 95 | 96 | The workflow assumed here is: 97 | 98 | * Once a topic branch forks from "master", "master" is never 99 | merged into it again (either directly or indirectly). 100 | 101 | * Once a topic branch is fully cooked and merged into "master", 102 | it is deleted. If you need to build on top of it to correct 103 | earlier mistakes, a new topic branch is created by forking at 104 | the tip of the "master". This is not strictly necessary, but 105 | it makes it easier to keep your history simple. 106 | 107 | * Whenever you need to test or publish your changes to topic 108 | branches, merge them into "next" branch. 109 | 110 | The script, being an example, hardcodes the publish branch name 111 | to be "next", but it is trivial to make it configurable via 112 | $GIT_DIR/config mechanism. 113 | 114 | With this workflow, you would want to know: 115 | 116 | (1) ... if a topic branch has ever been merged to "next". Young 117 | topic branches can have stupid mistakes you would rather 118 | clean up before publishing, and things that have not been 119 | merged into other branches can be easily rebased without 120 | affecting other people. But once it is published, you would 121 | not want to rewind it. 122 | 123 | (2) ... if a topic branch has been fully merged to "master". 124 | Then you can delete it. More importantly, you should not 125 | build on top of it -- other people may already want to 126 | change things related to the topic as patches against your 127 | "master", so if you need further changes, it is better to 128 | fork the topic (perhaps with the same name) afresh from the 129 | tip of "master". 130 | 131 | Let's look at this example: 132 | 133 | o---o---o---o---o---o---o---o---o---o "next" 134 | / / / / 135 | / a---a---b A / / 136 | / / / / 137 | / / c---c---c---c B / 138 | / / / \ / 139 | / / / b---b C \ / 140 | / / / / \ / 141 | ---o---o---o---o---o---o---o---o---o---o---o "master" 142 | 143 | 144 | A, B and C are topic branches. 145 | 146 | * A has one fix since it was merged up to "next". 147 | 148 | * B has finished. It has been fully merged up to "master" and "next", 149 | and is ready to be deleted. 150 | 151 | * C has not merged to "next" at all. 152 | 153 | We would want to allow C to be rebased, refuse A, and encourage 154 | B to be deleted. 155 | 156 | To compute (1): 157 | 158 | git rev-list ^master ^topic next 159 | git rev-list ^master next 160 | 161 | if these match, topic has not merged in next at all. 162 | 163 | To compute (2): 164 | 165 | git rev-list master..topic 166 | 167 | if this is empty, it is fully merged to "master". 168 | 169 | DOC_END 170 | --------------------------------------------------------------------------------