Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor path & config system (#25330) #25416

Merged
merged 4 commits into from
Jun 22, 2023

Commits on Jun 21, 2023

  1. Refactor path & config system (go-gitea#25330)

    # The problem
    
    There were many "path tricks":
    
    * By default, Gitea uses its program directory as its work path
    * Gitea tries to use the "work path" to guess its "custom path" and
    "custom conf (app.ini)"
    * Users might want to use other directories as work path
    * The non-default work path should be passed to Gitea by GITEA_WORK_DIR
    or "--work-path"
    * But some Gitea processes are started without these values
        * The "serv" process started by OpenSSH server
        * The CLI sub-commands started by site admin
    * The paths are guessed by SetCustomPathAndConf again and again
    * The default values of "work path / custom path / custom conf" can be
    changed when compiling
    
    # The solution
    
    * Use `InitWorkPathAndCommonConfig` to handle these path tricks, and use
    test code to cover its behaviors.
    * When Gitea's web server runs, write the WORK_PATH to "app.ini", this
    value must be the most correct one, because if this value is not right,
    users would find that the web UI doesn't work and then they should be
    able to fix it.
    * Then all other sub-commands can use the WORK_PATH in app.ini to
    initialize their paths.
    * By the way, when Gitea starts for git protocol, it shouldn't output
    any log, otherwise the git protocol gets broken and client blocks
    forever.
    
    The "work path" priority is: WORK_PATH in app.ini > cmd arg --work-path
    > env var GITEA_WORK_DIR > builtin default
    
    The "app.ini" searching order is: cmd arg --config > cmd arg "work path
    / custom path" > env var "work path / custom path" > builtin default
    
    ## ⚠️ BREAKING
    
    If your instance's "work path / custom path / custom conf" doesn't meet
    the requirements (eg: work path must be absolute), Gitea will report a
    fatal error and exit. You need to set these values according to the
    error log.
    
    ----
    
    Close go-gitea#24818
    Close go-gitea#24222
    Close go-gitea#21606
    Close go-gitea#21498
    Close go-gitea#25107
    Close go-gitea#24981
    Maybe close go-gitea#24503
    
    Replace go-gitea#23301
    Replace go-gitea#22754
    
    And maybe more
    # Conflicts:
    #	cmd/web.go
    wxiaoguang committed Jun 21, 2023
    Configuration menu
    Copy the full SHA
    5d57309 View commit details
    Browse the repository at this point in the history
  2. fix merge

    wxiaoguang committed Jun 21, 2023
    Configuration menu
    Copy the full SHA
    27a0768 View commit details
    Browse the repository at this point in the history

Commits on Jun 22, 2023

  1. Configuration menu
    Copy the full SHA
    c4b91a9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d7feb95 View commit details
    Browse the repository at this point in the history