diff --git a/.label-store b/.label-store index a353508..43f2ec4 100644 --- a/.label-store +++ b/.label-store @@ -1,27 +1,12 @@ %labels = ( - '-bigno' => '-bigno.html "compiled config with big-config disabled"', - '-bigyes' => '-bigyes.html "compiled config with big-config enabled"', - '-confother' => '-confother.html "other tips"', - '-getgl' => '-getgl.html "getting the gitolite software"', - '-gitolite_tools' => '-gitolite_tools.html "gitolite-tools"', - '-mirrappA' => '-mirrappA.html "appendix A: delegation helper files"', - '-mirrexsteps' => '-mirrexsteps.html "step by step"', - '-morefeatures' => '-morefeatures.html "some more features"', - '-need' => '-need.html "why is gitolite needed?"', - '-t' => '-t.html "notes on the testing setup"', - '-tipssec' => '-tipssec.html "security, access control, and auditing"', - '-tnconv' => '-tnconv.html "convenience features"', - '-uninstall' => '-uninstall.html "appendix c: uninstalling gitolite completely"', - '-vimsyntax' => '-vimsyntax.html "Vim Syntax Highlight"', - '-wildhow' => '-wildhow.html "how it actually works"', - '2levels' => '-tipssec.html#2levels "two levels of access rights checking"', + '2levels' => 'tipssec__.html#2levels "two levels of access rights checking"', 'ADCs' => 'ADCs.html "admin defined commands"', - '_1_gitolite_conf_' => '-mirrexsteps.html#_1_gitolite_conf_ "(1) `gitolite.conf`"', - '_2_master_sam_conf_' => '-mirrexsteps.html#_2_master_sam_conf_ "(2) `master/sam.conf`"', - '_3_host_admins_only_master_sam_p1_conf_' => '-mirrexsteps.html#_3_host_admins_only_master_sam_p1_conf_ "(3) host admins only -- `master/sam/p1.conf`"', - '_4_mirrors_sam_p1_conf_' => '-mirrexsteps.html#_4_mirrors_sam_p1_conf_ "(4) `mirrors/sam/p1.conf`"', - '_5_slave_frodo_sam_conf_' => '-mirrexsteps.html#_5_slave_frodo_sam_conf_ "(5) `slave/frodo/sam.conf`"', - '_6_manual_sync' => '-mirrexsteps.html#_6_manual_sync "(6) manual sync"', + '_1_gitolite_conf_' => '_mirrexsteps.html#_1_gitolite_conf_ "(1) `gitolite.conf`"', + '_2_master_sam_conf_' => '_mirrexsteps.html#_2_master_sam_conf_ "(2) `master/sam.conf`"', + '_3_host_admins_only_master_sam_p1_conf_' => '_mirrexsteps.html#_3_host_admins_only_master_sam_p1_conf_ "(3) host admins only -- `master/sam/p1.conf`"', + '_4_mirrors_sam_p1_conf_' => '_mirrexsteps.html#_4_mirrors_sam_p1_conf_ "(4) `mirrors/sam/p1.conf`"', + '_5_slave_frodo_sam_conf_' => '_mirrexsteps.html#_5_slave_frodo_sam_conf_ "(5) `slave/frodo/sam.conf`"', + '_6_manual_sync' => '_mirrexsteps.html#_6_manual_sync "(6) manual sync"', '_ADC_background' => 'ADCs.html#_ADC_background "ADC background"', '_ADC_details' => 'ADCs.html#_ADC_details "ADC details"', '_ADDITIONAL_RESOURCES' => 'ggshb.html#_ADDITIONAL_RESOURCES "ADDITIONAL RESOURCES"', @@ -46,7 +31,7 @@ '_Gitolite_README' => 'README.html#_Gitolite_README "Gitolite README"', '_Gitweb' => 'ggshb.html#_Gitweb "Gitweb"', '_Going_back_to_OpenSSH' => 'contrib_putty.html#_Going_back_to_OpenSSH "Going back to OpenSSH"', - '_Homepage' => '-gitolite_tools.html#_Homepage "Homepage"', + '_Homepage' => '_gitolite_tools.html#_Homepage "Homepage"', '_Host_key_authentication' => 'contrib_putty.html#_Host_key_authentication "Host key authentication"', '_IMPORTANT_READ_THIS_FIRST' => 'sts.html#_IMPORTANT_READ_THIS_FIRST "IMPORTANT -- READ THIS FIRST"', '_INconvenience_features' => 'tips.html#_INconvenience_features "INconvenience features"', @@ -107,10 +92,10 @@ '_apple' => 'nagp.html#_apple "apple"', '_backward_compatibility' => 'deleg.html#_backward_compatibility "backward compatibility"', '_behind_my_back' => 'nagp.html#_behind_my_back "behind my back"', - '_better_logging' => '-tipssec.html#_better_logging "better logging"', + '_better_logging' => 'tipssec__.html#_better_logging "better logging"', '_branches_tags_and_specifying_refex_es' => 'bac.html#_branches_tags_and_specifying_refex_es "branches, tags, and specifying "refex"es"', '_but_but_you_have_all_that_ssh_stuff_in_there_' => 'auth.html#_but_but_you_have_all_that_ssh_stuff_in_there_ "but... but... you have all that ssh stuff in there!"', - '_bypassing_gitolite' => '-tnconv.html#_bypassing_gitolite "bypassing gitolite"', + '_bypassing_gitolite' => 'tnconv__.html#_bypassing_gitolite "bypassing gitolite"', '_caveats' => 'sts.html#_caveats "caveats"', '_checking_arguments' => 'ADCs.html#_checking_arguments "checking arguments"', '_checking_authorisation_inside_an_ADC' => 'ADCs.html#_checking_authorisation_inside_an_ADC "checking authorisation inside an ADC"', @@ -127,8 +112,8 @@ '_continuation_lines' => 'conf.html#_continuation_lines "continuation lines"', '_contrast_with_refexes' => 'wildregex.html#_contrast_with_refexes "contrast with refexes"', '_custom_git_config' => 'admin.html#_custom_git_config "custom git config"', - '_custom_hooks_and_custom_git_config' => '-tnconv.html#_custom_hooks_and_custom_git_config "custom hooks and custom git config"', - '_delegating_parts_of_the_config_file' => '-tipssec.html#_delegating_parts_of_the_config_file "delegating parts of the config file"', + '_custom_hooks_and_custom_git_config' => 'tnconv__.html#_custom_hooks_and_custom_git_config "custom hooks and custom git config"', + '_delegating_parts_of_the_config_file' => 'tipssec__.html#_delegating_parts_of_the_config_file "delegating parts of the config file"', '_delegating_pubkeys' => 'deleg.html#_delegating_pubkeys "delegating pubkeys"', '_deleting_a_wild_repo' => 'wild.html#_deleting_a_wild_repo "deleting a wild repo"', '_deleting_trashing_repos' => 'ADCs.html#_deleting_trashing_repos "deleting/trashing repos"', @@ -150,11 +135,12 @@ '_general_notes' => 'conf_examples.html#_general_notes "general notes"', '_general_stuff' => 'dev_notes.html#_general_stuff "general stuff"', '_general_syntax' => 'hub.html#_general_syntax "general syntax"', - '_getting_a_tar_file_from_a_clone' => '-getgl.html#_getting_a_tar_file_from_a_clone "getting a tar file from a clone"', + '_getting_a_tar_file_from_a_clone' => 'getgl__.html#_getting_a_tar_file_from_a_clone "getting a tar file from a clone"', '_git' => 'nagp.html#_git "git"', '_gitolite_conf' => 'ggshb.html#_gitolite_conf "gitolite.conf"', '_gitolite_feature_recap' => 'mirr_complex_example.html#_gitolite_feature_recap "gitolite feature recap"', '_gitolite_rc' => 'ggshb.html#_gitolite_rc "gitolite.rc"', + '_gitolite_tools' => '_gitolite_tools.html "gitolite-tools"', '_gitweb_and_daemon' => 'exaac.html#_gitweb_and_daemon "gitweb and daemon"', '_giving_shell_access_to_gitolite_users' => 'sts.html#_giving_shell_access_to_gitolite_users "giving shell access to gitolite users"', '_gl_post_init_hook' => 'hooks.html#_gl_post_init_hook ""gl-post-init" hook"', @@ -177,7 +163,7 @@ '_installing_and_upgrading_gitolite' => 'install.html#_installing_and_upgrading_gitolite "installing and upgrading gitolite"', '_installing_virtual_refs' => 'virtualrefs-and-scoring.html#_installing_virtual_refs "installing virtual refs"', '_instappendices' => 'install.html#_instappendices "appendixes"', - '_instructions_for_adding_new_tests' => '-t.html#_instructions_for_adding_new_tests "instructions for adding new tests"', + '_instructions_for_adding_new_tests' => '_t.html#_instructions_for_adding_new_tests "instructions for adding new tests"', '_interpreting_the_output' => 'info_expand.html#_interpreting_the_output "interpreting the output"', '_just_say_NO_' => 'nagp.html#_just_say_NO_ "just say NO!"', '_ldaphow' => 'ldap.html#_ldaphow "how"', @@ -186,6 +172,8 @@ '_listing_repos_you_created' => 'user.html#_listing_repos_you_created "listing repos you created"', '_losing_your_admin_key' => 'sts.html#_losing_your_admin_key "losing your admin key"', '_lots_of_repos_lots_of_users' => 'deleg.html#_lots_of_repos_lots_of_users "lots of repos, lots of users"', + '_mirrappA' => '_mirrappA.html "appendix A: delegation helper files"', + '_mirrexsteps' => '_mirrexsteps.html "step by step"', '_mirrwhy' => 'mirroring.html#_mirrwhy "why"', '_modules' => 'dev_notes.html#_modules "modules"', '_most_often_used_changed_variables' => 'rc.html#_most_often_used_changed_variables "most often used/changed variables"', @@ -194,7 +182,7 @@ '_next_steps' => 'mirr_complex_example.html#_next_steps "next steps"', '_normal_gitolite_key_handling' => 'sts.html#_normal_gitolite_key_handling "normal gitolite key handling"', '_note_to_the_admin_configuration_variables' => 'hub.html#_note_to_the_admin_configuration_variables "note to the admin: configuration variables"', - '_notes_and_background' => '-t.html#_notes_and_background "notes and background"', + '_notes_and_background' => '_t.html#_notes_and_background "notes and background"', '_number_of_refs_returned' => 'virtualrefs-and-scoring.html#_number_of_refs_returned "number of refs returned"', '_odds_and_ends' => 'tips.html#_odds_and_ends "odds and ends"', '_other_errors_warnings_notes_' => 'tips.html#_other_errors_warnings_notes_ "other errors, warnings, notes..."', @@ -204,8 +192,8 @@ '_overview_of_setup' => 'mirr_complex_example.html#_overview_of_setup "overview of setup"', '_passing_simple_arguments_to_the_VR_script' => 'virtualrefs-and-scoring.html#_passing_simple_arguments_to_the_VR_script "passing simple arguments to the VR script"', '_passing_unchecked_arguments' => 'ADCs.html#_passing_unchecked_arguments "passing unchecked arguments"', - '_personal_branches' => '-confother.html#_personal_branches "personal branches"', - '_playing_with_gitolite' => '-t.html#_playing_with_gitolite "playing with gitolite"', + '_personal_branches' => 'confother__.html#_personal_branches "personal branches"', + '_playing_with_gitolite' => '_t.html#_playing_with_gitolite "playing with gitolite"', '_please_read_this_first' => 'admin.html#_please_read_this_first "please read this first"', '_poking_the_admin_repo_to_force_a_compile' => 'tips.html#_poking_the_admin_repo_to_force_a_compile ""poking" the admin repo to force a compile"', '_pre_requisites' => 'mirr_complex_example.html#_pre_requisites "pre-requisites"', @@ -249,12 +237,13 @@ '_step_by_step' => 'sts.html#_step_by_step "step by step"', '_suexec' => 'ggshb.html#_suexec "suexec"', '_summary_permissions' => 'conf.html#_summary_permissions "summary: permissions"', - '_support_for_git_installed_outside_default_PATH' => '-tnconv.html#_support_for_git_installed_outside_default_PATH "support for git installed outside default PATH"', + '_support_for_git_installed_outside_default_PATH' => 'tnconv__.html#_support_for_git_installed_outside_default_PATH "support for git installed outside default PATH"', '_syntax_and_normal_usage' => 'tips.html#_syntax_and_normal_usage "syntax and normal usage"', + '_t' => '_t.html "notes on the testing setup"', '_taking_stock_relevant_files_and_directories' => 'sts.html#_taking_stock_relevant_files_and_directories "taking stock -- relevant files and directories"', '_technical_skills' => 'instrequire.html#_technical_skills "technical skills"', - '_terminology' => '-t.html#_terminology "terminology"', - '_testing_gitolite' => '-t.html#_testing_gitolite "testing gitolite"', + '_terminology' => '_t.html#_terminology "terminology"', + '_testing_gitolite' => '_t.html#_testing_gitolite "testing gitolite"', '_that_bindir_thing' => 'dev_notes.html#_that_bindir_thing "that \'bindir\' thing"', '_that_s_outrageous' => 'nagp.html#_that_s_outrageous "that\'s outrageous"', '_the_GL_PACKAGE_HOOKS_directory' => 'hook_prop.html#_the_GL_PACKAGE_HOOKS_directory "the `GL_PACKAGE_HOOKS` directory"', @@ -268,11 +257,12 @@ '_user_invocation' => 'ADCs.html#_user_invocation "user invocation"', '_variables_that_should_not_be_touched_at_all' => 'rc.html#_variables_that_should_not_be_touched_at_all "variables that should not be touched at all"', '_variables_with_an_efficiency_performance_impact' => 'rc.html#_variables_with_an_efficiency_performance_impact "variables with an efficiency/performance impact"', + '_vimsyntax' => '_vimsyntax.html "Vim Syntax Highlight"', '_virtual_refs_and_scoring' => 'virtualrefs-and-scoring.html#_virtual_refs_and_scoring "virtual refs and scoring"', '_warnings_and_required_reading' => 'aac.html#_warnings_and_required_reading "warnings and required reading"', '_what_are_the_downsides_' => 'bc.html#_what_are_the_downsides_ "what are the downsides?"', '_what_next_' => 'hub.html#_what_next_ "what next?"', - '_what_repos_do_I_have_access_to_' => '-tnconv.html#_what_repos_do_I_have_access_to_ "what repos do I have access to?"', + '_what_repos_do_I_have_access_to_' => 'tnconv__.html#_what_repos_do_I_have_access_to_ "what repos do I have access to?"', '_what_the_2_scripts_actually_do' => 'password_access.html#_what_the_2_scripts_actually_do "what the 2 scripts actually do"', '_when_do_hooks_propagate_' => 'hook_prop.html#_when_do_hooks_propagate_ "**when** do hooks propagate?"', '_when_why_do_we_need_it_' => 'bc.html#_when_why_do_we_need_it_ "when/why do we need it?"', @@ -294,25 +284,29 @@ 'authkeyopt' => 'bc.html#authkeyopt "optimising the authkeys file"', 'bac' => 'bac.html "basic access control"', 'bc' => 'bc.html "what is a "big-config""', + 'bigno__' => 'bigno__.html "compiled config with big-config disabled"', + 'bigyes__' => 'bigyes__.html "compiled config with big-config enabled"', 'clean' => 'install.html#clean "appendix b: cleaning out a botched install"', 'conf' => 'conf.html "the access control file `gitolite.conf`"', 'conf_examples' => 'conf_examples.html "gitolite.conf -- by example"', + 'confother__' => 'confother__.html "other tips"', 'contrib_putty' => 'contrib_putty.html "putty and msysgit"', 'customhooks' => 'hooks.html#customhooks "custom hooks"', 'deleg' => 'deleg.html "delegating access control responsibilities"', 'deny' => 'aac.html#deny ""deny" rules"', 'dev_notes' => 'dev_notes.html "developer/patch maintainer notes"', - 'disable' => '-tnconv.html#disable "disabling write access to take backups"', + 'disable' => 'tnconv__.html#disable "disabling write access to take backups"', 'exaac' => 'exaac.html "advanced access control"', 'exbac' => 'exbac.html "basic access control"', 'expand' => 'info_expand.html#expand "the "expand" command"', 'fork' => 'ADCs.html#fork "the \'fork\' ADC"', 'gerrit' => 'gerrit.html "comparing gerrit and gitolite"', + 'getgl__' => 'getgl__.html "getting the gitolite software"', 'ggshb' => 'ggshb.html "how to set up gitolite+gitweb+ssh+http-backend"', 'gitwebauth' => 'tips.html#gitwebauth "easier to link gitweb authorisation with gitolite"', 'gl_ssh' => 'gl_ssh.html "how gitolite uses ssh"', 'gl_what' => 'index.html#gl_what "what is gitolite?"', - 'gwd' => '-confother.html#gwd "specifying gitweb and daemon access"', + 'gwd' => 'confother__.html#gwd "specifying gitweb and daemon access"', 'hook_prop' => 'hook_prop.html "hook propagation in gitolite"', 'hookchaining' => 'hooks.html#hookchaining "hook chaining"', 'hooks' => 'hooks.html "using hooks"', @@ -347,17 +341,19 @@ 'mirrsync' => 'mirrsync.html "commands to (re-)sync mirrors"', 'mob' => 'mob.html "mob branches in gitolite"', 'monkeysphere' => 'monkeysphere.html "(contributed doc: integrating gitolite with monkeysphere)"', + 'morefeatures__' => 'morefeatures__.html "some more features"', 'moverepos' => 'moverepos.html "moving pre-existing repos into gitolite"', 'moveserver' => 'moveserver.html "moving the whole thing from one server to another"', 'multikey' => 'tips.html#multikey "one user, many keys"', 'nagp' => 'nagp.html "...not a gitolite problem!"', + 'need__' => 'need__.html "why is gitolite needed?"', 'nonroot' => 'nonroot.html "non-root method"', 'oldmultikeys' => 'oldmultikeys.html "old style multi keys"', 'openssh5.6' => 'info_expand.html#openssh5.6 "side note: openssh 5.6"', 'other_docs' => 'other_docs.html "what do the other docs contain"', 'packaging' => 'packaging.html "packaging gitolite"', 'password_access' => 'password_access.html "password access to gitolite"', - 'pers' => '-tnconv.html#pers ""personal" branches"', + 'pers' => 'tnconv__.html#pers ""personal" branches"', 'pictures' => 'pictures.html "gitolite in pictures"', 'progit' => 'progit.html "(master copy of progit chapter on gitolite)"', 'qi' => 'index.html#qi "quick install"', @@ -368,9 +364,9 @@ 'rolenamewarn' => 'setperms.html#rolenamewarn "**IMPORTANT WARNING ABOUT THIS FEATURE**"', 'root' => 'root.html "root method"', 'rpmdeb' => 'rpmdeb.html "package method"', - 'rsgc' => '-confother.html#rsgc "repo specific `git config` commands"', + 'rsgc' => 'confother__.html#rsgc "repo specific `git config` commands"', 'rtfm' => 'index.html#rtfm "what should you read?"', - 'ruleaccum' => '-confother.html#ruleaccum "rule accumulation"', + 'ruleaccum' => 'confother__.html#ruleaccum "rule accumulation"', 'ruleaccum2' => 'exaac.html#ruleaccum2 "rule accumulation"', 'rwcd' => 'aac.html#rwcd "creating and deleting branches"', 'setdesc' => 'user.html#setdesc "adding a description to repos you created"', @@ -382,12 +378,16 @@ 'subconf' => 'deleg.html#subconf "the subconf command"', 'syntax' => 'conf.html#syntax "syntax"', 'tips' => 'tips.html "assorted tips and notes"', + 'tipssec__' => 'tipssec__.html "security, access control, and auditing"', + 'tnconv__' => 'tnconv__.html "convenience features"', 'umask' => 'tips.html#umask "umask setting"', + 'uninstall__' => 'uninstall__.html "appendix c: uninstalling gitolite completely"', 'upgrade' => 'install.html#upgrade "upgrading"', 'upgrfromclient' => 'upgrfromclient.html "upgrading from from-client method to non-root method"', 'user' => 'user.html "what users (not admins) need to know about gitolite"', 'who' => 'who.html "who uses gitolite"', 'wild' => 'wild.html "repositories named with wildcards"', 'wild_repodel' => 'wild_repodel.html "deleting repos safely"', + 'wildhow__' => 'wildhow__.html "how it actually works"', 'wildregex' => 'wildregex.html "valid regexes and how they are used"' ); diff --git a/ADCs.html b/ADCs.html index 39c2332..62daec8 100644 --- a/ADCs.html +++ b/ADCs.html @@ -236,7 +236,7 @@ maintenance), anyone with write access to the gitolite-admin repo can do this: -

