github.com/grantbow/fit@v0.7.1-0.20220916164603-1f7c88ac81e6/README.md (about)

     1  # fit
     2  filesystem issue tracker: manages plain text issues with git or hg 
     3  
     4  [![GoDoc](https://godoc.org/github.com/grantbow/fit?status.svg)](https://godoc.org/github.com/grantbow/fit) [![Build Status](https://travis-ci.com/grantbow/fit.svg?branch=master)](https://app.travis-ci.com/github/grantbow/fit) [![Test Coverage](https://codecov.io/gh/grantbow/fit/branch/master/graphs/badge.svg)](https://codecov.io/gh/grantbow/fit) [![GoReportCard](https://goreportcard.com/badge/github.com/grantbow/fit)](https://goreportcard.com/report/github.com/grantbow/fit) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2820/badge)](https://bestpractices.coreinfrastructure.org/projects/2820) [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/fit-issue/community)
     5  
     6  **TOC:**
     7  
     8  <!-- toc -->
     9  
    10  - [Prerequisites](#prerequisites)
    11  - [Goal](#goal)
    12  - [Getting Started](#getting-started)
    13    * [Layout](#layout)
    14    * [Example Use](#example-use)
    15    * [Installation](#installation)
    16    * [Configuration](#configuration)
    17    * [Example](#example)
    18  - [Hooks](#hooks)
    19  - [Governance](#governance)
    20  - [Feedback](#feedback)
    21  - [Next Steps](#next-steps)
    22  
    23  <!-- tocstop -->
    24  <!-- older topics
    25  # fit init, fit open, fit close, fit archive, fit list
    26  # what's an issue
    27  # fit codecov, 3 x scan issues,
    28  # fit summary
    29  # characteristics
    30  -->
    31  
    32  ## Prerequisites
    33  
    34  The only prerequisite is a filesystem. Issues can easily be created with new
    35  directories and a text editor.
    36  
    37  To list and manage the issues with the fit tool you need:
    38  - git or hg (mercurial)
    39  - go1.19
    40  - any operating system [supported by go](https://go.dev/doc/install/source) and
    41    [supported by
    42    git](https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools)
    43    including Windows, MacOS, Linux, \*BSD, Android, etc..
    44  
    45  ## Goal
    46  
    47  Capture issues fast.
    48  
    49  fit can be a project's primary issue system or a secondary system for code related issues.
    50  
    51  Standard coding practices improve project outcomes. Using fit minimizes
    52  switching between coding and issue tracking systems which increases
    53  productivity and maintains code context.
    54  
    55  The fit implementation is (almost) the simplest issue system that can still
    56  work. The intent is to make fit conventions natural for users of
    57  [git](https://en.wikipedia.org/wiki/Git) and
    58  [golang](https://en.wikipedia.org/wiki/Go_(programming_language)). Contention
    59  inherent in simpler issue systems is minimized and maintenance inherent in more
    60  complex issue systems is avoided. See ([Background](#background)) for an
    61  explanation.
    62  
    63  ## Getting Started
    64  
    65  ### Layout
    66  
    67  Filesystem Issue Tracker conventions/format
    68  ([Filesystem_Issues.md](docs/Filesystem_Issues.md)) store issues, one
    69  directory/folder per issue, inside a "fit" directory. That document also
    70  contains information about what a good issue looks like. Inside each issue
    71  directory is a plain text "Description" file. 
    72  
    73  Optional tag\_<key>\_<value> files assign meta data. A minimal issue looks like:
    74  
    75      fit/better_docs/Description
    76      fit/better_docs/tag_id_1
    77  
    78  The fit directory is located at the top of a git/mercurial repository and
    79  subfolders may contain their own fit directory.
    80  
    81  The config file is named `.fit.yml`,
    82  
    83  The EDITOR environment variable is the editor used by default.
    84  
    85  fit maintains the nearest `fit/` directory to your current working directory or
    86  it's parent directories.
    87  
    88  Setting an environment variable FIT overrides the default search for a location.
    89  
    90  Unlike other issue systems, fit
    91  issues naturally branch and merge along with the rest of your versioned files.
    92  
    93  Some support is available to import and/or reference other issue trackers.
    94  Usage reports via email or gitter are encouraged.
    95  
    96  ### Example Use
    97  
    98  To get started in the top of an existing git repo simply
    99  `mkdir -p fit/<issue_name>` and edit `fit/<issue_name>/Description` with
   100  your editor set in the EDITOR environment variable.
   101  
   102  `fit list` shows your issues.
   103  
   104  Add and commit the Description file like any other file in your repository.
   105  
   106  `git add fit/<issue_name>/Description && git commit -m "first issue"`
   107  
   108  If an environment variable named FIT is set that value will be used as a
   109  directory name used to find the 'fit' or 'issues' directory instead of your
   110  present working directory. All fit commands use the FIT environment variable
   111  if present.
   112  
   113  If a 'fit' directory/folder is not found and you enable recursion
   114  fit will walk up your filesystem tree
   115  until it finds a "fit" subdirectory similar to how git looks for
   116  .git or hg looks for .hg. A warning is provided if no directory is found.
   117  
   118  fit uses subcommands like git. For a list of commands use `fit help`
   119  
   120  ### Installation
   121  
   122  Briefly, you need git and [go installed](https://golang.org/doc/install).
   123  
   124  `go install github.com/grantbow/fit@latest`
   125  
   126  You can run fit as it's own command or as a git subcommand.
   127  
   128  For details see ([INSTALL.md](INSTALL.md)). The software was developed with go1.13 but only the current and one previous version are supported before being declared [end of life](https://go.dev/doc/devel/release#policy).
   129  
   130  ### Configuration
   131  
   132  The environment variable EDITOR is used to execute your preferred editor
   133  when needed.
   134  
   135  Settings are read from .fit.yml next to the fit directory.
   136  
   137  ```
   138  ClosePreventDelete: true
   139  NewFieldAsTag: true
   140  NewFieldLowerCase: true
   141  IdAbbreviate: true
   142  ```
   143  
   144  An important choice is what to do with closed issues. They can be deleted
   145  (the historical default), moved to a subdirectory "closed" or
   146  add a tag\_status\_closed which is recommended.
   147  
   148  Current options include:
   149  
   150      * DescriptionFileName: string
   151            Default is "Description".
   152            The name is one of the few imposed limitations.
   153            This configuration allows overriding the name used in your system.
   154      * DefaultDescriptionFile: string,
   155            Default is ""
   156            when doing fit {add|new|create}
   157            first copy this file name to Description
   158            recommended: fit/DescriptionDefault.txt
   159      * ImportXmlDump: true or false, 
   160            Default is false.
   161            during import, save raw xml files
   162      * ImportCommentsTogether: true or false,
   163            Default is false.
   164            during import, commments save together as one file
   165            instead of one comment per file.
   166      * ProgramVersion: string
   167            Default is "". Set to 0.6 when run. This
   168            string is appended to identify local customizations.
   169      * TagKeyValue: true or false
   170            Default is false.
   171            writes tags in tag_key_value format (true)
   172            rather than .../tag/key without values.
   173            tags in both forms are read automatically.
   174      * NewFieldAsTag: true or false
   175            Default is false.
   176            writes fields in tag_key_value format (true)
   177            rather than .../Key file with value in the text.
   178            fields in both forms are read automatically.
   179      * NewFieldLowerCase: true or false
   180            Default is false.
   181            writes fields as tag_key_value format (true)
   182            rather than .../tag_Key_value.
   183            fields in both forms are read automatically.
   184      * GithubPersonalAccessToken: string
   185            Default is empty.
   186            Set one at github.com/settings/tokens
   187            for import of private projects that need authentication
   188      * TwilioAccountSid: string
   189            Default is empty.
   190            Needed for twilio use.
   191      * TwilioAuthToken: string
   192            Default is empty.
   193            Needed for twilio use.
   194      * TwilioPhoneNumberFrom: string
   195            Default is empty.
   196            Needed for twilio use.
   197      * FitSite: string
   198            Default is empty.
   199            base url used in notifications
   200      * MultipleDirs: true or false
   201            Default is false.
   202            Set to always look recursive.
   203      * CloseStatusTag: true or false
   204            Default is false.
   205            fit close will not add a tag (false) or
   206            add tag_status_closed (true)
   207      * CloseMove: true or false
   208            Default is false.
   209            fit close will use ClosePreventDelete (false) or
   210            fit close will move issues to CloseDir (true) and
   211                sets ClosePreventDelete=true
   212      * ClosedDirName: string
   213            Default is "closed"
   214            this is the name used inside the fit directory
   215      * ClosePreventDelete: true or false
   216            Default is false.
   217            fit close will delete (false) or
   218            fit close will not delete (true)
   219                implies CloseStatusTag and/or CloseMove
   220      * IdAbbreviate: true or false
   221            Default is false.
   222            Use Identifier. True uses Id.
   223      * IdAutomatic: true or false
   224            Default is false.
   225            Generates an Identifier.
   226  
   227  Other issue systems may use databases, hidden directories or hidden branches.
   228  While these may be useful techniques in certain circumstances they obfuscate
   229  access to the data.
   230  
   231  Tags have been significantly enhanced since they were originally implemented.
   232  Using the above options the default behavior of boolean present/not present
   233  file names in a "tags" subdirectory can instead be filenames like Status that
   234  contain the values or even simple tag\_key\_value filenames with empty contents
   235  or comment contents. The last option enables great flexibility. A few keys are
   236  hard coded in the program with special features: Identifier, Priority, Status,
   237  Milestone and Tag. Newer tag\_key\_value filenames are recommended.
   238  
   239  Comments and suggestions are welcomed. Pull requests are even better but are
   240  not required to participate in this project.
   241  
   242  ### Example
   243  
   244  ```
   245  $ mkdir foo && cd foo
   246  $ git init
   247  $ mkdir fit
   248  $ fit help
   249  usage: fit help <command>
   250  
   251  fit manages plain text issues with git or hg.
   252  Use "fit help <command>" or "fit <command> help" for
   253      more information about any command below.
   254  fit version 0.7 built using go1.19 GOOS windows
   255  executable: -rw-rw-rw- 8411136 Tue Sep  6 04:44:31 PDT 2022 fit.exe
   256  
   257  Commands for status/reading:
   258      list       List issues
   259      find       Search for tag of fields: id, status, priority, or milestone
   260      tagslist   List assigned tags
   261      notags     List issues without tags
   262      ids        List stable identifiers
   263      noids      List issues without stable identifiers
   264      env        Show settings used when invoked from this directory
   265      pwd        Print the issues directory
   266      help       Show this screen
   267      version    Print the version of this software
   268  
   269  Commands for editing:
   270      create     Open new issue
   271      edit       Edit an issue
   272      retitle    Rename an issue
   273      close      Delete an issue
   274      tag        Tag an issue
   275      id         View or set a stable identifier
   276      status     View or set status
   277      priority   View or set priority
   278      milestone  View or set milestone
   279      import     Download from github or bugseverywhere repository
   280  
   281  Commands for version control:
   282      commit     Commit any new, changed or deleted issues
   283      purge      Remove all issues not tracked
   284  
   285  Commands for processing:
   286      roadmap    Print list of open issues sorted by milestone
   287  
   288  aliases for help: --help -h
   289  
   290  $ fit create better docs
   291  (<your editor> Description)
   292  (save and quit)
   293  Created issue: better docs
   294  
   295  $ fit list
   296  
   297  ===== list /.../foo/fit
   298  Issue 1: better docs
   299  
   300  $ fit list 1
   301  
   302  ===== list /.../foo/fit
   303  Title: better docs
   304  Description:
   305  <the entered description>
   306  
   307  $ fit create -n better README formatting
   308  (no editor launched, defaults to empty Description file)
   309  Created issue: better README formatting
   310  
   311  $ fit list
   312  
   313  ===== list /.../foo/fit
   314  Issue 1: better help
   315  Issue 2: better README formatting
   316  ```
   317  
   318  ## Hooks
   319  
   320  Event based automation can be added through git or mercurial hooks. Our hooks
   321  directory contains some examples. We look forward to seeing what teams use and
   322  contribute. Adapting hooks to both git and hg would be appreciated.
   323  
   324  ## Governance
   325  
   326  There are two key roles in the fit project: project owner & lead contributors.
   327  Collaboration is encouraged. See docs/FAQ.md for details.
   328  
   329  ## Feedback
   330  
   331  We would very much like to hear about how you use this system.
   332  
   333  I would like to work with others and would appreciate feedback at
   334  grantbow+fit@gmail.com.
   335  
   336  Since the original bug project is not very active I have gone ahead and continuted
   337  development. I encourage discussion. Submissions can be done with a
   338  pull request or using [git remotes](https://stackoverflow.com/questions/36628859/git-how-to-merge-a-pull-request-into-a-fork).
   339  
   340  ## Next Steps
   341  
   342  * docs/[Filesystem_Issues.md](docs/Filesystem_Issues.md)
   343  * docs/[FAQ.md](docs/FAQ.md)
   344  * docs/[Background.md](Background.md)
   345  * [CONTRIBUTING.md](CONTRIBUTING.md)
   346  * [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) is the standard recommended by github offered by contributor-covenant.org.
   347  * [SUPPORT.md](SUPPORT.md)
   348  * [wiki](https://github.com/grantbow/fit/wiki)
   349  * [gitter](https://gitter.im/fit-issue/community)
   350  * [SECURITY.md](SECURITY.md)
   351  
   352  Your system is just the beginning, not the end. Much has been written about
   353  how to use and setup systems to track or manage issues, software bugs, trouble
   354  tickets, support tickets, incident tickets or requests. See the docs/FAQ.md
   355