diff --git a/.gitattributes b/.gitattributes index dc37cdc..afbb2c0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,6 +5,7 @@ # Force the following filetypes to have unix eols and encoding, so that Windows does not break them. # If a file is going to be used on linux and windows, we want it invariant, # rather than automatically translated, because automatic translation always screw things up. +* text=auto eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 .gitignore text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 .gitattributes text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 .gitmodules text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff --git a/.gitconfig b/.gitconfig index b82a964..de3488f 100644 --- a/.gitconfig +++ b/.gitconfig @@ -1,7 +1,7 @@ [core] autocrlf = input whitespace = -tab-in-indent,tabwidth=4,indent-with-non-tab,trailing-space,space-before-tab - safecrlf + safecrlf=warn [apply] whitespace = fix ignoreWhitespace = no @@ -9,25 +9,5 @@ lg = log --max-count=6 --oneline --pretty='format:%C(auto)%h %d %Creset%p %C("#60A0FF")%cr %Cgreen %cn %G? %GT trust%Creset%n%s%n' graph = log --max-count=18 --graph --pretty=format:'%C(auto)%h %s %Cgreen(%cr) %C(bold blue)%cn %G?%Creset' --abbrev-commit alias = ! git config --get-regexp ^alias\\. | sed -e s/^alias\\.// -e s/\\ /\\ =\\ / | grep -v ^'alias ' | sort - fixws = !"\ - if (! git diff-files --quiet .) && \ - (! git diff-index --quiet --cached HEAD) ; then \ - git commit -m FIXWS_SAVE_INDEX && \ - git add -u :/ && \ - git commit -m Fix_whitespace && \ - git rebase --whitespace=fix HEAD~2 && \ - git reset HEAD~ && \ - git reset --soft HEAD~ ; \ - elif (! git diff-files --quiet .) ; then \ - git add -u :/ && \ - git commit -m Fix_whitespace && \ - git rebase --whitespace=fix HEAD~ && \ - git reset HEAD~ ; \ - elif (! git diff-index --quiet --cached HEAD) ; then \ - git commit -m FIXWS_SAVE_INDEX && \ - git rebase --whitespace=fix HEAD~ && \ - git reset --soft HEAD~ ; \ - fi" - check-whitespace = !"git diff --check $(git hash-object -t tree /dev/null) HEAD" [commit] gpgSign = true diff --git a/.gitignore b/.gitignore index 5a7be92..52149e2 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,7 @@ sqlite3/sqlite-doc/ *.vcxproj.filters *.html *.htm -wallet.cppcheck +*.cppcheck # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs diff --git a/docs/rootDocs/README.md b/docs/rootDocs/README.md index 78774f1..d54f3ce 100644 --- a/docs/rootDocs/README.md +++ b/docs/rootDocs/README.md @@ -28,20 +28,30 @@ winConfigure.bat Should the libraries change in a subsequent `pull ` you will need ```bat -pull -f --recurse-submodules +git pull +rem you get a status message indicating libraries have been updated. +git pull -force --recurse-submodules winConfigure.bat ``` +in order to rebuild the libraries. + +The `--force` is necessary, because `winConfigure.bat` changes +many of the library files, and therefore git will abort the pull. + [cryptographic software is under attack]:./docs/contributor_code_of_conduct.html#code-will-be-cryptographically-signed "Contributor Code of Conduct" {target="_blank"} -The winConfigure script builds everything, including the documents, but takes a while. Normally when you make changes to the source code you should rebuild just the program, using `wallet.sln` on windows. To rebuild the documents after editing them, `docs/mkdocs` +The winConfigure script builds everything, including the documents, but +takes a while. Normally when you make changes to the source code you +should rebuild just the program, using `wallet.sln` on windows. +To rebuild the documents after editing them, `docs/mkdocs` winConfigure.bat also configures the repository you just created to use `.gitconfig` in the repository, causing git to to implement GPG signed commits -- because [cryptographic software is under attack] from NSA -entryists, and shills, who seek to introduce backdoors. +entryists and shills, who seek to introduce backdoors. This may be inconvenient if you do not have `gpg` installed and set up. @@ -50,32 +60,40 @@ This may be inconvenient if you do not have `gpg` installed and set up. 1. `git lg` to display the gpg trust information for the last four commits. For this to be useful you need to import the repository public key `public_key.gpg` into gpg, and locally sign that key. -1. `git fixws` to standardise white space to the project standards -1. `git graph` to graph the commit tree +1. `git graph` to graph the commit tree with signing status 1. `git alias` to display the git aliases. ```bash -# To verify that the signature on future pulls is unchanged. +# To verify that the signature on future pulls is +# unchanged. gpg --import public_key.gpg gpg --lsign 096EAE16FB8D62E75D243199BC4482E49673711C -# We ignore the Gpg Web of Trust model and instead use -# the Zooko identity model. -# We use Gpg signatures to verify that remote repository -# code is coming from an unchanging entity, not for -# Gpg Web of Trust. Web of Trust is too complicated -# and too user hostile to be workable or safe. -# Never --sign any Gpg key related to this project. --lsign it. -# Never check any Gpg key related to this project against a -# public gpg key repository. It should not be there. -# Never use any email address on a gpg key related to this project -# unless it is only used for project purposes, or a fake email, -# or the email of an enemy. ``` +We ignore the Gpg Web of Trust model and instead use the Zooko +identity model. + +We use Gpg signatures to verify that remote repository code +is coming from an unchanging entity, not for Gpg Web of Trust. Web +of Trust is too complicated and too user hostile to be workable or safe. + +Never --sign any Gpg key related to this project. --lsign it. + +Never check any Gpg key related to this project against a public +gpg key repository. It should not be there. + +Never use any email address on a gpg key related to this project +unless it is only used for project purposes, or a fake email, or the +email of an enemy. We don't want Gpg used to link different email +addresses as owned by the same entity, and we don't want email +addresses used to link people to the project, because those +identities would then come under state and quasi state pressure. + To build the documentation in its intended html form from the markdown files, execute the bash script file `docs/mkdocs.sh`, in an environment where -`pandoc` is available. On Windows, if Git Bash and Pandoc has been -installed, you should be able to run a shell file in bash by double clicking on it. +`pandoc` is available. On Windows, if Git Bash and Pandoc +has been installed, you should be able to run this shell +file in bash by double clicking on it. [Pre alpha release](./RELEASE_NOTES.html), which means it does not yet work even well enough for it to be apparent what it would do if it did work.