Note: please see this for more on this.

+

Note: please see this for more on this.

diff --git a/README-t-all.html b/README-t-all.html index c3b2cdf..5f5d55d 100644 --- a/README-t-all.html +++ b/README-t-all.html @@ -18,7 +18,7 @@ chapter TOC

- +

notes on the testing setup

diff --git a/README-vim-all.html b/README-vim-all.html index fa249b4..e23b3fd 100644 --- a/README-vim-all.html +++ b/README-vim-all.html @@ -18,7 +18,7 @@ chapter TOC

- +

Vim Syntax Highlight

diff --git a/-gitolite_tools.html b/_gitolite_tools.html similarity index 100% rename from -gitolite_tools.html rename to _gitolite_tools.html diff --git a/-mirrappA.html b/_mirrappA.html similarity index 100% rename from -mirrappA.html rename to _mirrappA.html diff --git a/-mirrexsteps.html b/_mirrexsteps.html similarity index 100% rename from -mirrexsteps.html rename to _mirrexsteps.html diff --git a/-t.html b/_t.html similarity index 100% rename from -t.html rename to _t.html diff --git a/-vimsyntax.html b/_vimsyntax.html similarity index 100% rename from -vimsyntax.html rename to _vimsyntax.html diff --git a/aac.html b/aac.html index 4409316..1fd3d16 100644 --- a/aac.html +++ b/aac.html @@ -36,7 +36,7 @@ a lot further than that.

