From 623edecd0c0accfc8375b394e5828c4ff4cfaa0e Mon Sep 17 00:00:00 2001 From: nojhan Date: Mon, 24 Jul 2023 15:30:43 +0200 Subject: [PATCH] add doc --- LICENSE | 661 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 175 +++++++++++++ add-commit.png | Bin 0 -> 14001 bytes gitcrux.png | Bin 0 -> 13767 bytes 4 files changed, 836 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 add-commit.png create mode 100644 gitcrux.png diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dba13ed --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..76e8fd9 --- /dev/null +++ b/README.md @@ -0,0 +1,175 @@ +GitCrux — A Liquid Prompt Theme +=============================== + +GitCrux is a theme for [Liquid Prompt](https://github.com/nojhan/liquidprompt), +showing visual hints inspired from [GitCrux](https://github.com/nojhan/gitcrux). + +The objective of GitCrux is to help you finding which Git command to use, +given the current state of your Git repository. +Hints are given in a visual way, helping the user to understand what commands +will change. + +It targets users who are starting out with Git and struggle to rembemer +the classical Git workflow. + +Example: +![](add-commit.png) + + +Design +------ + +The first line of the prompt is the classical theme right from Liquid Prompt, +only without the VCS information. + +The second line shows the five main states tracked by Git: + +- the remote repository (with the number of remote commits behind), +- the local repository (showed by its name), +- the staged changes (showing either a wall clock, or the number of altered lines), +- the branch (and the number of commits ahead), +- the stash. + +All lines after show colored arrow, figuring what states the denoted command +will change. The color of the arrow figures the urgency to issue that command. + +For instance, if there is only a few lines changed, the "add" arrow is shown +in a light color, if there is several modified lines, the arrow will be colored +more strongly, and if there is too much editions, the arrow will be heavily +colored. + +The prompt comes with the `gitcrux` command, that displays a diagram showing +all the supported commands: + +![](gitcrux.png) + + +Setup +----- + +To actually use the GitCrux theme, you need to add a few configuration commands +to the script that loads Liquid Prompt. For example: + +```sh +# Load Liquid Prompt. +source ~/liquidprompt/liquidprompt +# Load the theme. +source ~/lp-gitcrux/gitcrux.theme && lp_theme gitcrux +``` + +By default, GitCrux needs a [Nerd-font](https://www.nerdfonts.com/) to display +the arrows correctly. +See the [Nerd-fonts Fonts installation docs](https://www.nerdfonts.com/) +for help on installing this kind of fonts. +If you do not have a Nerd-font, you may configure +`GITCRUX_ARROW_RIGHT` and `GITCRUX_ARROW_RIGHT` to draw different arrow styles +(see below). + + +Configuration +------------- + +### Liquid Prompt Configuration + +The GitCrux theme honors all Liquid Prompt configuration options. + +However, the command hints only targets Git (so far), even if they are showed +for any supported VCS repository. + + +### Theme configuration + +#### Arrows + +**GITCRUX_ARROW_RIGHT** *array* = ( "" "" ) + +Symbols used to draw arrow heads and tails. + +**GITCRUX_ARROW_LEFT** *array* = ( "" "" ) + +Symbols used to draw arrow heads and tails. + +**GITCRUX_MIN_COL_WIDTH** *integer* = 8 + +Minimum width of each of the Git state columns. + +**GITCRUX_COL_DYNAMIC** *boolean* = 1 + +Automatically increase each columns width if at least one of the column text +is larger than `GITCRUX_MIN_COL_WIDTH`. + +**GITCRUX_SHOW_EXPLANATION** *boolean* = 1 + +Show a sentence explaining why the hint is shown. + + +#### Colors + +**GITCRUX_COLOR_WEAK** *string* = "0 195 0" + +Color of arrows if the related sensor is below "normal". + +**GITCRUX_COLOR_NORMAL** *string* = "0 39 1" + +Color of arrows if the related sensor is above "normal" and below "strong". + +**GITCRUX_COLOR_STRONG** *string* = "0 220 1" + +Color of arrows if the related sensor is above "strong". + +**GITCRUX_COLOR_MSG** *string* = "0 244 0" + +Color of error messages. + +**GITCRUX_COLOR_EXPLANATION** *string* = "28 -1 0" + +Color of explanation messages. + + +#### Thresholds. + +**GITCRUX_THRESH_BEHIND_NORMAL** *integer* = 2 + +How many commits behind remote needs a "normal" alert. + +**GITCRUX_THRESH_BEHIND_STRONG** *integer* = 5 + +How many commits behind remote needs a "strong" alert. + + +**GITCRUX_THRESH_AHEAD_NORMAL** *integer* = 2 + +How many commits ahead of remote needs a "normal" alert. + +**GITCRUX_THRESH_AHEAD_STRONG** *integer* = 5 + +How many commits ahead remote needs a "strong" alert. + + +**GITCRUX_THRESH_LINES_NORMAL** *integer* = 100 + +How many modified lines needs a "normal" alert. + +**GITCRUX_THRESH_LINES_STRONG** *integer* = 500 + +How many modified lines needs a "strong" alert. + + +**GITCRUX_THRESH_ADD_NORMAL** *integer* = 100 + +How many added files needs a "normal" alert. + +**GITCRUX_THRESH_ADD_STRONG** *integer* = 500 + +How many added files needs a "strong" alert. + + +**GITCRUX_THRESH_STASH_NORMAL** *integer* = 1 + +How many stashed commits needs a "normal" alert. + +**GITCRUX_THRESH_STASH_STRONG** *integer* = 5 + +How many stashed commits needs a "strong" alert. + + diff --git a/add-commit.png b/add-commit.png new file mode 100644 index 0000000000000000000000000000000000000000..6b14edc3a28e21e80fe18cc3ba526eab8eb4be75 GIT binary patch literal 14001 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 literal 0 HcmV?d00001 diff --git a/gitcrux.png b/gitcrux.png new file mode 100644 index 0000000000000000000000000000000000000000..d69ae70ff37db344feaa00b97ecba18846eba32a GIT binary patch literal 13767 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 JxtL+l{|7ZIzN`QM literal 0 HcmV?d00001