website/tags/tutorial/atom.xml

200 lines
34 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<title> - tutorial</title>
<link href="https://gna.org/tags/tutorial/atom.xml" rel="self" type="application/atom+xml"/>
<link href="https://gna.org"/>
<generator uri="https://www.getzola.org/">Zola</generator>
<updated>2022-07-20T00:00:00+00:00</updated>
<id>https://gna.org/tags/tutorial/atom.xml</id>
<entry xml:lang="en">
<title>1.17 breaking changes episode 2: preserving a custom gitconfig</title>
<published>2022-07-20T00:00:00+00:00</published>
<updated>2022-07-20T00:00:00+00:00</updated>
<link href="https://gna.org/blog/1-17-breaking-episode-2/" type="text/html"/>
<id>https://gna.org/blog/1-17-breaking-episode-2/</id>
<content type="html">&lt;p&gt;On June 21st, 2022 1.17.0-rc1 was published and the location of the gitconfig file moved to a new location, &lt;a href=&quot;2022-06-23-1.17-breaking-episode-1&quot;&gt;which required manual intervention&lt;&#x2F;a&gt;. This change impacted a large number of Gitea installations because the docker image tag &lt;strong&gt;latest&lt;&#x2F;strong&gt; &lt;a href=&quot;https:&#x2F;&#x2F;mastodon.online&#x2F;@hostea&#x2F;108514134565401798&quot;&gt;was set to 1.17.0-rc1&lt;&#x2F;a&gt; by accident. As a result, about 10,000 pulls per hour from the docker hub got the release candidate instead of the expected stable version.&lt;&#x2F;p&gt;
&lt;p&gt;Unfortunately moving the git home directory in 1.17.0-rc1 was implemented in way that created a security problem. The &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;pull&#x2F;20114&quot;&gt;fix that was merged in Gitea&lt;&#x2F;a&gt; to fix it requires moving the gitconfig file and was released July 19th, 2022 in 1.17.0-rc2.&lt;&#x2F;p&gt;
&lt;p&gt;This would have been a minor inconvenience if it only has an impact on adventurous people trying the release candidate in a test environment. But since all Gitea production installations based on the &lt;strong&gt;latest&lt;&#x2F;strong&gt; tag were inadvertently upgraded to 1.17.0-rc1, the admins who moved their custom .gitconfig will need to move it one more time when upgrading to 1.17.0-rc2.&lt;&#x2F;p&gt;
&lt;p&gt;In 1.17.0-rc2, a custom .gitconfig must be moved manually to the &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitea.io&#x2F;en-us&#x2F;config-cheat-sheet&#x2F;#git-git&quot;&gt;new git home directory&lt;&#x2F;a&gt; as follows:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Figure out the directory where &lt;code&gt;$HOME&#x2F;.gitconfig&lt;&#x2F;code&gt; must be moved by &lt;a href=&quot;https:&#x2F;&#x2F;gna.org&#x2F;blog&#x2F;gentle-introduction-to-the-doctor&#x2F;&quot;&gt;running the doctor&lt;&#x2F;a&gt;:&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;shell&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-shell &quot;&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span&gt;$ gitea --work-path &#x2F;app&#x2F;gitea -c &#x2F;data&#x2F;gitea&#x2F;conf&#x2F;app.ini doctor
&lt;&#x2F;span&gt;&lt;span&gt;[1] Check paths and basic configuration
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Configuration File Path: &amp;quot;&#x2F;data&#x2F;gitea&#x2F;conf&#x2F;app.ini&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Repository Root Path: &amp;quot;&#x2F;data&#x2F;git&#x2F;repositories&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Data Root Path: &amp;quot;&#x2F;data&#x2F;gitea&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Custom File Root Path: &amp;quot;&#x2F;data&#x2F;gitea&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Work directory: &amp;quot;&#x2F;app&#x2F;gitea&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Log Root Path: &amp;quot;&#x2F;data&#x2F;gitea&#x2F;log&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;OK
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Copy the &lt;code&gt;$HOME&#x2F;.gitconfig&lt;&#x2F;code&gt; file to the &lt;strong&gt;Data Root Path&lt;&#x2F;strong&gt;&#x2F;home (which is &lt;code&gt;&#x2F;data&#x2F;gitea&#x2F;home&lt;&#x2F;code&gt; in the example above).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
</entry>
<entry xml:lang="en">
<title>1.17 breaking changes episode 1: preserving a custom gitconfig</title>
<published>2022-06-22T00:00:00+00:00</published>
<updated>2022-06-22T00:00:00+00:00</updated>
<link href="https://gna.org/blog/1-17-breaking-episode-1/" type="text/html"/>
<id>https://gna.org/blog/1-17-breaking-episode-1/</id>
<content type="html">&lt;p&gt;Before version 1.17, when Gitea needed to change the &lt;a href=&quot;https:&#x2F;&#x2F;git-scm.com&#x2F;docs&#x2F;git-config&quot;&gt;git configuration&lt;&#x2F;a&gt;, it modified the &lt;code&gt;$HOME&#x2F;.gitconfig&lt;&#x2F;code&gt; file. For instance it would &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;blob&#x2F;release&#x2F;v1.16&#x2F;modules&#x2F;git&#x2F;git.go#L174-L177&quot;&gt;set core.quotePath to false&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;ini&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-ini &quot;&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[core]
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;quotePath &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;false
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;When installing Gitea &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitea.io&#x2F;en-us&#x2F;install-with-docker&#x2F;&quot;&gt;from docker&lt;&#x2F;a&gt; or &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitea.io&#x2F;en-us&#x2F;install-with-docker-rootless&#x2F;&quot;&gt;rootless&lt;&#x2F;a&gt; or even &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitea.io&#x2F;en-us&#x2F;install-from-binary&#x2F;&quot;&gt;from binary&lt;&#x2F;a&gt; this &lt;code&gt;$HOME&#x2F;.gitconfig&lt;&#x2F;code&gt; file belongs to a user that is &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitea.io&#x2F;en-us&#x2F;install-from-binary&#x2F;#prepare-environment&quot;&gt;dedicated to Gitea&lt;&#x2F;a&gt; and not used by anyone else.&lt;&#x2F;p&gt;
&lt;p&gt;However, if an Gitea installation was done differently and &lt;code&gt;$HOME&#x2F;.gitconfig&lt;&#x2F;code&gt; has been customized because it is shared by a user or another application, there is a good chance that manual modifications were done such as:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;ini&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-ini &quot;&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[user]
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;name &lt;&#x2F;span&gt;&lt;span&gt;= Jane Doe
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;email &lt;&#x2F;span&gt;&lt;span&gt;= jane&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;@doe&lt;&#x2F;span&gt;&lt;span&gt;.com
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It is also possible that the file was modified manually by the Gitea admin for other reasons. In both there is a &lt;strong&gt;potential for breakage when upgrading to Gitea &amp;gt;= 1.17 because the location of the file changed&lt;&#x2F;strong&gt;. It must be moved manually to the new location as follows:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Figure out the directory where &lt;code&gt;$HOME&#x2F;.gitconfig&lt;&#x2F;code&gt; must be moved by &lt;a href=&quot;https:&#x2F;&#x2F;gna.org&#x2F;blog&#x2F;gentle-introduction-to-the-doctor&#x2F;&quot;&gt;running the doctor&lt;&#x2F;a&gt;:&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;shell&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-shell &quot;&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span&gt;$ gitea --work-path &#x2F;app&#x2F;gitea -c &#x2F;data&#x2F;gitea&#x2F;conf&#x2F;app.ini doctor
&lt;&#x2F;span&gt;&lt;span&gt;[1] Check paths and basic configuration
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Configuration File Path: &amp;quot;&#x2F;data&#x2F;gitea&#x2F;conf&#x2F;app.ini&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Repository Root Path: &amp;quot;&#x2F;data&#x2F;git&#x2F;repositories&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Data Root Path: &amp;quot;&#x2F;data&#x2F;gitea&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Custom File Root Path: &amp;quot;&#x2F;data&#x2F;gitea&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Work directory: &amp;quot;&#x2F;app&#x2F;gitea&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; - [I] Log Root Path: &amp;quot;&#x2F;data&#x2F;gitea&#x2F;log&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;OK
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Copy the &lt;code&gt;$HOME&#x2F;.gitconfig&lt;&#x2F;code&gt; file to the &lt;strong&gt;Repository Root Path&lt;&#x2F;strong&gt; (which is &lt;code&gt;&#x2F;data&#x2F;git&#x2F;repositories&lt;&#x2F;code&gt; in the example above).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The reason why this breaking change was introduced is to workaround &lt;a href=&quot;https:&#x2F;&#x2F;gna.org&#x2F;blog&#x2F;unsafe-repository-is-owned-by-someone-else&#x2F;&quot;&gt;a rare problem&lt;&#x2F;a&gt; impacting Gitea installations relying on networked volumes.&lt;&#x2F;p&gt;
</content>
</entry>
<entry xml:lang="en">
<title>[tutorial] A gentle introduction to the gitea doctor</title>
<published>2022-06-14T00:00:00+00:00</published>
<updated>2022-06-14T00:00:00+00:00</updated>
<link href="https://gna.org/blog/gentle-introduction-to-the-doctor/" type="text/html"/>
<id>https://gna.org/blog/gentle-introduction-to-the-doctor/</id>
<content type="html">&lt;p&gt;While helping people with their upgrades &lt;a href=&quot;https:&#x2F;&#x2F;discourse.gitea.io&#x2F;t&#x2F;migration-from-1-2-to-1-16-8&#x2F;5309&quot;&gt;in the Gitea forum&lt;&#x2F;a&gt; or &lt;a href=&quot;https:&#x2F;&#x2F;forum.gna.org&#x2F;t&#x2F;gitea-upgrade-from-1-14-1-to-1-16-8&#x2F;90&quot;&gt;at the Gna! clinic&lt;&#x2F;a&gt;, I realized that few Gitea admins know about the &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitea.io&#x2F;en-us&#x2F;command-line&#x2F;#doctor&quot;&gt;&lt;code&gt;gitea doctor&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; command and decided to write this blog post as a gentle introduction.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;an-apple-a-day-keeps-the-doctor-away&quot;&gt;An apple a day keeps the doctor away&lt;a class=&quot;zola-anchor&quot; href=&quot;#an-apple-a-day-keeps-the-doctor-away&quot; aria-label=&quot;Anchor link for: an-apple-a-day-keeps-the-doctor-away&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Or in our case, Gitea versions &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;blob&#x2F;v1.11.5&#x2F;cmd&#x2F;doctor.go&quot;&gt;below 1.11.5&lt;&#x2F;a&gt;. Since then, the &lt;code&gt;gitea doctor&lt;&#x2F;code&gt; is available and is designed to run against a specific Gitea version. It would not be a good idea to try to run the doctor from Gitea 1.16 to verify the sanity of a Gitea 1.2 instance: it will be confused by how the database is organized and a number of other details. Historical fun fact: the &lt;code&gt;gitea doctor&lt;&#x2F;code&gt; was backported to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;blob&#x2F;v1.10.5&#x2F;cmd&#x2F;doctor.go&quot;&gt;Gitea 1.10.5&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;blob&#x2F;v1.10.6&#x2F;cmd&#x2F;doctor.go&quot;&gt;Gitea 1.10.6&lt;&#x2F;a&gt; and may be of help if you run this particular version and are facing the problem that motivated the backport.&lt;&#x2F;p&gt;
&lt;p&gt;With each version &lt;code&gt;gitea doctor&lt;&#x2F;code&gt; improves and gains new capabilities. For instance, in Gitea 1.17 it becomes aware of &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;pull&#x2F;19731&quot;&gt;orphaned pull requests&lt;&#x2F;a&gt; and is able to fix them. If such a problem exists in Gitea 1.16, it does not know about it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;calling-the-doctor&quot;&gt;Calling the doctor&lt;a class=&quot;zola-anchor&quot; href=&quot;#calling-the-doctor&quot; aria-label=&quot;Anchor link for: calling-the-doctor&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;In the following, examples are based on a Gitea 1.16.8 instance you can run as follows:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker run&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --name&lt;&#x2F;span&gt;&lt;span&gt; gitea&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span&gt; 3000:3000&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span&gt; GITEA__security__INSTALL_LOCK=true&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -d&lt;&#x2F;span&gt;&lt;span&gt; gitea&#x2F;gitea:1.16.8-rootless
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker exec gitea gitea admin user create&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --admin --username&lt;&#x2F;span&gt;&lt;span&gt; root&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --password&lt;&#x2F;span&gt;&lt;span&gt; admin1234&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --email&lt;&#x2F;span&gt;&lt;span&gt; root@example.com
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker exec gitea mkdir &#x2F;var&#x2F;lib&#x2F;gitea&#x2F;data&#x2F;log
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;And then you can go to the &lt;a href=&quot;https:&#x2F;&#x2F;127.0.0.1:3000&#x2F;&quot;&gt;web interface&lt;&#x2F;a&gt; to create a &lt;code&gt;test&lt;&#x2F;code&gt; repository, with an initial &lt;code&gt;README.md&lt;&#x2F;code&gt; file. When this is done the doctor can be called as follows:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker exec gitea gitea doctor&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --all
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[1]&lt;&#x2F;span&gt;&lt;span&gt; Check paths and basic configuration
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Configuration File Path: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;etc&#x2F;gitea&#x2F;app.ini&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Repository Root Path: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;var&#x2F;lib&#x2F;gitea&#x2F;git&#x2F;repositories&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Data Root Path: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;var&#x2F;lib&#x2F;gitea&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Custom File Root Path: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;var&#x2F;lib&#x2F;gitea&#x2F;custom&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Work directory: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;var&#x2F;lib&#x2F;gitea&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Log Root Path: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;var&#x2F;lib&#x2F;gitea&#x2F;data&#x2F;log&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[2]&lt;&#x2F;span&gt;&lt;span&gt; Check if there is garbage storage files
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[3]&lt;&#x2F;span&gt;&lt;span&gt; Check Database Version
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[4]&lt;&#x2F;span&gt;&lt;span&gt; Check consistency of database
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[5]&lt;&#x2F;span&gt;&lt;span&gt; Check if user with wrong type exist
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[6]&lt;&#x2F;span&gt;&lt;span&gt; Check if OpenSSH authorized_keys file is up-to-date
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[7]&lt;&#x2F;span&gt;&lt;span&gt; Check if SCRIPT_TYPE is available
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; ScriptType bash is on the current PATH at &#x2F;bin&#x2F;bash
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[8]&lt;&#x2F;span&gt;&lt;span&gt; Check if hook files are up-to-date and executable
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[9]&lt;&#x2F;span&gt;&lt;span&gt; Recalculate Stars number for all user
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[10]&lt;&#x2F;span&gt;&lt;span&gt; Check old archives
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; 0 old archives in repository need to be deleted
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[11]&lt;&#x2F;span&gt;&lt;span&gt; Enable push options
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Checked 1 repositories, 0 need updates.
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[12]&lt;&#x2F;span&gt;&lt;span&gt; Check for incorrectly dumped repo_units (See &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;#16961)
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;W&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Found 0 broken repo_units
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[13]&lt;&#x2F;span&gt;&lt;span&gt; Recalculate merge bases
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;W&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; 0 PRs with incorrect mergebases of 0 PRs total in 1 repos
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[14]&lt;&#x2F;span&gt;&lt;span&gt; Check git-daemon-export-ok files
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;I&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Checked 1 repositories, 0 need updates.
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;what-does-the-doctor-know&quot;&gt;What does the doctor know?&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-does-the-doctor-know&quot; aria-label=&quot;Anchor link for: what-does-the-doctor-know&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Although the &lt;code&gt;doctor&lt;&#x2F;code&gt; can be compared to &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Fsck&quot;&gt;fsck(8)&lt;&#x2F;a&gt;, it does not know everything. It took decades for &lt;code&gt;fsck&lt;&#x2F;code&gt; to become the ultimate authority on finding problems on file systems and reliably fixing them without losing data. Nowadays, only a handful of people in the world are brave enough to manually attempt a file system recovery when &lt;code&gt;fsck&lt;&#x2F;code&gt; cannot recover from a data loss.&lt;&#x2F;p&gt;
&lt;p&gt;The first &lt;code&gt;doctor&lt;&#x2F;code&gt; version is two years old and Gitea admins are still routinely running SQL queries against the database or moving files around when trying to figure out why a Gitea instance is not behaving as it should. It is however worth checking if the doctor does not already have a solution by listing all it can do:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker exec gitea gitea doctor&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --list
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Default&lt;&#x2F;span&gt;&lt;span&gt; Name Title
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt; paths Check paths and basic configuration
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;storages&lt;&#x2F;span&gt;&lt;span&gt; Check if there is garbage storage files
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt; check-db-version Check Database Version
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;check-db-consistency&lt;&#x2F;span&gt;&lt;span&gt; Check consistency of database
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt; check-user-type Check if user with wrong type exist
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt; authorized-keys Check if OpenSSH authorized_keys file is up-to-date
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;script-type&lt;&#x2F;span&gt;&lt;span&gt; Check if SCRIPT_TYPE is available
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;hooks&lt;&#x2F;span&gt;&lt;span&gt; Check if hook files are up-to-date and executable
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;recalculate-stars-number&lt;&#x2F;span&gt;&lt;span&gt; Recalculate Stars number for all user
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;check-old-archives&lt;&#x2F;span&gt;&lt;span&gt; Check old archives
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;enable-push-options&lt;&#x2F;span&gt;&lt;span&gt; Enable push options
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;fix-broken-repo-units&lt;&#x2F;span&gt;&lt;span&gt; Check for incorrectly dumped repo_units (See &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;#16961)
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;recalculate-merge-bases&lt;&#x2F;span&gt;&lt;span&gt; Recalculate merge bases
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;check-git-daemon-export-ok&lt;&#x2F;span&gt;&lt;span&gt; Check git-daemon-export-ok files
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;And then call the &lt;code&gt;check&lt;&#x2F;code&gt; that looks interesting:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker exec gitea gitea doctor&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --run&lt;&#x2F;span&gt;&lt;span&gt; authorized-keys
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[1]&lt;&#x2F;span&gt;&lt;span&gt; Check if OpenSSH authorized_keys file is up-to-date
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The challenge is to figure out which &lt;code&gt;check&lt;&#x2F;code&gt; does what and at the moment the best source of information is ... &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;tree&#x2F;v1.16.8&quot;&gt;the sources&lt;&#x2F;a&gt; themselves. The &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;blob&#x2F;v1.16.8&#x2F;cmd&#x2F;doctor.go&quot;&gt;doctor.go&lt;&#x2F;a&gt; command is the entry point and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;tree&#x2F;v1.16.8&#x2F;modules&#x2F;doctor&quot;&gt;the doctor directory&lt;&#x2F;a&gt; contains the rest.&lt;&#x2F;p&gt;
&lt;p&gt;Some &lt;code&gt;checks&lt;&#x2F;code&gt; are straightforward to understand, even if you do not know Go, such as &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;blob&#x2F;v1.16.8&#x2F;modules&#x2F;doctor&#x2F;authorizedkeys.go&quot;&gt;the authorized-keys check&lt;&#x2F;a&gt;. Others are much more involved and your best chance is to &lt;a href=&quot;https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#gitea:matrix.org&quot;&gt;ask the Gitea chatroom&lt;&#x2F;a&gt; for help.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;is-it-going-to-hurt&quot;&gt;Is it going to hurt?&lt;a class=&quot;zola-anchor&quot; href=&quot;#is-it-going-to-hurt&quot; aria-label=&quot;Anchor link for: is-it-going-to-hurt&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;By default the doctor (very much like &lt;code&gt;fsck -N&lt;&#x2F;code&gt;) only performs non destructive checks and displays diagnostics, with an indication of how serious the problem is. In the example above, there only are lines with &lt;strong&gt;[I]&lt;&#x2F;strong&gt; (which indicates an information) and &lt;strong&gt;[W]&lt;&#x2F;strong&gt; which indicates a warning that can be ignored but may be worth looking into. Those two warnings are actually just informational and should be labelled as &lt;strong&gt;[I]&lt;&#x2F;strong&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;pull&#x2F;19836&quot;&gt;which has been fixed&lt;&#x2F;a&gt; in a more recent version of the doctor.&lt;&#x2F;p&gt;
&lt;p&gt;Now let&#x27;s do something bad: remove the permissions from a hook in our repository:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker exec gitea chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -x&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;var&#x2F;lib&#x2F;gitea&#x2F;git&#x2F;repositories&#x2F;root&#x2F;test.git&#x2F;hooks&#x2F;post-receive
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Run the doctor with the &lt;code&gt;check&lt;&#x2F;code&gt; supposed to find that out:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker exec gitea gitea doctor&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --run&lt;&#x2F;span&gt;&lt;span&gt; hooks
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[1]&lt;&#x2F;span&gt;&lt;span&gt; Check if hook files are up-to-date and executable
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;W&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; old hook file &#x2F;var&#x2F;lib&#x2F;gitea&#x2F;git&#x2F;repositories&#x2F;root&#x2F;test.git&#x2F;hooks&#x2F;post-receive is not executable
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ask it to fix this with the &lt;code&gt;--fix&lt;&#x2F;code&gt; flag:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker exec gitea gitea doctor&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --run&lt;&#x2F;span&gt;&lt;span&gt; hooks&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --fix
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[1]&lt;&#x2F;span&gt;&lt;span&gt; Check if hook files are up-to-date and executable
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;W&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Regenerated hooks for root&#x2F;test
&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;W&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; old hook file &#x2F;var&#x2F;lib&#x2F;gitea&#x2F;git&#x2F;repositories&#x2F;root&#x2F;test.git&#x2F;hooks&#x2F;post-receive is not executable
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;And run it one last time to check all is well:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; docker exec gitea gitea doctor&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --run&lt;&#x2F;span&gt;&lt;span&gt; hooks
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;[1]&lt;&#x2F;span&gt;&lt;span&gt; Check if hook files are up-to-date and executable
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;OK
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Even when the doctor is unable to fix a problem, it can help by showing extensive debug output which can be found, by default, in the &lt;code&gt;doctor.log&lt;&#x2F;code&gt; file in the directory from which it runs. Or it can be displayed on the standard output with &lt;code&gt;--log-file -&lt;&#x2F;code&gt;, which is most convenient when running in docker.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;going-further&quot;&gt;Going further&lt;a class=&quot;zola-anchor&quot; href=&quot;#going-further&quot; aria-label=&quot;Anchor link for: going-further&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;If that was helpful to you, I would very much appreciate if you &lt;a href=&quot;https:&#x2F;&#x2F;mastodon.online&#x2F;@dachary&quot;&gt;send me a message on Mastodon&lt;&#x2F;a&gt;. It will encourage me to write more blog posts to share what I learn about Gitea. Even better: you could &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;go-gitea&#x2F;gitea&#x2F;pulls&quot;&gt;send a pull request&lt;&#x2F;a&gt; to improve the doctor and help it mature.&lt;&#x2F;p&gt;
</content>
</entry>
</feed>