both read and write operations, while the second one happens only for write operations.

-

Required reading: this section of the documentation.

+

Required reading: this section of the documentation.

Warning: When using deny rules, the order of your rules matters, where earlier it did not. If you're just starting to add a deny rule to an existing diff --git a/admin-all.html b/admin-all.html index d39dbe1..81558cd 100644 --- a/admin-all.html +++ b/admin-all.html @@ -431,5 +431,5 @@ specified and will run it. You can of course install hooks manually on the server, but sometimes that's cumbersome.

Instead, you could set your hooks to only work if a certain "gitconfig" -variable was set. See this for a way to specify "git config" +variable was set. See this for a way to specify "git config" settings on a per repository basis.

diff --git a/admin-defined-commands-all.html b/admin-defined-commands-all.html index 655bc10..fec3b6b 100644 --- a/admin-defined-commands-all.html +++ b/admin-defined-commands-all.html @@ -237,7 +237,7 @@ maintenance), anyone with write access to the gitolite-admin repo can do this: -

Note: please see this for more on this.

+

Note: please see this for more on this.

diff --git a/admin.html b/admin.html index de01000..2c6027c 100644 --- a/admin.html +++ b/admin.html @@ -74,5 +74,5 @@ specified and will run it. You can of course install hooks manually on the server, but sometimes that's cumbersome.

Instead, you could set your hooks to only work if a certain "gitconfig" -variable was set. See this for a way to specify "git config" +variable was set. See this for a way to specify "git config" settings on a per repository basis.

diff --git a/bac.html b/bac.html index c417635..9e1af95 100644 --- a/bac.html +++ b/bac.html @@ -74,7 +74,7 @@ by Linus and currently maintained by Junio.

how rules are matched

It's important to understand that there're two levels at which access control -happens. Please see this for details, especially about the first level +happens. Please see this for details, especially about the first level check. Much of the complexity applies only to the second level check, so that is all we will be discussing here. This check is done by the update hook, and determines whether the push succeeds or fails.

diff --git a/bc.html b/bc.html index bb6bec0..69a844d 100644 --- a/bc.html +++ b/bc.html @@ -62,7 +62,7 @@ repo @wbr

and then generates the actual config rules once for each user-repo-ref combination (there are 8 combinations above); the compiled config file looks -somewhat like this.

+somewhat like this.

Of course, the output is the same whether you used groups (like @wbr and @devs in the example above) or listed the repos directly on the 'repo' @@ -89,7 +89,7 @@ happens.

access rules for groups

If you used group names in the 'repo' lines (as in repo @wbr), then the -compiled config looks like this.

+compiled config looks like this.

That's a lot smaller, and allows orders of magintude more repos and groups to be supported.

@@ -191,7 +191,7 @@ $GL_NO_SETUP_AUTHKEYS = 0;

GL_NO_DAEMON_NO_GITWEB is a very useful optimisation that you must enable if you do have a large number of repositories, and do not use gitolite's -support for gitweb or git-daemon access (see "this" for details). This will save a +support for gitweb or git-daemon access (see "this" for details). This will save a lot of time when you push the gitolite-admin repo with changes. This variable also controls whether "git config" lines (such as config hooks.emailprefix = "[gitolite]") will be processed or not.

@@ -298,8 +298,8 @@ composite set of rules that 'alice' accessing 'lynx' is subject to.

config listings

-

compiled config with big-config disabled: Link

+

compiled config with big-config disabled: Link

-

compiled config with big-config enabled: Link

+

compiled config with big-config enabled: Link

diff --git a/big-config-all.html b/big-config-all.html index ec889c1..6a74c09 100644 --- a/big-config-all.html +++ b/big-config-all.html @@ -63,7 +63,7 @@ repo @wbr

and then generates the actual config rules once for each user-repo-ref combination (there are 8 combinations above); the compiled config file looks -somewhat like this.

+somewhat like this.

Of course, the output is the same whether you used groups (like @wbr and @devs in the example above) or listed the repos directly on the 'repo' @@ -90,7 +90,7 @@ happens.

access rules for groups

If you used group names in the 'repo' lines (as in repo @wbr), then the -compiled config looks like this.

+compiled config looks like this.

That's a lot smaller, and allows orders of magintude more repos and groups to be supported.

@@ -192,7 +192,7 @@ $GL_NO_SETUP_AUTHKEYS = 0;

GL_NO_DAEMON_NO_GITWEB is a very useful optimisation that you must enable if you do have a large number of repositories, and do not use gitolite's -support for gitweb or git-daemon access (see "this" for details). This will save a +support for gitweb or git-daemon access (see "this" for details). This will save a lot of time when you push the gitolite-admin repo with changes. This variable also controls whether "git config" lines (such as config hooks.emailprefix = "[gitolite]") will be processed or not.

@@ -355,9 +355,9 @@ composite set of rules that 'alice' accessing 'lynx' is subject to.

config listings

-

compiled config with big-config disabled: Link

+

compiled config with big-config disabled: Link

- +

compiled config with big-config disabled

@@ -437,9 +437,9 @@ composite set of rules that 'alice' accessing 'lynx' is subject to.

-

compiled config with big-config enabled: Link

+

compiled config with big-config enabled: Link

- +

compiled config with big-config enabled

diff --git a/-bigno.html b/bigno__.html similarity index 100% rename from -bigno.html rename to bigno__.html diff --git a/-bigyes.html b/bigyes__.html similarity index 100% rename from -bigyes.html rename to bigyes__.html diff --git a/conf.html b/conf.html index 39881d9..b0888e5 100644 --- a/conf.html +++ b/conf.html @@ -102,5 +102,5 @@ one of -, R, RW, RW+, the standalone C, which is not really a "ref" level permission and can be found in doc/wildcard-repositories.mkd.]

-

other tips: Link

+

other tips: Link

diff --git a/-confother.html b/confother__.html similarity index 98% rename from -confother.html rename to confother__.html index 093bcc5..97a1292 100644 --- a/-confother.html +++ b/confother__.html @@ -26,7 +26,7 @@

personal branches

Gitolite lets you define a "personal" or "scratch" namespace prefix for each -developer. See here for details.

+developer. See here for details.

diff --git a/-getgl.html b/getgl__.html similarity index 100% rename from -getgl.html rename to getgl__.html diff --git a/gitolite-tools-all.html b/gitolite-tools-all.html index 5c36c36..74e87cb 100644 --- a/gitolite-tools-all.html +++ b/gitolite-tools-all.html @@ -18,7 +18,7 @@ chapter TOC

- +

gitolite-tools

diff --git a/gitolite.conf-all.html b/gitolite.conf-all.html index 6744114..33f9b5e 100644 --- a/gitolite.conf-all.html +++ b/gitolite.conf-all.html @@ -144,7 +144,7 @@ by Linus and currently maintained by Junio.

how rules are matched

It's important to understand that there're two levels at which access control -happens. Please see this for details, especially about the first level +happens. Please see this for details, especially about the first level check. Much of the complexity applies only to the second level check, so that is all we will be discussing here. This check is done by the update hook, and determines whether the push succeeds or fails.

@@ -306,7 +306,7 @@ a lot further than that.

both read and write operations, while the second one happens only for write operations.

-

Required reading: this section of the documentation.

+

Required reading: this section of the documentation.

Warning: When using deny rules, the order of your rules matters, where earlier it did not. If you're just starting to add a deny rule to an existing @@ -478,9 +478,9 @@ one of -, R, RW, RW+, the standalone C, which is not really a "ref" level permission and can be found in doc/wildcard-repositories.mkd.]

-

other tips: Link

+

other tips: Link

- +

other tips

@@ -489,7 +489,7 @@ found in doc/wildcard-repositories.mkd.]

personal branches

Gitolite lets you define a "personal" or "scratch" namespace prefix for each -developer. See here for details.

+developer. See here for details.

diff --git a/gitolite.rc-all.html b/gitolite.rc-all.html index 8e865a8..77e3b4e 100644 --- a/gitolite.rc-all.html +++ b/gitolite.rc-all.html @@ -350,7 +350,7 @@ of the listing.

This is where all the repos go. If it's not an absolute path, it is considered to be relative to $HOME. Moving all the repositories after the -install has completed is doable: just disable writes to gitolite, +install has completed is doable: just disable writes to gitolite, move ~/repositories/*, change this variable, then re-enable writes.

diff --git a/index-all.html b/index-all.html index f68b04f..b56ed2c 100644 --- a/index-all.html +++ b/index-all.html @@ -152,9 +152,9 @@ httpd if you prefer (this may require root access).
  • several other neat features, too many to list here
  • -

    why is gitolite needed?: Link

    +

    why is gitolite needed?: Link

    - +

    why is gitolite needed?

    @@ -222,9 +222,9 @@ deleting a branch (which is really just an extreme form of rewind). I needed something in between allowing anyone to do it (the default) and disabling it completely (receive.denyNonFastForwards or receive.denyDeletes).

    -

    some more features: Link

    +

    some more features: Link

    - +

    some more features

    diff --git a/index.html b/index.html index 56fa9b9..d187ab2 100644 --- a/index.html +++ b/index.html @@ -102,7 +102,7 @@ httpd if you prefer (this may require root access).
  • several other neat features, too many to list here
  • -

    why is gitolite needed?: Link

    +

    why is gitolite needed?: Link

    @@ -119,7 +119,7 @@ deleting a branch (which is really just an extreme form of rewind). I needed something in between allowing anyone to do it (the default) and disabling it completely (receive.denyNonFastForwards or receive.denyDeletes).

    -

    some more features: Link

    +

    some more features: Link

    diff --git a/install-all.html b/install-all.html index 0c24486..4f66943 100644 --- a/install-all.html +++ b/install-all.html @@ -372,9 +372,9 @@ familiarity is not necessary to do basic access control.

    -

    getting the gitolite software: Link

    +

    getting the gitolite software: Link

    - +

    getting the gitolite software

    @@ -472,9 +472,9 @@ delete /var/gitolite/conf and /var/gitolite/hooks or -

    appendix c: uninstalling gitolite completely: Link

    +

    appendix c: uninstalling gitolite completely: Link

    - +

    appendix c: uninstalling gitolite completely

    diff --git a/install.html b/install.html index 3318637..f4c88a2 100644 --- a/install.html +++ b/install.html @@ -125,7 +125,7 @@ we mean conf/gitolite.conf on your gitolite-admin clone.

    requirements: Link

    -

    getting the gitolite software: Link

    +

    getting the gitolite software: Link

    @@ -192,5 +192,5 @@ delete /var/gitolite/conf and /var/gitolite/hooks or -

    appendix c: uninstalling gitolite completely: Link

    +

    appendix c: uninstalling gitolite completely: Link

    diff --git a/master-toc.html b/master-toc.html index b052e21..34d2af6 100644 --- a/master-toc.html +++ b/master-toc.html @@ -130,8 +130,8 @@
  • implementation notes
  • config listings
  • @@ -258,12 +258,12 @@
  • creating and deleting branches
  • summary: permissions
  • -
  • other tips +
  • other tips
  • @@ -374,10 +374,10 @@
  • what do the other docs contain
  • what is gitolite?
  • -
  • why is gitolite needed?
  • +
  • why is gitolite needed?
  • why did I write it?
  • security
  • contact and license
  • @@ -414,16 +414,16 @@
  • server
  • technical skills
  • -
  • getting the gitolite software +
  • getting the gitolite software
  • appendixes
  • @@ -630,21 +630,21 @@
  • old style multi keys
  • -
  • security, access control, and auditing +
  • security, access control, and auditing
  • -
  • convenience features +
  • convenience features
  • INconvenience features
  • @@ -780,9 +780,9 @@

    gitolite-tools

    @@ -802,17 +802,17 @@
  • pre-requisites
  • quick setup
  • -
  • step by step +
  • step by step
  • next steps
  • -
  • appendix A: delegation helper files
  • +
  • appendix A: delegation helper files
  • @@ -962,7 +962,7 @@

    README-vim


    @@ -972,13 +972,13 @@

    README-t

    diff --git a/master-toc.mkd b/master-toc.mkd index 2ccab59..c4dc98e 100644 --- a/master-toc.mkd +++ b/master-toc.mkd @@ -93,8 +93,8 @@ * [how](ldap.html#_ldaphow) * [implementation notes](bc.html#_implementation_notes) * [config listings](bc.html#_config_listings) - * [compiled config with big-config disabled](-bigno.html) - * [compiled config with big-config enabled](-bigyes.html) + * [compiled config with big-config disabled](bigno__.html) + * [compiled config with big-config enabled](bigyes__.html) ---- @@ -178,11 +178,11 @@ * ["deny" rules for the entire repo](aac.html#_deny_rules_for_the_entire_repo) * [creating and deleting branches](aac.html#rwcd) * [summary: permissions](conf.html#_summary_permissions) - * [other tips](-confother.html) - * [personal branches](-confother.html#_personal_branches) - * [rule accumulation](-confother.html#ruleaccum) - * [specifying gitweb and daemon access](-confother.html#gwd) - * [repo specific `git config` commands](-confother.html#rsgc) + * [other tips](confother__.html) + * [personal branches](confother__.html#_personal_branches) + * [rule accumulation](confother__.html#ruleaccum) + * [specifying gitweb and daemon access](confother__.html#gwd) + * [repo specific `git config` commands](confother__.html#rsgc) ---- @@ -262,9 +262,9 @@ * [what should you read?](index.html#rtfm) * [what do the other docs contain](other_docs.html) * [what is gitolite?](index.html#gl_what) - * [why is gitolite needed?](-need.html) + * [why is gitolite needed?](need__.html) * [why did I write it?](index.html#_why_did_I_write_it_) - * [some more features](-morefeatures.html) + * [some more features](morefeatures__.html) * [security](index.html#_security) * [contact and license](index.html#_contact_and_license) @@ -289,12 +289,12 @@ * [client/workstation](instrequire.html#_client_workstation) * [server](instrequire.html#_server) * [technical skills](instrequire.html#_technical_skills) - * [getting the gitolite software](-getgl.html) - * [getting a tar file from a clone](-getgl.html#_getting_a_tar_file_from_a_clone) + * [getting the gitolite software](getgl__.html) + * [getting a tar file from a clone](getgl__.html#_getting_a_tar_file_from_a_clone) * [appendixes](install.html#_instappendices) * [appendix a: PATH issues for gl-setup](install.html#instpath) * [appendix b: cleaning out a botched install](install.html#clean) - * [appendix c: uninstalling gitolite completely](-uninstall.html) + * [appendix c: uninstalling gitolite completely](uninstall__.html) ---- @@ -439,18 +439,18 @@ * [syntax and normal usage](tips.html#_syntax_and_normal_usage) * [one user, many keys](tips.html#multikey) * [old style multi keys](oldmultikeys.html) - * [security, access control, and auditing](-tipssec.html) - * [two levels of access rights checking](-tipssec.html#2levels) - * [better logging](-tipssec.html#_better_logging) - * [delegating parts of the config file](-tipssec.html#_delegating_parts_of_the_config_file) - * [convenience features](-tnconv.html) - * [what repos do I have access to?](-tnconv.html#_what_repos_do_I_have_access_to_) - * [support for git installed outside default PATH](-tnconv.html#_support_for_git_installed_outside_default_PATH) - * ["personal" branches](-tnconv.html#pers) - * [custom hooks and custom git config](-tnconv.html#_custom_hooks_and_custom_git_config) - * [bypassing gitolite](-tnconv.html#_bypassing_gitolite) + * [security, access control, and auditing](tipssec__.html) + * [two levels of access rights checking](tipssec__.html#2levels) + * [better logging](tipssec__.html#_better_logging) + * [delegating parts of the config file](tipssec__.html#_delegating_parts_of_the_config_file) + * [convenience features](tnconv__.html) + * [what repos do I have access to?](tnconv__.html#_what_repos_do_I_have_access_to_) + * [support for git installed outside default PATH](tnconv__.html#_support_for_git_installed_outside_default_PATH) + * ["personal" branches](tnconv__.html#pers) + * [custom hooks and custom git config](tnconv__.html#_custom_hooks_and_custom_git_config) + * [bypassing gitolite](tnconv__.html#_bypassing_gitolite) * [gl-admin-push: bypassing gitolite for the gitolite-admin repo](adminpush.html) - * [disabling write access to take backups](-tnconv.html#disable) + * [disabling write access to take backups](tnconv__.html#disable) * [INconvenience features](tips.html#_INconvenience_features) * [deleting a repo](tips.html#repodel) * [renaming a repo](tips.html#_renaming_a_repo) @@ -525,7 +525,7 @@ * [setting a gitweb description for a wildcard-matched repo](wild.html#_setting_a_gitweb_description_for_a_wildcard_matched_repo) * [reporting](wild.html#_reporting) * [deleting a wild repo](wild.html#_deleting_a_wild_repo) - * [how it actually works](-wildhow.html) + * [how it actually works](wildhow__.html) ---- @@ -541,8 +541,8 @@ ### gitolite-tools - * [gitolite-tools](-gitolite_tools.html) - * [Homepage](-gitolite_tools.html#_Homepage) + * [gitolite-tools](_gitolite_tools.html) + * [Homepage](_gitolite_tools.html#_Homepage) ---- @@ -556,15 +556,15 @@ * [gitolite feature recap](mirr_complex_example.html#_gitolite_feature_recap) * [pre-requisites](mirr_complex_example.html#_pre_requisites) * [quick setup](mirr_complex_example.html#_quick_setup) - * [step by step](-mirrexsteps.html) - * [(1) `gitolite.conf`](-mirrexsteps.html#_1_gitolite_conf_) - * [(2) `master/sam.conf`](-mirrexsteps.html#_2_master_sam_conf_) - * [(3) host admins only -- `master/sam/p1.conf`](-mirrexsteps.html#_3_host_admins_only_master_sam_p1_conf_) - * [(4) `mirrors/sam/p1.conf`](-mirrexsteps.html#_4_mirrors_sam_p1_conf_) - * [(5) `slave/frodo/sam.conf`](-mirrexsteps.html#_5_slave_frodo_sam_conf_) - * [(6) manual sync](-mirrexsteps.html#_6_manual_sync) + * [step by step](_mirrexsteps.html) + * [(1) `gitolite.conf`](_mirrexsteps.html#_1_gitolite_conf_) + * [(2) `master/sam.conf`](_mirrexsteps.html#_2_master_sam_conf_) + * [(3) host admins only -- `master/sam/p1.conf`](_mirrexsteps.html#_3_host_admins_only_master_sam_p1_conf_) + * [(4) `mirrors/sam/p1.conf`](_mirrexsteps.html#_4_mirrors_sam_p1_conf_) + * [(5) `slave/frodo/sam.conf`](_mirrexsteps.html#_5_slave_frodo_sam_conf_) + * [(6) manual sync](_mirrexsteps.html#_6_manual_sync) * [next steps](mirr_complex_example.html#_next_steps) - * [appendix A: delegation helper files](-mirrappA.html) + * [appendix A: delegation helper files](_mirrappA.html) ---- @@ -677,7 +677,7 @@ ### README-vim - * [Vim Syntax Highlight](-vimsyntax.html) + * [Vim Syntax Highlight](_vimsyntax.html) ---- @@ -685,9 +685,9 @@ ### README-t - * [notes on the testing setup](-t.html) - * [terminology](-t.html#_terminology) - * [notes and background](-t.html#_notes_and_background) - * [playing with gitolite](-t.html#_playing_with_gitolite) - * [testing gitolite](-t.html#_testing_gitolite) - * [instructions for adding new tests](-t.html#_instructions_for_adding_new_tests) + * [notes on the testing setup](_t.html) + * [terminology](_t.html#_terminology) + * [notes and background](_t.html#_notes_and_background) + * [playing with gitolite](_t.html#_playing_with_gitolite) + * [testing gitolite](_t.html#_testing_gitolite) + * [instructions for adding new tests](_t.html#_instructions_for_adding_new_tests) diff --git a/mirr_complex_example.html b/mirr_complex_example.html index 122692a..4d6bdc7 100644 --- a/mirr_complex_example.html +++ b/mirr_complex_example.html @@ -136,7 +136,7 @@ vim conf/master/sam/p1.conf

    You can then treat the detailed steps described below as extra information or "background reading" ;-)

    -

    step by step: Link

    +

    step by step: Link

    @@ -154,5 +154,5 @@ hostname in the slaves list for the admin repo (this is in the main gitolite.conf file)

    -

    appendix A: delegation helper files: Link

    +

    appendix A: delegation helper files: Link

    diff --git a/mirrcautions.html b/mirrcautions.html index 361f75c..e3c247f 100644 --- a/mirrcautions.html +++ b/mirrcautions.html @@ -56,7 +56,7 @@ work; http is very fiddly to get right. If you want mirroring, at least your server-to-server comms should be over ssh.

  • Finally, this method uses repo-specific git config variables to store the mirroring information. Please read the WARNING in the -documentation on git config commands if you wish to delete one +documentation on git config commands if you wish to delete one of those lines.

  • diff --git a/mirroring-all.html b/mirroring-all.html index 3f90e76..232bcbd 100644 --- a/mirroring-all.html +++ b/mirroring-all.html @@ -157,7 +157,7 @@ work; http is very fiddly to get right. If you want mirroring, at least your server-to-server comms should be over ssh.

  • Finally, this method uses repo-specific git config variables to store the mirroring information. Please read the WARNING in the -documentation on git config commands if you wish to delete one +documentation on git config commands if you wish to delete one of those lines.

  • @@ -200,7 +200,7 @@ and install it as a custom hook called post-receive; see The GL_HOSTNAME variable must have the correct name for that host (frodo, sam, or gollum), so that will definitely be different on each server. The other line can be the same, or may have additional patterns -for other git config keys you have previously enabled. See here +for other git config keys you have previously enabled. See here and the description for GL_GITCONFIG_KEYS in this for details.

    $GL_HOSTNAME = 'frodo';     # will be different on each server!
    diff --git a/mirroring-complex-example-all.html b/mirroring-complex-example-all.html
    index 4435144..7135f2d 100644
    --- a/mirroring-complex-example-all.html
    +++ b/mirroring-complex-example-all.html
    @@ -137,9 +137,9 @@ vim      conf/master/sam/p1.conf
     

    You can then treat the detailed steps described below as extra information or "background reading" ;-)

    -

    step by step: Link

    +

    step by step: Link

    - +

    step by step

    @@ -322,9 +322,9 @@ hostname in the slaves list for the admin repo (this is in the main gitolite.conf file)

    -

    appendix A: delegation helper files: Link

    +

    appendix A: delegation helper files: Link

    - +

    appendix A: delegation helper files

    diff --git a/mirrsetup.html b/mirrsetup.html index d57cbbe..30cff01 100644 --- a/mirrsetup.html +++ b/mirrsetup.html @@ -52,7 +52,7 @@ and install it as a custom hook called post-receive; see The GL_HOSTNAME variable must have the correct name for that host (frodo, sam, or gollum), so that will definitely be different on each server. The other line can be the same, or may have additional patterns -for other git config keys you have previously enabled. See here +for other git config keys you have previously enabled. See here and the description for GL_GITCONFIG_KEYS in this for details.

    $GL_HOSTNAME = 'frodo';     # will be different on each server!
    diff --git a/-morefeatures.html b/morefeatures__.html
    similarity index 100%
    rename from -morefeatures.html
    rename to morefeatures__.html
    diff --git a/-need.html b/need__.html
    similarity index 100%
    rename from -need.html
    rename to need__.html
    diff --git a/rc.html b/rc.html
    index 0783db6..598c727 100644
    --- a/rc.html
    +++ b/rc.html
    @@ -349,7 +349,7 @@ of the listing.

    This is where all the repos go. If it's not an absolute path, it is considered to be relative to $HOME. Moving all the repositories after the -install has completed is doable: just disable writes to gitolite, +install has completed is doable: just disable writes to gitolite, move ~/repositories/*, change this variable, then re-enable writes.

    diff --git a/tips-notes-all.html b/tips-notes-all.html index 4eae2f4..ee2e341 100644 --- a/tips-notes-all.html +++ b/tips-notes-all.html @@ -142,9 +142,9 @@ sitaramc@gmail.com@desktop.pub sitaramc@gmail.com -

    security, access control, and auditing: Link

    +

    security, access control, and auditing: Link

    - +

    security, access control, and auditing

    @@ -227,9 +227,9 @@ access control for their own pieces. See Link +

    convenience features: Link

    - +

    convenience features

    @@ -371,7 +371,7 @@ instead, like so:

    Note that this method will work for any repo, not just the special admin repo.

    - +

    @@ -451,7 +451,7 @@ as usual. lot to help you manage gitweb access as well; once the initial setup is complete, you can do it all from within the gitolite config file!

    -

    If you just want gitweb to show some repositories, see here for how to +

    If you just want gitweb to show some repositories, see here for how to specify which repos to show.

    diff --git a/tips.html b/tips.html index 630b73f..e08eaab 100644 --- a/tips.html +++ b/tips.html @@ -105,10 +105,10 @@ laptop/sitaram.pub
    old style multi keys: Link
    -

    security, access control, and auditing: Link

    +

    security, access control, and auditing: Link

    -

    convenience features: Link

    +

    convenience features: Link

    @@ -157,7 +157,7 @@ as usual. lot to help you manage gitweb access as well; once the initial setup is complete, you can do it all from within the gitolite config file!

    -

    If you just want gitweb to show some repositories, see here for how to +

    If you just want gitweb to show some repositories, see here for how to specify which repos to show.

    diff --git a/-tipssec.html b/tipssec__.html similarity index 100% rename from -tipssec.html rename to tipssec__.html diff --git a/-tnconv.html b/tnconv__.html similarity index 100% rename from -tnconv.html rename to tnconv__.html diff --git a/-uninstall.html b/uninstall__.html similarity index 100% rename from -uninstall.html rename to uninstall__.html diff --git a/virtualrefs-and-scoring-all.html b/virtualrefs-and-scoring-all.html index fdac901..08706ae 100644 --- a/virtualrefs-and-scoring-all.html +++ b/virtualrefs-and-scoring-all.html @@ -142,7 +142,7 @@ also serves as documentation on writing VR scripts.

    not let an intern push the commit chain".

    However, this means such an intern can never create a personal branch based -off of some existing branch (as described here), which sorta defeats +off of some existing branch (as described here), which sorta defeats the purpose of having personal branches, no?

    If all he did was git checkout -b priv/ashok/my-master master; git push diff --git a/virtualrefs-and-scoring.html b/virtualrefs-and-scoring.html index b073de9..3eecd9d 100644 --- a/virtualrefs-and-scoring.html +++ b/virtualrefs-and-scoring.html @@ -141,7 +141,7 @@ also serves as documentation on writing VR scripts.

    not let an intern push the commit chain".

    However, this means such an intern can never create a personal branch based -off of some existing branch (as described here), which sorta defeats +off of some existing branch (as described here), which sorta defeats the purpose of having personal branches, no?

    If all he did was git checkout -b priv/ashok/my-master master; git push diff --git a/wild.html b/wild.html index 58ba41d..5e24f1c 100644 --- a/wild.html +++ b/wild.html @@ -167,5 +167,5 @@ to install/setup "adc"s (admin defined commands). See

    Enjoy, and please use with care. This is pretty powerful stuff. As they say: if you break it, you get to keep both pieces :)

    -

    how it actually works: Link

    +

    how it actually works: Link

    diff --git a/wildcard-repositories-all.html b/wildcard-repositories-all.html index 817c047..c5227ab 100644 --- a/wildcard-repositories-all.html +++ b/wildcard-repositories-all.html @@ -309,9 +309,9 @@ to install/setup "adc"s (admin defined commands). See

    Enjoy, and please use with care. This is pretty powerful stuff. As they say: if you break it, you get to keep both pieces :)

    -

    how it actually works: Link

    +

    how it actually works: Link

    - +

    how it actually works

    diff --git a/-wildhow.html b/wildhow__.html similarity index 100% rename from -wildhow.html rename to wildhow__.html