You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by gi...@apache.org on 2022/06/22 11:27:36 UTC

[incubator-devlake-website] branch asf-site updated: deploy: 412f60297baf49529384e40d6bb35d048a061734

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-devlake-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 24bc319  deploy: 412f60297baf49529384e40d6bb35d048a061734
24bc319 is described below

commit 24bc319e9d2b37562b149c52dfa2949caca05696
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Wed Jun 22 11:27:32 2022 +0000

    deploy: 412f60297baf49529384e40d6bb35d048a061734
---
 404.html                                           |  8 ++++----
 assets/js/7452ddde.c0e73ebf.js                     |  1 +
 assets/js/7452ddde.f237960f.js                     |  1 -
 assets/js/814f3328.51824e17.js                     |  1 -
 assets/js/814f3328.9ffefc6a.js                     |  1 +
 assets/js/b2f554cd.b1efd7c3.js                     |  1 +
 assets/js/b2f554cd.b99906cf.js                     |  1 -
 assets/js/cee7cffd.03fdf950.js                     |  1 -
 assets/js/cee7cffd.49ed568d.js                     |  1 +
 assets/js/d65984bc.1ee89b17.js                     |  1 +
 assets/js/d65984bc.3a7a97d6.js                     |  1 -
 assets/js/ea0b4130.8d627b17.js                     |  1 +
 assets/js/main.0120c557.js                         |  2 --
 assets/js/main.0cecb672.js                         |  2 ++
 ...js.LICENSE.txt => main.0cecb672.js.LICENSE.txt} |  0
 assets/js/runtime~main.04e154b5.js                 |  1 -
 assets/js/runtime~main.84961899.js                 |  1 +
 .../apache-devlake-codebase-walkthrough/index.html | 10 +++++-----
 blog/apache-welcomes-devlake/index.html            | 10 +++++-----
 blog/archive/index.html                            | 10 +++++-----
 blog/atom.xml                                      | 16 +++++-----------
 blog/deadlock-caused-by-using-ants/index.html      | 10 +++++-----
 blog/how-apache-devlake-runs/index.html            | 10 +++++-----
 blog/how-to-contribute-to-issues/index.html        | 10 +++++-----
 blog/index.html                                    | 20 +++++++++++++-------
 .../index.html                                     | 12 ++++++------
 blog/rss.xml                                       | 16 +++++-----------
 .../index.html                                     | 22 ++++++++--------------
 blog/tags/algorithm/index.html                     | 20 +++++++++++++-------
 blog/tags/ants/index.html                          | 10 +++++-----
 blog/tags/apache/index.html                        | 10 +++++-----
 blog/tags/codebase/index.html                      | 10 +++++-----
 blog/tags/database/index.html                      | 10 +++++-----
 blog/tags/devlake/index.html                       | 20 +++++++++++++-------
 blog/tags/graph/index.html                         | 20 +++++++++++++-------
 blog/tags/index.html                               | 10 +++++-----
 blog/tags/postgresql/index.html                    | 10 +++++-----
 blog/tags/refdiff/index.html                       | 20 +++++++++++++-------
 community/Team/index.html                          |  8 ++++----
 community/index.html                               |  8 ++++----
 .../make-contribution/BlogSubmission/index.html    |  8 ++++----
 .../contributor-growth-program/index.html          |  8 ++++----
 .../development-workflow/index.html                |  8 ++++----
 .../fix-or-create-issues/index.html                |  8 ++++----
 community/subscribe/index.html                     |  8 ++++----
 .../AverageRequirementLeadTime/index.html          |  8 ++++----
 docs/Dashboards/CommitCountByAuthor/index.html     |  8 ++++----
 docs/Dashboards/DetailedBugInfo/index.html         |  8 ++++----
 docs/Dashboards/GitHubBasic/index.html             |  8 ++++----
 .../index.html                                     |  8 ++++----
 docs/Dashboards/Jenkins/index.html                 |  8 ++++----
 docs/Dashboards/WeeklyBugRetro/index.html          |  8 ++++----
 docs/DataModels/DataSupport/index.html             |  8 ++++----
 .../DataModels/DevLakeDomainLayerSchema/index.html |  8 ++++----
 docs/EngineeringMetrics/index.html                 |  8 ++++----
 docs/Glossary/index.html                           |  8 ++++----
 docs/Overview/Architecture/index.html              |  8 ++++----
 docs/Overview/Roadmap/index.html                   |  8 ++++----
 docs/Overview/WhatIsDevLake/index.html             |  8 ++++----
 docs/Plugins/dbt/index.html                        |  8 ++++----
 docs/Plugins/feishu/index.html                     |  8 ++++----
 docs/Plugins/gitee/index.html                      |  8 ++++----
 docs/Plugins/gitextractor/index.html               |  8 ++++----
 docs/Plugins/github/index.html                     |  8 ++++----
 docs/Plugins/gitlab/index.html                     |  8 ++++----
 docs/Plugins/jenkins/index.html                    |  8 ++++----
 docs/Plugins/jira/index.html                       |  8 ++++----
 docs/Plugins/refdiff/index.html                    |  8 ++++----
 docs/Plugins/tapd/index.html                       |  8 ++++----
 docs/QuickStart/DeveloperSetup/index.html          |  8 ++++----
 docs/QuickStart/KubernetesSetup/index.html         |  8 ++++----
 docs/QuickStart/LocalSetup/index.html              |  8 ++++----
 docs/QuickStart/TemporalSetup/index.html           |  8 ++++----
 docs/UserManuals/GRAFANA/index.html                |  8 ++++----
 docs/UserManuals/MIGRATIONS/index.html             |  8 ++++----
 docs/UserManuals/NOTIFICATION/index.html           |  8 ++++----
 .../create-pipeline-in-advanced-mode/index.html    |  8 ++++----
 .../github-user-guide-v0.10.0/index.html           |  8 ++++----
 docs/UserManuals/recurring-pipeline/index.html     |  8 ++++----
 index.html                                         |  8 ++++----
 markdown-page/index.html                           |  8 ++++----
 sitemap.xml                                        |  2 +-
 zh/404.html                                        |  8 ++++----
 zh/assets/js/04f1e2d2.c8ab0280.js                  |  1 -
 zh/assets/js/04f1e2d2.d6c719ee.js                  |  1 +
 zh/assets/js/4b72bbf5.4f4f3dc7.js                  |  1 +
 zh/assets/js/814f3328.58e887e2.js                  |  1 +
 zh/assets/js/814f3328.8cfec258.js                  |  1 -
 zh/assets/js/927d70e2.261294b3.js                  |  1 +
 zh/assets/js/927d70e2.d5a5e75d.js                  |  1 -
 zh/assets/js/9c294295.77e0d2a1.js                  |  1 +
 zh/assets/js/9c294295.a7f2f9ed.js                  |  1 -
 zh/assets/js/abc99659.f4a5ab9d.js                  |  1 +
 zh/assets/js/abc99659.fb2aa604.js                  |  1 -
 zh/assets/js/main.373fbedc.js                      |  2 ++
 ...js.LICENSE.txt => main.373fbedc.js.LICENSE.txt} |  0
 zh/assets/js/main.7641d60a.js                      |  2 --
 zh/assets/js/runtime~main.1b237011.js              |  1 +
 zh/assets/js/runtime~main.7463da36.js              |  1 -
 .../index.html"                                    | 10 +++++-----
 .../apache-devlake-codebase-walkthrough/index.html | 10 +++++-----
 zh/blog/apache-welcomes-devlake/index.html         | 10 +++++-----
 zh/blog/archive/index.html                         | 10 +++++-----
 zh/blog/atom.xml                                   | 16 +++++-----------
 zh/blog/deadlock-caused-by-using-ants/index.html   | 10 +++++-----
 zh/blog/how-apache-devlake-runs/index.html         | 10 +++++-----
 zh/blog/index.html                                 | 20 +++++++++++++-------
 .../index.html                                     | 12 ++++++------
 zh/blog/rss.xml                                    | 16 +++++-----------
 .../index.html                                     | 22 ++++++++--------------
 zh/blog/tags/algorithm/index.html                  | 20 +++++++++++++-------
 zh/blog/tags/ants/index.html                       | 10 +++++-----
 zh/blog/tags/apache/index.html                     | 10 +++++-----
 zh/blog/tags/codebase/index.html                   | 10 +++++-----
 zh/blog/tags/database/index.html                   | 10 +++++-----
 zh/blog/tags/devlake/index.html                    | 20 +++++++++++++-------
 zh/blog/tags/graph/index.html                      | 20 +++++++++++++-------
 zh/blog/tags/index.html                            | 10 +++++-----
 zh/blog/tags/postgresql/index.html                 | 10 +++++-----
 zh/blog/tags/refdiff/index.html                    | 20 +++++++++++++-------
 zh/community/Team/index.html                       |  8 ++++----
 zh/community/index.html                            |  8 ++++----
 .../make-contribution/BlogSubmission/index.html    |  8 ++++----
 .../contributor-growth-program/index.html          |  8 ++++----
 .../development-workflow/index.html                |  8 ++++----
 .../fix-or-create-issues/index.html                |  8 ++++----
 zh/community/subscribe/index.html                  |  8 ++++----
 .../AverageRequirementLeadTime/index.html          |  8 ++++----
 zh/docs/Dashboards/CommitCountByAuthor/index.html  |  8 ++++----
 zh/docs/Dashboards/DetailedBugInfo/index.html      |  8 ++++----
 zh/docs/Dashboards/GitHubBasic/index.html          |  8 ++++----
 .../index.html                                     |  8 ++++----
 zh/docs/Dashboards/Jenkins/index.html              |  8 ++++----
 zh/docs/Dashboards/WeeklyBugRetro/index.html       |  8 ++++----
 zh/docs/DataModels/DataSupport/index.html          |  8 ++++----
 .../DataModels/DevLakeDomainLayerSchema/index.html |  8 ++++----
 zh/docs/EngineeringMetrics/index.html              |  8 ++++----
 zh/docs/Glossary/index.html                        |  8 ++++----
 zh/docs/Overview/Architecture/index.html           |  8 ++++----
 zh/docs/Overview/Roadmap/index.html                |  8 ++++----
 zh/docs/Overview/WhatIsDevLake/index.html          |  8 ++++----
 zh/docs/Plugins/dbt/index.html                     |  8 ++++----
 zh/docs/Plugins/feishu/index.html                  |  8 ++++----
 zh/docs/Plugins/gitee/index.html                   |  8 ++++----
 zh/docs/Plugins/gitextractor/index.html            |  8 ++++----
 zh/docs/Plugins/github/index.html                  |  8 ++++----
 zh/docs/Plugins/gitlab/index.html                  |  8 ++++----
 zh/docs/Plugins/jenkins/index.html                 |  8 ++++----
 zh/docs/Plugins/jira/index.html                    |  8 ++++----
 zh/docs/Plugins/refdiff/index.html                 |  8 ++++----
 zh/docs/Plugins/tapd/index.html                    |  8 ++++----
 zh/docs/QuickStart/DeveloperSetup/index.html       |  8 ++++----
 zh/docs/QuickStart/KubernetesSetup/index.html      |  8 ++++----
 zh/docs/QuickStart/LocalSetup/index.html           |  8 ++++----
 zh/docs/QuickStart/TemporalSetup/index.html        |  8 ++++----
 zh/docs/UserManuals/GRAFANA/index.html             |  8 ++++----
 zh/docs/UserManuals/MIGRATIONS/index.html          |  8 ++++----
 zh/docs/UserManuals/NOTIFICATION/index.html        |  8 ++++----
 .../create-pipeline-in-advanced-mode/index.html    |  8 ++++----
 .../github-user-guide-v0.10.0/index.html           |  8 ++++----
 zh/docs/UserManuals/recurring-pipeline/index.html  |  8 ++++----
 zh/index.html                                      |  8 ++++----
 zh/markdown-page/index.html                        |  8 ++++----
 zh/sitemap.xml                                     |  2 +-
 164 files changed, 670 insertions(+), 644 deletions(-)

diff --git a/404.html b/404.html
index 0f1b290..229f56b 100644
--- a/404.html
+++ b/404.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Page Not Found | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/404.html"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" nam [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/7452ddde.c0e73ebf.js b/assets/js/7452ddde.c0e73ebf.js
new file mode 100644
index 0000000..f22e75b
--- /dev/null
+++ b/assets/js/7452ddde.c0e73ebf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2024],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/assets/js/7452ddde.f237960f.js b/assets/js/7452ddde.f237960f.js
deleted file mode 100644
index bf71f11..0000000
--- a/assets/js/7452ddde.f237960f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2024],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.51824e17.js b/assets/js/814f3328.51824e17.js
deleted file mode 100644
index 61e7bdf..0000000
--- a/assets/js/814f3328.51824e17.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"All posts","items":[{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7ed3","permalink":"/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake\u4ee3\u7801\u5e93\u5bfc\u89c8 [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.9ffefc6a.js b/assets/js/814f3328.9ffefc6a.js
new file mode 100644
index 0000000..3f7d134
--- /dev/null
+++ b/assets/js/814f3328.9ffefc6a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"All posts","items":[{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/blog/refdiff-calculate-commits-diff"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7ed3","permalink":"/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake\u4ee3\u7801\u5e93\u5bfc\u89c8","permal [...]
\ No newline at end of file
diff --git a/assets/js/b2f554cd.b1efd7c3.js b/assets/js/b2f554cd.b1efd7c3.js
new file mode 100644
index 0000000..55aac2a
--- /dev/null
+++ b/assets/js/b2f554cd.b1efd7c3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1477],{10:function(n){n.exports=JSON.parse('{"blogPosts":[{"id":"refdiff-calculate-commits-diff","metadata":{"permalink":"/blog/refdiff-calculate-commits-diff","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5/index.md","source":"@site/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4e [...]
\ No newline at end of file
diff --git a/assets/js/b2f554cd.b99906cf.js b/assets/js/b2f554cd.b99906cf.js
deleted file mode 100644
index 8729e16..0000000
--- a/assets/js/b2f554cd.b99906cf.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1477],{10:function(n){n.exports=JSON.parse('{"blogPosts":[{"id":"some-practices-of-supporting-postgresql","metadata":{"permalink":"/blog/some-practices-of-supporting-postgresql","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5/index.md","source":"@site/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8b [...]
\ No newline at end of file
diff --git a/assets/js/cee7cffd.03fdf950.js b/assets/js/cee7cffd.03fdf950.js
deleted file mode 100644
index 76dfefd..0000000
--- a/assets/js/cee7cffd.03fdf950.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[8187],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/assets/js/cee7cffd.49ed568d.js b/assets/js/cee7cffd.49ed568d.js
new file mode 100644
index 0000000..f6a0fda
--- /dev/null
+++ b/assets/js/cee7cffd.49ed568d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[8187],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/assets/js/d65984bc.1ee89b17.js b/assets/js/d65984bc.1ee89b17.js
new file mode 100644
index 0000000..5c300fd
--- /dev/null
+++ b/assets/js/d65984bc.1ee89b17.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9396],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/assets/js/d65984bc.3a7a97d6.js b/assets/js/d65984bc.3a7a97d6.js
deleted file mode 100644
index 6286851..0000000
--- a/assets/js/d65984bc.3a7a97d6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9396],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/assets/js/ea0b4130.8d627b17.js b/assets/js/ea0b4130.8d627b17.js
new file mode 100644
index 0000000..5af0c8f
--- /dev/null
+++ b/assets/js/ea0b4130.8d627b17.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9709],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/assets/js/main.0120c557.js b/assets/js/main.0120c557.js
deleted file mode 100644
index a0da0e3..0000000
--- a/assets/js/main.0120c557.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.0120c557.js.LICENSE.txt */
-(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/assets/js/main.0cecb672.js b/assets/js/main.0cecb672.js
new file mode 100644
index 0000000..bdaac8f
--- /dev/null
+++ b/assets/js/main.0cecb672.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.0cecb672.js.LICENSE.txt */
+(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/assets/js/main.0120c557.js.LICENSE.txt b/assets/js/main.0cecb672.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.0120c557.js.LICENSE.txt
rename to assets/js/main.0cecb672.js.LICENSE.txt
diff --git a/assets/js/runtime~main.04e154b5.js b/assets/js/runtime~main.04e154b5.js
deleted file mode 100644
index baf65c0..0000000
--- a/assets/js/runtime~main.04e154b5.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var e,f,c,a,d,b={},t={};function n(e){var f=t[e];if(void 0!==f)return f.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,n),c.loaded=!0,c.exports}n.m=b,n.c=t,e=[],n.O=function(f,c,a,d){if(!c){var b=1/0;for(u=0;u<e.length;u++){c=e[u][0],a=e[u][1],d=e[u][2];for(var t=!0,r=0;r<c.length;r++)(!1&d||b>=d)&&Object.keys(n.O).every((function(e){return n.O[e](c[r])}))?c.splice(r--,1):(t=!1,d<b&&(b=d));if(t){e.splice(u--,1);var o=a();voi [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.84961899.js b/assets/js/runtime~main.84961899.js
new file mode 100644
index 0000000..0b26c6f
--- /dev/null
+++ b/assets/js/runtime~main.84961899.js
@@ -0,0 +1 @@
+!function(){"use strict";var e,f,c,a,d,b={},t={};function n(e){var f=t[e];if(void 0!==f)return f.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,n),c.loaded=!0,c.exports}n.m=b,n.c=t,e=[],n.O=function(f,c,a,d){if(!c){var b=1/0;for(u=0;u<e.length;u++){c=e[u][0],a=e[u][1],d=e[u][2];for(var t=!0,r=0;r<c.length;r++)(!1&d||b>=d)&&Object.keys(n.O).every((function(e){return n.O[e](c[r])}))?c.splice(r--,1):(t=!1,d<b&&(b=d));if(t){e.splice(u--,1);var o=a();voi [...]
\ No newline at end of file
diff --git a/blog/apache-devlake-codebase-walkthrough/index.html b/blog/apache-devlake-codebase-walkthrough/index.html
index e9d072f..524a934 100644
--- a/blog/apache-devlake-codebase-walkthrough/index.html
+++ b/blog/apache-devlake-codebase-walkthrough/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake代码库导览 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/apache-devlake-codebase-walkthrough"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" conte [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/apache-welcomes-devlake/index.html b/blog/apache-welcomes-devlake/index.html
index f79f27a..accaf02 100644
--- a/blog/apache-welcomes-devlake/index.html
+++ b/blog/apache-welcomes-devlake/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache Incubator Welcomes DevLake, A Dev-Data Platform Serving Developers | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/apache-welcomes-devlake"><meta data-rh="true" name="docusaurus_locale" content="en"><meta  [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 <img loading="lazy" alt="architecture" src="/assets/images/0.11-architecture-diagram-f422e47efad0b84f72eb3bc51c7d1f1b.jpg" width="2143" height="1182" class="img_E7b_"></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="why-join-apache-incubator">Why join Apache Incubator?<a class="hash-link" href="#why-join-apache-incubator" title="Direct link to heading">​</a></h3><p>First and foremost, we firmly believe in Apache&#x27;s principle of &quot;Community over Code&quot; and <a href="https [...]
 Join us on Slack and at our weekly open source community meetups🥳</p><p><strong>Apache DevLake (Incubating) Links:</strong></p><ul><li>GitHub:  <a href="https://github.com/apache/incubator-devlake" target="_blank" rel="noopener noreferrer">https://github.com/apache/incubator-devlake</a></li><li>Official Website: <a href="https://devlake.apache.org/" target="_blank" rel="noopener noreferrer">https://devlake.apache.org/</a></li><li>Slack:   <a href="https://join.slack.com/t/devlake-io/shar [...]
         <div style="margin-top: 20px">
@@ -20,7 +20,7 @@ Join us on Slack and at our weekly open source community meetups🥳</p><p><stro
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 2be8390..698bb3d 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Archive | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/archive"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name=" [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/atom.xml b/blog/atom.xml
index 285b252..eeab0b7 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -9,8 +9,8 @@
     <icon>https://devlake.apache.org/img/logo.svg</icon>
     <entry>
         <title type="html"><![CDATA[refdiff插件的计算提交版本差异算法]]></title>
-        <id>some-practices-of-supporting-postgresql</id>
-        <link href="https://devlake.apache.org/blog/some-practices-of-supporting-postgresql"/>
+        <id>refdiff-calculate-commits-diff</id>
+        <link href="https://devlake.apache.org/blog/refdiff-calculate-commits-diff"/>
         <updated>2022-06-22T00:00:00.000Z</updated>
         <summary type="html"><![CDATA[什么是 计算提交版本差异(CalculateCommitsDiff)?]]></summary>
         <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="Direct link to heading">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。< [...]
@@ -37,15 +37,9 @@
         <link href="https://devlake.apache.org/blog/some-practices-of-supporting-postgresql"/>
         <updated>2022-06-17T00:00:00.000Z</updated>
         <summary type="html"><![CDATA[本文作者:ZhangLiang]]></summary>
-        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="Direct link to heading">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。< [...]
-当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
-问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
-集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
-从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
-从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
-此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
-此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
-从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
+        <content type="html"><![CDATA[<p>本文作者:ZhangLiang<br>
+<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
+我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
         <author>
             <name>ZhangLiang</name>
             <uri>https://github.com/mindlesscloud</uri>
diff --git a/blog/deadlock-caused-by-using-ants/index.html b/blog/deadlock-caused-by-using-ants/index.html
index ad15b03..b441698 100644
--- a/blog/deadlock-caused-by-using-ants/index.html
+++ b/blog/deadlock-caused-by-using-ants/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">使用ants引发的死锁 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/deadlock-caused-by-using-ants"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default">< [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/how-apache-devlake-runs/index.html b/blog/how-apache-devlake-runs/index.html
index 062aaa4..d25bd50 100644
--- a/blog/how-apache-devlake-runs/index.html
+++ b/blog/how-apache-devlake-runs/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake是怎么跑起来的 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/how-apache-devlake-runs"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="defaul [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/how-to-contribute-to-issues/index.html b/blog/how-to-contribute-to-issues/index.html
index dceb5db..ef19721 100644
--- a/blog/how-to-contribute-to-issues/index.html
+++ b/blog/how-to-contribute-to-issues/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">如何贡献issues | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/how-to-contribute-to-issues"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><met [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 这很有趣,它们几乎立刻就被拿走了......
 但对于那些有兴趣但没有得到的人来说可能就不那么有趣了。</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="所以">所以...<a class="hash-link" href="#所以" title="Direct link to heading">​</a></h3><p>我们决定,不再有竞争,你可以从我们的github issue pages中挑选你喜欢的issue。如果没有了,甚至可以创建你自己的。
 我们毕竟是社区!</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="怎么做呢这很简单">怎么做呢?这很简单!<a class="hash-link" href="#怎么做呢这很简单" title="Direct link to heading">​</a></h3><p>进入我们的<a href="https://github.com/apache/incubator-devlake/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" target="_blank" rel="noopener noreferrer">问题页面</a>,然后点击这里。我们所有的Good First Issue都列在这里!
@@ -30,7 +30,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 295e003..d70c7a1 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -6,14 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Blog | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
 这很有趣,它们几乎立刻就被拿走了......
@@ -34,7 +40,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/some-practices-of-supporting-postgresql/index.html b/blog/refdiff-calculate-commits-diff/index.html
similarity index 57%
copy from blog/some-practices-of-supporting-postgresql/index.html
copy to blog/refdiff-calculate-commits-diff/index.html
index da4a8fb..ee962df 100644
--- a/blog/some-practices-of-supporting-postgresql/index.html
+++ b/blog/refdiff-calculate-commits-diff/index.html
@@ -5,13 +5,13 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag"  [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/refdiff-calculate-commits-diff"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content=" [...]
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
@@ -26,7 +26,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/rss.xml b/blog/rss.xml
index 0959b7f..1805257 100644
--- a/blog/rss.xml
+++ b/blog/rss.xml
@@ -10,8 +10,8 @@
         <language>en</language>
         <item>
             <title><![CDATA[refdiff插件的计算提交版本差异算法]]></title>
-            <link>https://devlake.apache.org/blog/some-practices-of-supporting-postgresql</link>
-            <guid>some-practices-of-supporting-postgresql</guid>
+            <link>https://devlake.apache.org/blog/refdiff-calculate-commits-diff</link>
+            <guid>refdiff-calculate-commits-diff</guid>
             <pubDate>Wed, 22 Jun 2022 00:00:00 GMT</pubDate>
             <description><![CDATA[什么是 计算提交版本差异(CalculateCommitsDiff)?]]></description>
             <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="Direct link to heading">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。< [...]
@@ -34,15 +34,9 @@
             <guid>some-practices-of-supporting-postgresql</guid>
             <pubDate>Fri, 17 Jun 2022 00:00:00 GMT</pubDate>
             <description><![CDATA[本文作者:ZhangLiang]]></description>
-            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="Direct link to heading">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。< [...]
-当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
-问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
-集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
-从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
-从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
-此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
-此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
-从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
+            <content:encoded><![CDATA[<p>本文作者:ZhangLiang<br>
+<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
+我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
             <category>devlake</category>
             <category>database</category>
             <category>postgresql</category>
diff --git a/blog/some-practices-of-supporting-postgresql/index.html b/blog/some-practices-of-supporting-postgresql/index.html
index da4a8fb..ab04ea0 100644
--- a/blog/some-practices-of-supporting-postgresql/index.html
+++ b/blog/some-practices-of-supporting-postgresql/index.html
@@ -5,28 +5,22 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag"  [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake 兼容 PostgreSQL 踩坑小结 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="doc [...]
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
-当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
-问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
-集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
-从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
-从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
-此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
-此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
-从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
+我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/algorithm/index.html b/blog/tags/algorithm/index.html
index 616fee9..8414f8c 100644
--- a/blog/tags/algorithm/index.html
+++ b/blog/tags/algorithm/index.html
@@ -6,21 +6,27 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;algorithm&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/algorithm"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/ants/index.html b/blog/tags/ants/index.html
index 1152ca2..4fc94fd 100644
--- a/blog/tags/ants/index.html
+++ b/blog/tags/ants/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;ants&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/ants"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content=" [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/apache/index.html b/blog/tags/apache/index.html
index c2686ce..c0d6dd6 100644
--- a/blog/tags/apache/index.html
+++ b/blog/tags/apache/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">3 posts tagged with &quot;apache&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/apache"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" conten [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 这很有趣,它们几乎立刻就被拿走了......
 但对于那些有兴趣但没有得到的人来说可能就不那么有趣了。</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="所以">所以...<a class="hash-link" href="#所以" title="Direct link to heading">​</a></h3><p>我们决定,不再有竞争,你可以从我们的github issue pages中挑选你喜欢的issue。如果没有了,甚至可以创建你自己的。
 我们毕竟是社区!</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="怎么做呢这很简单">怎么做呢?这很简单!<a class="hash-link" href="#怎么做呢这很简单" title="Direct link to heading">​</a></h3><p>进入我们的<a href="https://github.com/apache/incubator-devlake/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" target="_blank" rel="noopener noreferrer">问题页面</a>,然后点击这里。我们所有的Good First Issue都列在这里!
@@ -30,7 +30,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/codebase/index.html b/blog/tags/codebase/index.html
index c6e6650..564a2c0 100644
--- a/blog/tags/codebase/index.html
+++ b/blog/tags/codebase/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;codebase&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/codebase"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" c [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/database/index.html b/blog/tags/database/index.html
index 383767d..a4b1af9 100644
--- a/blog/tags/database/index.html
+++ b/blog/tags/database/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;database&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/database"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" c [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
         <div style="margin-top: 20px">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/devlake/index.html b/blog/tags/devlake/index.html
index 8153c35..26ab2d5 100644
--- a/blog/tags/devlake/index.html
+++ b/blog/tags/devlake/index.html
@@ -6,14 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">7 posts tagged with &quot;devlake&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/devlake"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" cont [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
 这很有趣,它们几乎立刻就被拿走了......
@@ -34,7 +40,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/graph/index.html b/blog/tags/graph/index.html
index e64a555..a5e69e7 100644
--- a/blog/tags/graph/index.html
+++ b/blog/tags/graph/index.html
@@ -6,21 +6,27 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;graph&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/graph"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 3a8f43f..e01e86e 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Tags | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og: [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/postgresql/index.html b/blog/tags/postgresql/index.html
index 90ec928..ed06931 100644
--- a/blog/tags/postgresql/index.html
+++ b/blog/tags/postgresql/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;postgresql&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:languag [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
         <div style="margin-top: 20px">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/refdiff/index.html b/blog/tags/refdiff/index.html
index 493ec31..0ebfc94 100644
--- a/blog/tags/refdiff/index.html
+++ b/blog/tags/refdiff/index.html
@@ -6,21 +6,27 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;refdiff&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/refdiff"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" con [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/Team/index.html b/community/Team/index.html
index 8f51a66..dd161df 100644
--- a/community/Team/index.html
+++ b/community/Team/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Team | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/Team/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="d [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -19,7 +19,7 @@ get merged into the codebase. We deeply appreciate your contribution!</p><ul><li
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index 0b4a010..3e23fdb 100644
--- a/community/index.html
+++ b/community/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">How to Make Contributions? | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data- [...]
 "><meta data-rh="true" property="og:description" content="The steps and specs to contribute to DevLake.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/community/"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/community/" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/community/" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/community/" hreflang="x-default"><link rel="stylesheet" href="/assets/css/styles.680c5a [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/make-contribution/BlogSubmission/index.html b/community/make-contribution/BlogSubmission/index.html
index 26462d8..fafca62 100644
--- a/community/make-contribution/BlogSubmission/index.html
+++ b/community/make-contribution/BlogSubmission/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Blog Submission | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/make-contribution/BlogSubmission"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" con [...]
 "><meta data-rh="true" property="og:description" content="Instructions for how to submit a blog post to DevLake Blog
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/community/make-contribution/BlogSubmission"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/community/make-contribution/BlogSubmission" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/community/make-contribution/BlogSubmission" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.ap [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/make-contribution/contributor-growth-program/index.html b/community/make-contribution/contributor-growth-program/index.html
index 6fc73e2..f200246 100644
--- a/community/make-contribution/contributor-growth-program/index.html
+++ b/community/make-contribution/contributor-growth-program/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Becoming a Committer | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/make-contribution/contributor-growth-program"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsea [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/make-contribution/development-workflow/index.html b/community/make-contribution/development-workflow/index.html
index 80f4ece..c5bc2d3 100644
--- a/community/make-contribution/development-workflow/index.html
+++ b/community/make-contribution/development-workflow/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Development Workflow | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/make-contribution/development-workflow"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:la [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/make-contribution/fix-or-create-issues/index.html b/community/make-contribution/fix-or-create-issues/index.html
index 1f193bf..5f7298d 100644
--- a/community/make-contribution/fix-or-create-issues/index.html
+++ b/community/make-contribution/fix-or-create-issues/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Contributing to Issues | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/make-contribution/fix-or-create-issues"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch: [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -33,7 +33,7 @@ for your skills, to learn how to cooperate with others. And for those who made s
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/subscribe/index.html b/community/subscribe/index.html
index d83c835..e4b8411 100644
--- a/community/subscribe/index.html
+++ b/community/subscribe/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Mailing List | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/subscribe"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="t [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Dashboards/AverageRequirementLeadTime/index.html b/docs/Dashboards/AverageRequirementLeadTime/index.html
index 2e41127..4caeeab 100644
--- a/docs/Dashboards/AverageRequirementLeadTime/index.html
+++ b/docs/Dashboards/AverageRequirementLeadTime/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Average Requirement Lead Time by Assignee | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/AverageRequirementLeadTime"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" nam [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/AverageRequirementLeadTime"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/AverageRequirementLeadTime" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/AverageRequirementLeadTime" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.ap [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Dashboards/CommitCountByAuthor/index.html b/docs/Dashboards/CommitCountByAuthor/index.html
index 3d8b06a..76ce4fb 100644
--- a/docs/Dashboards/CommitCountByAuthor/index.html
+++ b/docs/Dashboards/CommitCountByAuthor/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Commit Count by Author | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/CommitCountByAuthor"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" con [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/CommitCountByAuthor"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/CommitCountByAuthor" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/CommitCountByAuthor" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboa [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Dashboards/DetailedBugInfo/index.html b/docs/Dashboards/DetailedBugInfo/index.html
index ae4a8a7..570b4ae 100644
--- a/docs/Dashboards/DetailedBugInfo/index.html
+++ b/docs/Dashboards/DetailedBugInfo/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Detailed Bug Info | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/DetailedBugInfo"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en" [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/DetailedBugInfo"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/DetailedBugInfo" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/DetailedBugInfo" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/Detailed [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Dashboards/GitHubBasic/index.html b/docs/Dashboards/GitHubBasic/index.html
index 0c57e83..923a4fc 100644
--- a/docs/Dashboards/GitHubBasic/index.html
+++ b/docs/Dashboards/GitHubBasic/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub Basic Metrics | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/GitHubBasic"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"> [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/GitHubBasic"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/GitHubBasic" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/GitHubBasic" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/GitHubBasic" hreflan [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html b/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
index dccd630..39e60e1 100644
--- a/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
+++ b/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub Release Quality and Contribution Analysis | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis"><meta data-rh="true" name="docusaurus_locale" content="en"> [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis" hreflang="zh"><link data [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Dashboards/Jenkins/index.html b/docs/Dashboards/Jenkins/index.html
index c8e2032..bd8bff6 100644
--- a/docs/Dashboards/Jenkins/index.html
+++ b/docs/Dashboards/Jenkins/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jenkins | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/Jenkins"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tr [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/Jenkins"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/Jenkins" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/Jenkins" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/Jenkins" hreflang="x-default"><l [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Dashboards/WeeklyBugRetro/index.html b/docs/Dashboards/WeeklyBugRetro/index.html
index 9dc242a..530d1ae 100644
--- a/docs/Dashboards/WeeklyBugRetro/index.html
+++ b/docs/Dashboards/WeeklyBugRetro/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Weekly Bug Retro | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/WeeklyBugRetro"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en">< [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/WeeklyBugRetro"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/WeeklyBugRetro" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/WeeklyBugRetro" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/WeeklyBugRe [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/DataModels/DataSupport/index.html b/docs/DataModels/DataSupport/index.html
index fe95d33..b245e5c 100644
--- a/docs/DataModels/DataSupport/index.html
+++ b/docs/DataModels/DataSupport/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Data Support | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/DataModels/DataSupport"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta da [...]
 "><meta data-rh="true" property="og:description" content="Data sources that DevLake supports
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/DataModels/DataSupport"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/DataModels/DataSupport" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/DataModels/DataSupport" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/DataModels/DataSupport" hreflan [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/DataModels/DevLakeDomainLayerSchema/index.html b/docs/DataModels/DevLakeDomainLayerSchema/index.html
index 899ef4d..1234af4 100644
--- a/docs/DataModels/DevLakeDomainLayerSchema/index.html
+++ b/docs/DataModels/DevLakeDomainLayerSchema/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Domain Layer Schema | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" c [...]
 "><meta data-rh="true" property="og:description" content="DevLake Domain Layer Schema
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/DataModels/DevLakeDomainLayerSchema" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.o [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/EngineeringMetrics/index.html b/docs/EngineeringMetrics/index.html
index 7a7f1ad..4133563 100644
--- a/docs/EngineeringMetrics/index.html
+++ b/docs/EngineeringMetrics/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Engineering Metrics | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/EngineeringMetrics"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta [...]
 "><meta data-rh="true" property="og:description" content="The definition, values and data required for the 20+ engineering metrics supported by DevLake.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/EngineeringMetrics"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/EngineeringMetrics" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/EngineeringMetrics" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/EngineeringMetrics" hreflang="x-default"><l [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Glossary/index.html b/docs/Glossary/index.html
index 16e929a..5120940 100644
--- a/docs/Glossary/index.html
+++ b/docs/Glossary/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Glossary | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Glossary"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name= [...]
 "><meta data-rh="true" property="og:description" content="DevLake Glossary
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Glossary"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Glossary" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Glossary" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Glossary" hreflang="x-default"><link rel="stylesheet" href="/assets/css/s [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -22,7 +22,7 @@ Notice: <strong>You can manually orchestrate the pipeline in Configuration UI Ad
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Overview/Architecture/index.html b/docs/Overview/Architecture/index.html
index 6910e07..76e7596 100644
--- a/docs/Overview/Architecture/index.html
+++ b/docs/Overview/Architecture/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Architecture | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Overview/Architecture"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta dat [...]
 "><meta data-rh="true" property="og:description" content="Understand the architecture of Apache DevLake.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Overview/Architecture"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Architecture" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Overview/Architecture" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Architecture" hreflang="x [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Overview/Roadmap/index.html b/docs/Overview/Roadmap/index.html
index 0d00923..63e712d 100644
--- a/docs/Overview/Roadmap/index.html
+++ b/docs/Overview/Roadmap/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Roadmap | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Overview/Roadmap"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true [...]
 "><meta data-rh="true" property="og:description" content="The goals and roadmap for DevLake in 2022.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Overview/Roadmap"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Roadmap" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Overview/Roadmap" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Roadmap" hreflang="x-default"><link rel= [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ Also, if you plan to work (or are already working) on a new or existing feature,
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Overview/WhatIsDevLake/index.html b/docs/Overview/WhatIsDevLake/index.html
index 05afe85..25af7df 100644
--- a/docs/Overview/WhatIsDevLake/index.html
+++ b/docs/Overview/WhatIsDevLake/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Introduction | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Overview/WhatIsDevLake"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta da [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/dbt/index.html b/docs/Plugins/dbt/index.html
index 77a8367..deb6a76 100644
--- a/docs/Plugins/dbt/index.html
+++ b/docs/Plugins/dbt/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">DBT | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/dbt"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="d [...]
 "><meta data-rh="true" property="og:description" content="DBT Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/dbt"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/dbt" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/dbt" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/dbt" hreflang="x-default"><link rel="stylesheet" href="/ [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,7 +25,7 @@ To execute this SQL query in your model, you need set a value for <code>event_ty
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/feishu/index.html b/docs/Plugins/feishu/index.html
index c8e80e9..f1cd84a 100644
--- a/docs/Plugins/feishu/index.html
+++ b/docs/Plugins/feishu/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Feishu | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/feishu"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" n [...]
 "><meta data-rh="true" property="og:description" content="Feishu Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/feishu"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/feishu" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/feishu" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/feishu" hreflang="x-default"><link rel="stylesh [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ then set these two parameters via Dev Lake&#x27;s <code>.env</code>.</p><h3 clas
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/gitee/index.html b/docs/Plugins/gitee/index.html
index 343593c..fcf31fa 100644
--- a/docs/Plugins/gitee/index.html
+++ b/docs/Plugins/gitee/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Gitee(WIP) | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/gitee"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true [...]
 "><meta data-rh="true" property="og:description" content="Gitee Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/gitee"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitee" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitee" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitee" hreflang="x-default"><link rel="stylesheet" [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -22,7 +22,7 @@ You can also trigger data collection by making a POST request to <code>/pipeline
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/gitextractor/index.html b/docs/Plugins/gitextractor/index.html
index 74f2142..68320c5 100644
--- a/docs/Plugins/gitextractor/index.html
+++ b/docs/Plugins/gitextractor/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitExtractor | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/gitextractor"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data [...]
 "><meta data-rh="true" property="og:description" content="GitExtractor Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/gitextractor"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitextractor" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitextractor" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitextractor" hreflang="x-def [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -22,7 +22,7 @@ machine. <a href="/docs/Plugins/refdiff#development">Click here</a> for a brief
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/github/index.html b/docs/Plugins/github/index.html
index c59224d..238b2ac 100644
--- a/docs/Plugins/github/index.html
+++ b/docs/Plugins/github/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/github"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" n [...]
 "><meta data-rh="true" property="og:description" content="GitHub Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/github"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/github" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/github" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/github" hreflang="x-default"><link rel="stylesh [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ Enter a valid proxy server address on your Network, e.g. <code>http://your-proxy
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/gitlab/index.html b/docs/Plugins/gitlab/index.html
index 0f5051d..a96881e 100644
--- a/docs/Plugins/gitlab/index.html
+++ b/docs/Plugins/gitlab/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitLab | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/gitlab"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" n [...]
 "><meta data-rh="true" property="og:description" content="GitLab Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/gitlab"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitlab" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitlab" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitlab" hreflang="x-default"><link rel="stylesh [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ For an overview of the <strong>GitLab REST API</strong>, please see official <a
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/jenkins/index.html b/docs/Plugins/jenkins/index.html
index 997e2bc..1f279d7 100644
--- a/docs/Plugins/jenkins/index.html
+++ b/docs/Plugins/jenkins/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jenkins | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/jenkins"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
 "><meta data-rh="true" property="og:description" content="Jenkins Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/jenkins"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jenkins" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/jenkins" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jenkins" hreflang="x-default"><link rel="sty [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/jira/index.html b/docs/Plugins/jira/index.html
index 499b372..2c9b6fd 100644
--- a/docs/Plugins/jira/index.html
+++ b/docs/Plugins/jira/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jira | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/jira"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name= [...]
 "><meta data-rh="true" property="og:description" content="Jira Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/jira"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jira" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/jira" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jira" hreflang="x-default"><link rel="stylesheet" hre [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,7 +25,7 @@ would be forwarded to <code>https://your_jira_host/rest/agile/1.0/board/8/sprint
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/refdiff/index.html b/docs/Plugins/refdiff/index.html
index c153ed0..bb43178 100644
--- a/docs/Plugins/refdiff/index.html
+++ b/docs/Plugins/refdiff/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">RefDiff | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/refdiff"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
 "><meta data-rh="true" property="og:description" content="RefDiff Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/refdiff"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/refdiff" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/refdiff" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/refdiff" hreflang="x-default"><link rel="sty [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -22,7 +22,7 @@ machine.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="ubuntu">Ubuntu<a
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Plugins/tapd/index.html b/docs/Plugins/tapd/index.html
index 8850b5f..15e71f3 100644
--- a/docs/Plugins/tapd/index.html
+++ b/docs/Plugins/tapd/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">TAPD | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/tapd"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name= [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/QuickStart/DeveloperSetup/index.html b/docs/QuickStart/DeveloperSetup/index.html
index fa8235b..33b9eb2 100644
--- a/docs/QuickStart/DeveloperSetup/index.html
+++ b/docs/QuickStart/DeveloperSetup/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Developer Setup | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/QuickStart/DeveloperSetup"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><m [...]
 "><meta data-rh="true" property="og:description" content="The steps to install DevLake in develper mode.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/QuickStart/DeveloperSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/DeveloperSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/DeveloperSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/DeveloperSe [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ After the pipeline starts, you will be automatically redirected to the <strong>P
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/QuickStart/KubernetesSetup/index.html b/docs/QuickStart/KubernetesSetup/index.html
index e4d9e6a..c902f69 100644
--- a/docs/QuickStart/KubernetesSetup/index.html
+++ b/docs/QuickStart/KubernetesSetup/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Deploy to Kubernates | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/QuickStart/KubernetesSetup"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content=" [...]
 "><meta data-rh="true" property="og:description" content="The steps to install Apache DevLake in Kubernetes.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/QuickStart/KubernetesSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/KubernetesSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/KubernetesSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/Kubernet [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/QuickStart/LocalSetup/index.html b/docs/QuickStart/LocalSetup/index.html
index 882c03b..f9a4e4b 100644
--- a/docs/QuickStart/LocalSetup/index.html
+++ b/docs/QuickStart/LocalSetup/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Deploy Locally | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/QuickStart/LocalSetup"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta d [...]
 "><meta data-rh="true" property="og:description" content="The steps to install DevLake locally.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/QuickStart/LocalSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/LocalSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/LocalSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/LocalSetup" hreflang="x [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/QuickStart/TemporalSetup/index.html b/docs/QuickStart/TemporalSetup/index.html
index 1eb4f75..11ab699 100644
--- a/docs/QuickStart/TemporalSetup/index.html
+++ b/docs/QuickStart/TemporalSetup/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Temporal Setup | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/QuickStart/TemporalSetup"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><met [...]
 "><meta data-rh="true" property="og:description" content="The steps to install DevLake in develper mode.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/QuickStart/TemporalSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/TemporalSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/TemporalSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/TemporalSetup" [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/UserManuals/GRAFANA/index.html b/docs/UserManuals/GRAFANA/index.html
index cdc48a5..1a034bb 100644
--- a/docs/UserManuals/GRAFANA/index.html
+++ b/docs/UserManuals/GRAFANA/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">How to use Grafana | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/GRAFANA"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta [...]
 "><meta data-rh="true" property="og:description" content="How to use Grafana
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/GRAFANA"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/GRAFANA" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/GRAFANA" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/GRAFANA" hreflang="x-default [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/UserManuals/MIGRATIONS/index.html b/docs/UserManuals/MIGRATIONS/index.html
index 12e129f..788f754 100644
--- a/docs/UserManuals/MIGRATIONS/index.html
+++ b/docs/UserManuals/MIGRATIONS/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">DB Migration | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/MIGRATIONS"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta da [...]
 "><meta data-rh="true" property="og:description" content="DB Migration
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/MIGRATIONS" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS" hreflan [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,7 +25,7 @@ From which, DevLake could figure out the current state of database schemas.</p><
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/UserManuals/NOTIFICATION/index.html b/docs/UserManuals/NOTIFICATION/index.html
index b18fd56..79eec51 100644
--- a/docs/UserManuals/NOTIFICATION/index.html
+++ b/docs/UserManuals/NOTIFICATION/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Notifications | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/NOTIFICATION"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta [...]
 "><meta data-rh="true" property="og:description" content="Notifications
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/NOTIFICATION"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/NOTIFICATION" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/NOTIFICATION" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/NOTIFICATION" [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/UserManuals/create-pipeline-in-advanced-mode/index.html b/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
index d02a4be..55f2c70 100644
--- a/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
+++ b/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Create Pipeline in Advanced Mode | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/create-pipeline-in-advanced-mode"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name= [...]
 "><meta data-rh="true" property="og:description" content="Create Pipeline in Advanced Mode
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/create-pipeline-in-advanced-mode"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/create-pipeline-in-advanced-mode" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/create-pipeline-in-advanced-mode" hreflang="zh"><link data-rh="true" rel="alternate" hre [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ Running multiple tasks against the same data source is unlikely to speed up the
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/UserManuals/github-user-guide-v0.10.0/index.html b/docs/UserManuals/github-user-guide-v0.10.0/index.html
index 805b6c5..e12bc8f 100644
--- a/docs/UserManuals/github-user-guide-v0.10.0/index.html
+++ b/docs/UserManuals/github-user-guide-v0.10.0/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub User Guide v0.10.0 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/github-user-guide-v0.10.0"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:lan [...]
 "><meta data-rh="true" property="og:description" content="GitHub User Guide v0.10.0
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/github-user-guide-v0.10.0"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/github-user-guide-v0.10.0" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/github-user-guide-v0.10.0" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.ap [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -26,7 +26,7 @@ You can provide multiple tokens to speed up the data collection process, simply
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/UserManuals/recurring-pipeline/index.html b/docs/UserManuals/recurring-pipeline/index.html
index e85f69c..cd09994 100644
--- a/docs/UserManuals/recurring-pipeline/index.html
+++ b/docs/UserManuals/recurring-pipeline/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Create Recurring Pipelines | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/recurring-pipeline"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" [...]
 "><meta data-rh="true" property="og:description" content="Create Recurring Pipelines
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/recurring-pipeline"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/recurring-pipeline" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/recurring-pipeline" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserMan [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index d651ea7..b4fa5ee 100644
--- a/index.html
+++ b/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake (Incubating) | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/markdown-page/index.html b/markdown-page/index.html
index 216936d..13d307c 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Markdown page example | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/markdown-page"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-r [...]
-<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
-<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
+<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.04e154b5.js"></script>
-<script src="/assets/js/main.0120c557.js"></script>
+<script src="/assets/js/runtime~main.84961899.js"></script>
+<script src="/assets/js/main.0cecb672.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index 8282fbe..c36bdf7 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://devlake.apache.org/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://devlake.apache.org/blog/apache-devlake-co [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://devlake.apache.org/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://devlake.apache.org/blog/apache-devlake-co [...]
\ No newline at end of file
diff --git a/zh/404.html b/zh/404.html
index a250839..bedf453 100644
--- a/zh/404.html
+++ b/zh/404.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">找不到页面 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/404.html"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name=" [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/assets/js/04f1e2d2.c8ab0280.js b/zh/assets/js/04f1e2d2.c8ab0280.js
deleted file mode 100644
index ac8123e..0000000
--- a/zh/assets/js/04f1e2d2.c8ab0280.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9576],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/04f1e2d2.d6c719ee.js b/zh/assets/js/04f1e2d2.d6c719ee.js
new file mode 100644
index 0000000..ef6a934
--- /dev/null
+++ b/zh/assets/js/04f1e2d2.d6c719ee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9576],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/4b72bbf5.4f4f3dc7.js b/zh/assets/js/4b72bbf5.4f4f3dc7.js
new file mode 100644
index 0000000..7079823
--- /dev/null
+++ b/zh/assets/js/4b72bbf5.4f4f3dc7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[8726],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/814f3328.58e887e2.js b/zh/assets/js/814f3328.58e887e2.js
new file mode 100644
index 0000000..6b6f686
--- /dev/null
+++ b/zh/assets/js/814f3328.58e887e2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/zh/blog/refdiff-calculate-commits-diff"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7ed3","permalink":"/zh/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake\u4ee3\u7801\u5e93\u5bfc\u89c8 [...]
\ No newline at end of file
diff --git a/zh/assets/js/814f3328.8cfec258.js b/zh/assets/js/814f3328.8cfec258.js
deleted file mode 100644
index 2912051..0000000
--- a/zh/assets/js/814f3328.8cfec258.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/zh/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7ed3","permalink":"/zh/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake\u4ee3\u7801\u5e93\u5 [...]
\ No newline at end of file
diff --git a/zh/assets/js/927d70e2.261294b3.js b/zh/assets/js/927d70e2.261294b3.js
new file mode 100644
index 0000000..706e9a6
--- /dev/null
+++ b/zh/assets/js/927d70e2.261294b3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1045],{2190:function(n){n.exports=JSON.parse('{"blogPosts":[{"id":"refdiff-calculate-commits-diff","metadata":{"permalink":"/zh/blog/refdiff-calculate-commits-diff","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5/index.md","source":"@site/i18n/zh/docusaurus-plugin-content-blog/2022-06-22-refdiff\ [...]
\ No newline at end of file
diff --git a/zh/assets/js/927d70e2.d5a5e75d.js b/zh/assets/js/927d70e2.d5a5e75d.js
deleted file mode 100644
index 63ab93c..0000000
--- a/zh/assets/js/927d70e2.d5a5e75d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1045],{2190:function(n){n.exports=JSON.parse('{"blogPosts":[{"id":"some-practices-of-supporting-postgresql","metadata":{"permalink":"/zh/blog/some-practices-of-supporting-postgresql","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5/index.md","source":"@site/i18n/zh/docusaurus-plugin-content-blog/2 [...]
\ No newline at end of file
diff --git a/zh/assets/js/9c294295.77e0d2a1.js b/zh/assets/js/9c294295.77e0d2a1.js
new file mode 100644
index 0000000..3bde313
--- /dev/null
+++ b/zh/assets/js/9c294295.77e0d2a1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3781],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/9c294295.a7f2f9ed.js b/zh/assets/js/9c294295.a7f2f9ed.js
deleted file mode 100644
index a55061c..0000000
--- a/zh/assets/js/9c294295.a7f2f9ed.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3781],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/abc99659.f4a5ab9d.js b/zh/assets/js/abc99659.f4a5ab9d.js
new file mode 100644
index 0000000..f9396eb
--- /dev/null
+++ b/zh/assets/js/abc99659.f4a5ab9d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6160],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/abc99659.fb2aa604.js b/zh/assets/js/abc99659.fb2aa604.js
deleted file mode 100644
index 4b1c366..0000000
--- a/zh/assets/js/abc99659.fb2aa604.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6160],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/main.373fbedc.js b/zh/assets/js/main.373fbedc.js
new file mode 100644
index 0000000..e1a80b3
--- /dev/null
+++ b/zh/assets/js/main.373fbedc.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.373fbedc.js.LICENSE.txt */
+(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/zh/assets/js/main.7641d60a.js.LICENSE.txt b/zh/assets/js/main.373fbedc.js.LICENSE.txt
similarity index 100%
rename from zh/assets/js/main.7641d60a.js.LICENSE.txt
rename to zh/assets/js/main.373fbedc.js.LICENSE.txt
diff --git a/zh/assets/js/main.7641d60a.js b/zh/assets/js/main.7641d60a.js
deleted file mode 100644
index 6d5253a..0000000
--- a/zh/assets/js/main.7641d60a.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.7641d60a.js.LICENSE.txt */
-(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/zh/assets/js/runtime~main.1b237011.js b/zh/assets/js/runtime~main.1b237011.js
new file mode 100644
index 0000000..0d99713
--- /dev/null
+++ b/zh/assets/js/runtime~main.1b237011.js
@@ -0,0 +1 @@
+!function(){"use strict";var e,a,c,f,d,t={},b={};function n(e){var a=b[e];if(void 0!==a)return a.exports;var c=b[e]={id:e,loaded:!1,exports:{}};return t[e].call(c.exports,c,c.exports,n),c.loaded=!0,c.exports}n.m=t,n.c=b,e=[],n.O=function(a,c,f,d){if(!c){var t=1/0;for(u=0;u<e.length;u++){c=e[u][0],f=e[u][1],d=e[u][2];for(var b=!0,r=0;r<c.length;r++)(!1&d||t>=d)&&Object.keys(n.O).every((function(e){return n.O[e](c[r])}))?c.splice(r--,1):(b=!1,d<t&&(t=d));if(b){e.splice(u--,1);var o=f();voi [...]
\ No newline at end of file
diff --git a/zh/assets/js/runtime~main.7463da36.js b/zh/assets/js/runtime~main.7463da36.js
deleted file mode 100644
index afb7e84..0000000
--- a/zh/assets/js/runtime~main.7463da36.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var e,a,c,f,d,t={},b={};function n(e){var a=b[e];if(void 0!==a)return a.exports;var c=b[e]={id:e,loaded:!1,exports:{}};return t[e].call(c.exports,c,c.exports,n),c.loaded=!0,c.exports}n.m=t,n.c=b,e=[],n.O=function(a,c,f,d){if(!c){var t=1/0;for(u=0;u<e.length;u++){c=e[u][0],f=e[u][1],d=e[u][2];for(var b=!0,r=0;r<c.length;r++)(!1&d||t>=d)&&Object.keys(n.O).every((function(e){return n.O[e](c[r])}))?c.splice(r--,1):(b=!1,d<t&&(t=d));if(b){e.splice(u--,1);var o=f();voi [...]
\ No newline at end of file
diff --git "a/zh/blog/2022/05/20/\345\246\202\344\275\225\350\264\241\347\214\256issues/index.html" "b/zh/blog/2022/05/20/\345\246\202\344\275\225\350\264\241\347\214\256issues/index.html"
index efc5019..6b3b1c9 100644
--- "a/zh/blog/2022/05/20/\345\246\202\344\275\225\350\264\241\347\214\256issues/index.html"
+++ "b/zh/blog/2022/05/20/\345\246\202\344\275\225\350\264\241\347\214\256issues/index.html"
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">如何贡献issue | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/2022/05/20/如何贡献issues"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" content="default"><meta [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 这很有趣,它们几乎立刻就被拿走了......
 但对于那些有兴趣但没有得到的人来说可能就不那么有趣了。</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="所以">所以...<a class="hash-link" href="#所以" title="标题的直接链接">​</a></h3><p>我们决定,不再有竞争,你可以从我们的github issue pages中挑选你喜欢的issue。如果没有了,甚至可以创建你自己的。
 我们毕竟是社区!</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="怎么做呢这很简单">怎么做呢?这很简单!<a class="hash-link" href="#怎么做呢这很简单" title="标题的直接链接">​</a></h3><p>进入我们的<a href="https://github.com/apache/incubator-devlake/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" target="_blank" rel="noopener noreferrer">问题页面</a>,然后点击这里。我们所有的Good First Issue都列在这里!
@@ -24,7 +24,7 @@
 不不不,你不是为我们写代码,你是为社区里的每个人写代码,你是为自己写代码。
 为了提高你的技能,为了学习如何与他人合作。而对于那些做出重大贡献的人,
 我们为您提供一个Apache Committer的席位,甚至是PPMC!</p></li></ul><h3 class="anchor anchorWithStickyNavbar_mojV" id="就这些了有任何问题请随时提出编码快乐">就这些了,有任何问题请随时提出。编码快乐!<a class="hash-link" href="#就这些了有任何问题请随时提出编码快乐" title="标题的直接链接">​</a></h3></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/zh/blog/apache-devlake-codebase-walkthrough"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__l [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/apache-devlake-codebase-walkthrough/index.html b/zh/blog/apache-devlake-codebase-walkthrough/index.html
index a3b8f51..ebdcdcc 100644
--- a/zh/blog/apache-devlake-codebase-walkthrough/index.html
+++ b/zh/blog/apache-devlake-codebase-walkthrough/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake代码库导览 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/apache-devlake-codebase-walkthrough"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/apache-welcomes-devlake/index.html b/zh/blog/apache-welcomes-devlake/index.html
index 26900c8..f0294c4 100644
--- a/zh/blog/apache-welcomes-devlake/index.html
+++ b/zh/blog/apache-welcomes-devlake/index.html
@@ -6,14 +6,14 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">DevLake 加入 Apache 孵化器,来和我们一起玩开源! | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/apache-welcomes-devlake"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 用户可以根据实际需求,实现以下自定义:</p><ul><li>数据源自定义:Apache DevLake 基于 Golang plugin 系统设计了灵活的插件系统,支持用户独立开发接入任意 DevOps 工具</li><li>数据实体自定义:基于 dbt 插件,支持用户自定义数据转换模型</li><li>效能指标自定义:支持用户基于数据模型自定义指标,或调整指标计算方式</li><li>数据看板自定义:SQL 查询,在 Grafana 中拖拽搭建数据看板</li></ul><p>以下是 <a href="https://github.com/apache/incubator-devlake/blob/main/ARCHITECTURE.md" target="_blank" rel="noopener noreferrer">Apache DevLake 架构图</a>:</p><p><img loading="lazy" alt="面向开源产品的版本/模块质量分析" src="/zh/assets/images/0.11-architecture-diagram-f [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/archive/index.html b/zh/blog/archive/index.html
index a97f86c..f3b19c1 100644
--- a/zh/blog/archive/index.html
+++ b/zh/blog/archive/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">历史博文 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/archive"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" nam [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/atom.xml b/zh/blog/atom.xml
index dcb906e..3624fde 100644
--- a/zh/blog/atom.xml
+++ b/zh/blog/atom.xml
@@ -9,8 +9,8 @@
     <icon>https://devlake.apache.org/zh/img/logo.svg</icon>
     <entry>
         <title type="html"><![CDATA[refdiff插件的计算提交版本差异算法]]></title>
-        <id>some-practices-of-supporting-postgresql</id>
-        <link href="https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql"/>
+        <id>refdiff-calculate-commits-diff</id>
+        <link href="https://devlake.apache.org/zh/blog/refdiff-calculate-commits-diff"/>
         <updated>2022-06-22T00:00:00.000Z</updated>
         <summary type="html"><![CDATA[什么是 计算提交版本差异(CalculateCommitsDiff)?]]></summary>
         <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="标题的直接链接">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。</p><p>而如果只是使用<c [...]
@@ -37,15 +37,9 @@
         <link href="https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql"/>
         <updated>2022-06-17T00:00:00.000Z</updated>
         <summary type="html"><![CDATA[本文作者:ZhangLiang]]></summary>
-        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="标题的直接链接">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。</p><p>而如果只是使用<c [...]
-当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
-问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
-集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
-从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
-从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
-此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
-此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
-从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
+        <content type="html"><![CDATA[<p>本文作者:ZhangLiang<br>
+<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
+我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
         <author>
             <name>ZhangLiang</name>
             <uri>https://github.com/mindlesscloud</uri>
diff --git a/zh/blog/deadlock-caused-by-using-ants/index.html b/zh/blog/deadlock-caused-by-using-ants/index.html
index fa6d5c4..74d4a7f 100644
--- a/zh/blog/deadlock-caused-by-using-ants/index.html
+++ b/zh/blog/deadlock-caused-by-using-ants/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">使用ants引发的死锁 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/deadlock-caused-by-using-ants"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" content="defa [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/how-apache-devlake-runs/index.html b/zh/blog/how-apache-devlake-runs/index.html
index 455e19b..d857822 100644
--- a/zh/blog/how-apache-devlake-runs/index.html
+++ b/zh/blog/how-apache-devlake-runs/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake是怎么跑起来的 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/how-apache-devlake-runs"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" content=" [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/index.html b/zh/blog/index.html
index e05b3af..991cce2 100644
--- a/zh/blog/index.html
+++ b/zh/blog/index.html
@@ -6,14 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Blog | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" property="og [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
 这很有趣,它们几乎立刻就被拿走了......
@@ -28,7 +34,7 @@
 不不不,你不是为我们写代码,你是为社区里的每个人写代码,你是为自己写代码。
 为了提高你的技能,为了学习如何与他人合作。而对于那些做出重大贡献的人,
 我们为您提供一个Apache Committer的席位,甚至是PPMC!</p></li></ul><h3 class="anchor anchorWithStickyNavbar_mojV" id="就这些了有任何问题请随时提出编码快乐">就这些了,有任何问题请随时提出。编码快乐!<a class="hash-link" href="#就这些了有任何问题请随时提出编码快乐" title="标题的直接链接">​</a></h3></div></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="blogPostTitle_rzP5" itemprop="headline"><a itemprop="url" href="/zh/blog/apache-welcomes-devlake">DevLake 加入 Apache 孵化器,来和我们一起玩开源!</ [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/some-practices-of-supporting-postgresql/index.html b/zh/blog/refdiff-calculate-commits-diff/index.html
similarity index 56%
copy from zh/blog/some-practices-of-supporting-postgresql/index.html
copy to zh/blog/refdiff-calculate-commits-diff/index.html
index 8d12959..c737013 100644
--- a/zh/blog/some-practices-of-supporting-postgresql/index.html
+++ b/zh/blog/refdiff-calculate-commits-diff/index.html
@@ -5,13 +5,13 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/refdiff-calculate-commits-diff"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" con [...]
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
@@ -20,7 +20,7 @@
 此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
 此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
 从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/rss.xml b/zh/blog/rss.xml
index 4a9bda6..a3e7c71 100644
--- a/zh/blog/rss.xml
+++ b/zh/blog/rss.xml
@@ -10,8 +10,8 @@
         <language>zh</language>
         <item>
             <title><![CDATA[refdiff插件的计算提交版本差异算法]]></title>
-            <link>https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql</link>
-            <guid>some-practices-of-supporting-postgresql</guid>
+            <link>https://devlake.apache.org/zh/blog/refdiff-calculate-commits-diff</link>
+            <guid>refdiff-calculate-commits-diff</guid>
             <pubDate>Wed, 22 Jun 2022 00:00:00 GMT</pubDate>
             <description><![CDATA[什么是 计算提交版本差异(CalculateCommitsDiff)?]]></description>
             <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="标题的直接链接">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。</p><p>而如果只是使用<c [...]
@@ -34,15 +34,9 @@
             <guid>some-practices-of-supporting-postgresql</guid>
             <pubDate>Fri, 17 Jun 2022 00:00:00 GMT</pubDate>
             <description><![CDATA[本文作者:ZhangLiang]]></description>
-            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="标题的直接链接">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。</p><p>而如果只是使用<c [...]
-当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
-问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
-集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
-从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
-从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
-此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
-此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
-从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
+            <content:encoded><![CDATA[<p>本文作者:ZhangLiang<br>
+<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
+我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
             <category>devlake</category>
             <category>database</category>
             <category>postgresql</category>
diff --git a/zh/blog/some-practices-of-supporting-postgresql/index.html b/zh/blog/some-practices-of-supporting-postgresql/index.html
index 8d12959..55a106c 100644
--- a/zh/blog/some-practices-of-supporting-postgresql/index.html
+++ b/zh/blog/some-practices-of-supporting-postgresql/index.html
@@ -5,22 +5,16 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake 兼容 PostgreSQL 踩坑小结 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" nam [...]
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
-问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
-集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
-从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
-从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
-此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
-此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
-从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
+我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/algorithm/index.html b/zh/blog/tags/algorithm/index.html
index 4cfdc1e..28b8888 100644
--- a/zh/blog/tags/algorithm/index.html
+++ b/zh/blog/tags/algorithm/index.html
@@ -6,15 +6,21 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">1 篇博文 含有标签「algorithm」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/algorithm"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh">< [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/ants/index.html b/zh/blog/tags/ants/index.html
index 6e1e89b..aab3933 100644
--- a/zh/blog/tags/ants/index.html
+++ b/zh/blog/tags/ants/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">1 篇博文 含有标签「ants」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/ants"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data- [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/apache/index.html b/zh/blog/tags/apache/index.html
index 46dfbcd..54c010d 100644
--- a/zh/blog/tags/apache/index.html
+++ b/zh/blog/tags/apache/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">2 篇博文 含有标签「apache」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/apache"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta d [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/codebase/index.html b/zh/blog/tags/codebase/index.html
index 8d809b9..28bcb28 100644
--- a/zh/blog/tags/codebase/index.html
+++ b/zh/blog/tags/codebase/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">1 篇博文 含有标签「codebase」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/codebase"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><me [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/database/index.html b/zh/blog/tags/database/index.html
index 78e09c1..b668f14 100644
--- a/zh/blog/tags/database/index.html
+++ b/zh/blog/tags/database/index.html
@@ -6,15 +6,15 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">1 篇博文 含有标签「database」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/database"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><me [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/devlake/index.html b/zh/blog/tags/devlake/index.html
index b1f1212..bca653c 100644
--- a/zh/blog/tags/devlake/index.html
+++ b/zh/blog/tags/devlake/index.html
@@ -6,17 +6,23 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">6 篇博文 含有标签「devlake」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/devlake"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/graph/index.html b/zh/blog/tags/graph/index.html
index 56c2fd5..a027c71 100644
--- a/zh/blog/tags/graph/index.html
+++ b/zh/blog/tags/graph/index.html
@@ -6,15 +6,21 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">1 篇博文 含有标签「graph」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/graph"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta dat [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/index.html b/zh/blog/tags/index.html
index 76c06b6..4a97d7b 100644
--- a/zh/blog/tags/index.html
+++ b/zh/blog/tags/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">标签 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" property= [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/postgresql/index.html b/zh/blog/tags/postgresql/index.html
index 4bb9fdb..998560c 100644
--- a/zh/blog/tags/postgresql/index.html
+++ b/zh/blog/tags/postgresql/index.html
@@ -6,15 +6,15 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">1 篇博文 含有标签「postgresql」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/postgresql"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh" [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/refdiff/index.html b/zh/blog/tags/refdiff/index.html
index ae97ccb..88cb51d 100644
--- a/zh/blog/tags/refdiff/index.html
+++ b/zh/blog/tags/refdiff/index.html
@@ -6,15 +6,21 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">1 篇博文 含有标签「refdiff」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/refdiff"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/Team/index.html b/zh/community/Team/index.html
index 8381e5f..a1d448a 100644
--- a/zh/community/Team/index.html
+++ b/zh/community/Team/index.html
@@ -6,14 +6,14 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Team | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/community/Team/"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" n [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 get merged into the codebase. We deeply appreciate your contribution!</p><ul><li><a href="https://github.com/liangjingyang" target="_blank" rel="noopener noreferrer">Jingyang Liang</a></li><li><a href="https://github.com/yumengwang03" target="_blank" rel="noopener noreferrer">Yumeng Wang</a></li><li><a href="https://github.com/likyh" target="_blank" rel="noopener noreferrer">Yanghui Lin</a></li><li><a href="https://github.com/KeHaohaoke" target="_blank" rel="noopener noreferrer">Hao Ke</ [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/index.html b/zh/community/index.html
index 8f58622..b2b6961 100644
--- a/zh/community/index.html
+++ b/zh/community/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">How to Make Contributions? | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/community/"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta [...]
 "><meta data-rh="true" property="og:description" content="The steps and specs to contribute to DevLake.
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/community/"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/community/" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/community/" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/community/" hreflang="x-default"><link rel="stylesheet" href="/zh/assets/css/styl [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/make-contribution/BlogSubmission/index.html b/zh/community/make-contribution/BlogSubmission/index.html
index 6e40dff..e94c140 100644
--- a/zh/community/make-contribution/BlogSubmission/index.html
+++ b/zh/community/make-contribution/BlogSubmission/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Blog Submission | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/community/make-contribution/BlogSubmission"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:languag [...]
 "><meta data-rh="true" property="og:description" content="Instructions for how to submit a blog post to DevLake Blog
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/community/make-contribution/BlogSubmission"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/community/make-contribution/BlogSubmission" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/community/make-contribution/BlogSubmission" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devl [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/make-contribution/contributor-growth-program/index.html b/zh/community/make-contribution/contributor-growth-program/index.html
index 6690ca1..23b5a74 100644
--- a/zh/community/make-contribution/contributor-growth-program/index.html
+++ b/zh/community/make-contribution/contributor-growth-program/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Becoming a Committer | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/community/make-contribution/contributor-growth-program"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name=" [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/make-contribution/development-workflow/index.html b/zh/community/make-contribution/development-workflow/index.html
index 757ca4e..242ae58 100644
--- a/zh/community/make-contribution/development-workflow/index.html
+++ b/zh/community/make-contribution/development-workflow/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Development Workflow | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/community/make-contribution/development-workflow"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsea [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/make-contribution/fix-or-create-issues/index.html b/zh/community/make-contribution/fix-or-create-issues/index.html
index 0409af2..99fc40a 100644
--- a/zh/community/make-contribution/fix-or-create-issues/index.html
+++ b/zh/community/make-contribution/fix-or-create-issues/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Contributing to Issues | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/community/make-contribution/fix-or-create-issues"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docs [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -27,7 +27,7 @@ and then you can work on it. </p></li><li><p>Finally, you may ask, why do I go t
 No, you don&#x27;t code for us, you code for everyone in the community, you code for yourself,
 for your skills, to learn how to cooperate with others. And for those who made significant contribution,<br>
 <!-- -->we offer you, a seat of Apache Committer, or even PPMC.</p></li></ul><p>That&#x27;s all, feel free to ask any questions. And Happy Coding!</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="文档分页导航"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/zh/community/make-contribution/BlogSubmission"><div class="pagination-nav__sublabel">上一页</div><div class="pagination-nav__label">Blog Submission</div></a></div><div class="pagination-nav__ [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/subscribe/index.html b/zh/community/subscribe/index.html
index f9da2d1..0a257d0 100644
--- a/zh/community/subscribe/index.html
+++ b/zh/community/subscribe/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Mailing List | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/community/subscribe"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Dashboards/AverageRequirementLeadTime/index.html b/zh/docs/Dashboards/AverageRequirementLeadTime/index.html
index d03f9e6..08deacc 100644
--- a/zh/docs/Dashboards/AverageRequirementLeadTime/index.html
+++ b/zh/docs/Dashboards/AverageRequirementLeadTime/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Average Requirement Lead Time by Assignee | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Dashboards/AverageRequirementLeadTime"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="tru [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Dashboards/AverageRequirementLeadTime"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/AverageRequirementLeadTime" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/AverageRequirementLeadTime" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devl [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Dashboards/CommitCountByAuthor/index.html b/zh/docs/Dashboards/CommitCountByAuthor/index.html
index 5a7bbe3..120ad31 100644
--- a/zh/docs/Dashboards/CommitCountByAuthor/index.html
+++ b/zh/docs/Dashboards/CommitCountByAuthor/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Commit Count by Author | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Dashboards/CommitCountByAuthor"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:languag [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Dashboards/CommitCountByAuthor"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/CommitCountByAuthor" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/CommitCountByAuthor" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/D [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Dashboards/DetailedBugInfo/index.html b/zh/docs/Dashboards/DetailedBugInfo/index.html
index 05a68da..8f66f08 100644
--- a/zh/docs/Dashboards/DetailedBugInfo/index.html
+++ b/zh/docs/Dashboards/DetailedBugInfo/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Detailed Bug Info | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Dashboards/DetailedBugInfo"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" conten [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Dashboards/DetailedBugInfo"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/DetailedBugInfo" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/DetailedBugInfo" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/De [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Dashboards/GitHubBasic/index.html b/zh/docs/Dashboards/GitHubBasic/index.html
index 2b54237..ff3da51 100644
--- a/zh/docs/Dashboards/GitHubBasic/index.html
+++ b/zh/docs/Dashboards/GitHubBasic/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub Basic Metrics | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Dashboards/GitHubBasic"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Dashboards/GitHubBasic"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/GitHubBasic" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/GitHubBasic" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/GitHubBasic" h [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html b/zh/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
index b96655e..cb0fe85 100644
--- a/zh/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
+++ b/zh/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub Release Quality and Contribution Analysis | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis"><meta data-rh="true" name="docusaurus_locale" content [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis" hreflang="zh"><lin [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Dashboards/Jenkins/index.html b/zh/docs/Dashboards/Jenkins/index.html
index ecceeda..fc3090f 100644
--- a/zh/docs/Dashboards/Jenkins/index.html
+++ b/zh/docs/Dashboards/Jenkins/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jenkins | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Dashboards/Jenkins"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data- [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Dashboards/Jenkins"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/Jenkins" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/Jenkins" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/Jenkins" hreflang="x-defau [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Dashboards/WeeklyBugRetro/index.html b/zh/docs/Dashboards/WeeklyBugRetro/index.html
index 7981944..f57a3e4 100644
--- a/zh/docs/Dashboards/WeeklyBugRetro/index.html
+++ b/zh/docs/Dashboards/WeeklyBugRetro/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Weekly Bug Retro | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Dashboards/WeeklyBugRetro"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content= [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Dashboards/WeeklyBugRetro"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/WeeklyBugRetro" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/WeeklyBugRetro" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/Weekl [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/DataModels/DataSupport/index.html b/zh/docs/DataModels/DataSupport/index.html
index 628852b..cdba8f5 100644
--- a/zh/docs/DataModels/DataSupport/index.html
+++ b/zh/docs/DataModels/DataSupport/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Data Support | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/DataModels/DataSupport"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><m [...]
 "><meta data-rh="true" property="og:description" content="Data sources that DevLake supports
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/DataModels/DataSupport"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/DataModels/DataSupport" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/DataModels/DataSupport" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/DataModels/DataSupport" h [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/DataModels/DevLakeDomainLayerSchema/index.html b/zh/docs/DataModels/DevLakeDomainLayerSchema/index.html
index 3cfd0e4..4ade96b 100644
--- a/zh/docs/DataModels/DevLakeDomainLayerSchema/index.html
+++ b/zh/docs/DataModels/DevLakeDomainLayerSchema/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Domain Layer Schema | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/DataModels/DevLakeDomainLayerSchema"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:langu [...]
 "><meta data-rh="true" property="og:description" content="DevLake Domain Layer Schema
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/DataModels/DevLakeDomainLayerSchema"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/DataModels/DevLakeDomainLayerSchema" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.ap [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/EngineeringMetrics/index.html b/zh/docs/EngineeringMetrics/index.html
index 8338cce..3dd66a1 100644
--- a/zh/docs/EngineeringMetrics/index.html
+++ b/zh/docs/EngineeringMetrics/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Engineering Metrics | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/EngineeringMetrics"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh" [...]
 "><meta data-rh="true" property="og:description" content="The definition, values and data required for the 20+ engineering metrics supported by DevLake.
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/EngineeringMetrics"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/EngineeringMetrics" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/EngineeringMetrics" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/EngineeringMetrics" hreflang="x-defau [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Glossary/index.html b/zh/docs/Glossary/index.html
index c5edbcf..d4bac55 100644
--- a/zh/docs/Glossary/index.html
+++ b/zh/docs/Glossary/index.html
@@ -8,15 +8,15 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Glossary | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Glossary"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" [...]
 "><meta data-rh="true" property="og:description" content="DevLake Glossary
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Glossary"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Glossary" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Glossary" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Glossary" hreflang="x-default"><link rel="stylesheet" href="/zh/ass [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 <img loading="lazy" alt="Blueprint ERD" src="/zh/assets/images/pipeline-erd-63705e2232b63c7fe75197ee3e96f170.svg" width="1409" height="593" class="img_E7b_">
 Notice: <strong>You can manually orchestrate the pipeline in Configuration UI Advanced Mode and the DevLake API; whereas in Configuration UI regular mode, an optimized pipeline orchestration will be automatically generated for you.</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="stages">Stages<a class="hash-link" href="#stages" title="标题的直接链接">​</a></h3><p><strong>A stages is a collection of tasks performed by data plugins.</strong> Stages are executed in a sequential orde [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Overview/Architecture/index.html b/zh/docs/Overview/Architecture/index.html
index 2351aff..b13673a 100644
--- a/zh/docs/Overview/Architecture/index.html
+++ b/zh/docs/Overview/Architecture/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Architecture | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Overview/Architecture"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><me [...]
 "><meta data-rh="true" property="og:description" content="Understand the architecture of Apache DevLake.
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Overview/Architecture"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Architecture" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Overview/Architecture" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Architecture" hrefl [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Overview/Roadmap/index.html b/zh/docs/Overview/Roadmap/index.html
index abf8f0f..e46be80 100644
--- a/zh/docs/Overview/Roadmap/index.html
+++ b/zh/docs/Overview/Roadmap/index.html
@@ -8,14 +8,14 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Roadmap | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Overview/Roadmap"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh [...]
 "><meta data-rh="true" property="og:description" content="The goals and roadmap for DevLake in 2022.
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Overview/Roadmap"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Roadmap" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Overview/Roadmap" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Roadmap" hreflang="x-default"><lin [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 Also, if you plan to work (or are already working) on a new or existing feature, tell us, so that we can update the roadmap accordingly. We are happy to share knowledge and context to help your feature land successfully.</p><br><br><br></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-devlake-website/edit/main/docs/01-Overview/03-Roadmap.md" target="_blank" rel="noreferrer  [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Overview/WhatIsDevLake/index.html b/zh/docs/Overview/WhatIsDevLake/index.html
index 9863312..8f37f88 100644
--- a/zh/docs/Overview/WhatIsDevLake/index.html
+++ b/zh/docs/Overview/WhatIsDevLake/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Introduction | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Overview/WhatIsDevLake"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><m [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/dbt/index.html b/zh/docs/Plugins/dbt/index.html
index 138f973..5dd532e 100644
--- a/zh/docs/Plugins/dbt/index.html
+++ b/zh/docs/Plugins/dbt/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">DBT | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/dbt"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" n [...]
 "><meta data-rh="true" property="og:description" content="DBT Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/dbt"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/dbt" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/dbt" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/dbt" hreflang="x-default"><link rel="stylesheet" h [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -19,7 +19,7 @@ And selectedModels accepts one or more arguments. Each argument can be one of:</
 example:
 <code>select * from events where event_type = &#x27;{{ var(&quot;event_type&quot;) }}&#x27;</code>
 To execute this SQL query in your model, you need set a value for <code>event_type</code>.</li></ul><h3 class="anchor anchorWithStickyNavbar_mojV" id="resources">Resources:<a class="hash-link" href="#resources" title="标题的直接链接">​</a></h3><ul><li>Learn more about dbt <a href="https://docs.getdbt.com/docs/introduction" target="_blank" rel="noopener noreferrer">in the docs</a></li><li>Check out <a href="https://discourse.getdbt.com/" target="_blank" rel="noopener noreferrer">Discourse</a> fo [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/feishu/index.html b/zh/docs/Plugins/feishu/index.html
index 3938f01..dbea624 100644
--- a/zh/docs/Plugins/feishu/index.html
+++ b/zh/docs/Plugins/feishu/index.html
@@ -8,14 +8,14 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Feishu | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/feishu"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="t [...]
 "><meta data-rh="true" property="og:description" content="Feishu Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/feishu"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/feishu" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/feishu" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/feishu" hreflang="x-default"><link rel="s [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 then set these two parameters via Dev Lake&#x27;s <code>.env</code>.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="by-env">By <code>.env</code><a class="hash-link" href="#by-env" title="标题的直接链接">​</a></h3><p>The connection aspect of the configuration screen requires the following key fields to connect to the Feishu API. As Feishu is a single-source data provider at the moment, the connection name is read-only as there is only one instance to manage. As we continue our development [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/gitee/index.html b/zh/docs/Plugins/gitee/index.html
index 47abf07..cbbc1b8 100644
--- a/zh/docs/Plugins/gitee/index.html
+++ b/zh/docs/Plugins/gitee/index.html
@@ -8,15 +8,15 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Gitee(WIP) | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/gitee"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh [...]
 "><meta data-rh="true" property="og:description" content="Gitee Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/gitee"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitee" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitee" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitee" hreflang="x-default"><link rel="style [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 Enter a valid proxy server address on your Network, e.g. <code>http://your-proxy-server.com:1080</code></p><p>Click <strong>Save Settings</strong> to update additional settings.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="regular-expression-configuration">Regular Expression Configuration<a class="hash-link" href="#regular-expression-configuration" title="标题的直接链接">​</a></h3><p>Define regex pattern in .env</p><ul><li>GITEE_PR_BODY_CLOSE_PATTERN: Define key word to associate issue [...]
 You can also trigger data collection by making a POST request to <code>/pipelines</code>.</li></ol><div class="codeBlockContainer_I0IT theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-text codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">curl --location --request POST &#x27;localhost:8080/pipelines&#x27; \ [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/gitextractor/index.html b/zh/docs/Plugins/gitextractor/index.html
index 1146b2a..016d361 100644
--- a/zh/docs/Plugins/gitextractor/index.html
+++ b/zh/docs/Plugins/gitextractor/index.html
@@ -8,15 +8,15 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitExtractor | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/gitextractor"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><met [...]
 "><meta data-rh="true" property="og:description" content="GitExtractor Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/gitextractor"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitextractor" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitextractor" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitextractor" hreflang= [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 NOTE: you can run only one issue collection stage as described in the Github Plugin README.</li><li>Use the <a href="/zh/docs/Plugins/refdiff#development">RefDiff</a> plugin to calculate version diff, which will be stored in <code>refs_commits_diffs</code> table.</li></ol><h2 class="anchor anchorWithStickyNavbar_mojV" id="sample-request">Sample Request<a class="hash-link" href="#sample-request" title="标题的直接链接">​</a></h2><div class="codeBlockContainer_I0IT theme-code-block"><div class="co [...]
 machine. <a href="/zh/docs/Plugins/refdiff#development">Click here</a> for a brief guide.</p><br><br><br></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-devlake-website/edit/main/docs/03-Plugins/gitextractor.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_dcUD" a [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/github/index.html b/zh/docs/Plugins/github/index.html
index 1419ee0..f50d358 100644
--- a/zh/docs/Plugins/github/index.html
+++ b/zh/docs/Plugins/github/index.html
@@ -8,14 +8,14 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/github"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="t [...]
 "><meta data-rh="true" property="og:description" content="GitHub Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/github"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/github" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/github" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/github" hreflang="x-default"><link rel="s [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 Enter a valid proxy server address on your Network, e.g. <code>http://your-proxy-server.com:1080</code></li></ul><p>Click <strong>Save Settings</strong> to update additional settings.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="regular-expression-configuration">Regular Expression Configuration<a class="hash-link" href="#regular-expression-configuration" title="标题的直接链接">​</a></h3><p>Define regex pattern in .env</p><ul><li>GITHUB_PR_BODY_CLOSE_PATTERN: Define key word to associat [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/gitlab/index.html b/zh/docs/Plugins/gitlab/index.html
index 6cbef87..9efe47b 100644
--- a/zh/docs/Plugins/gitlab/index.html
+++ b/zh/docs/Plugins/gitlab/index.html
@@ -8,14 +8,14 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitLab | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/gitlab"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="t [...]
 "><meta data-rh="true" property="og:description" content="GitLab Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/gitlab"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitlab" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitlab" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitlab" hreflang="x-default"><link rel="s [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 For an overview of the <strong>GitLab REST API</strong>, please see official <a href="https://docs.gitlab.com/ee/development/documentation/restful_api_styleguide.html#restful-api" target="_blank" rel="noopener noreferrer">GitLab Docs on REST</a></p></li></ul></li></ul><p>Click <strong>Save Connection</strong> to update connection settings.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="provider-datasource-settings">Provider (Datasource) Settings<a class="hash-link" href="#provider [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/jenkins/index.html b/zh/docs/Plugins/jenkins/index.html
index fc2e49c..b282f23 100644
--- a/zh/docs/Plugins/jenkins/index.html
+++ b/zh/docs/Plugins/jenkins/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jenkins | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/jenkins"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh= [...]
 "><meta data-rh="true" property="og:description" content="Jenkins Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/jenkins"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jenkins" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/jenkins" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jenkins" hreflang="x-default"><link re [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/jira/index.html b/zh/docs/Plugins/jira/index.html
index 1006798..fd808a0 100644
--- a/zh/docs/Plugins/jira/index.html
+++ b/zh/docs/Plugins/jira/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jira | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/jira"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" [...]
 "><meta data-rh="true" property="og:description" content="Jira Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/jira"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jira" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/jira" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jira" hreflang="x-default"><link rel="styleshee [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -19,7 +19,7 @@
 For example:
 Requests to <code>http://your_devlake_host/plugins/jira/connections/1/proxy/rest/agile/1.0/board/8/sprint</code>
 would be forwarded to <code>https://your_jira_host/rest/agile/1.0/board/8/sprint</code></li></ol><div class="codeBlockContainer_I0IT language-GET theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-GET codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#3 [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/refdiff/index.html b/zh/docs/Plugins/refdiff/index.html
index 4427ab3..0a57e67 100644
--- a/zh/docs/Plugins/refdiff/index.html
+++ b/zh/docs/Plugins/refdiff/index.html
@@ -8,15 +8,15 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">RefDiff | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/refdiff"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh= [...]
 "><meta data-rh="true" property="og:description" content="RefDiff Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/refdiff"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/refdiff" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/refdiff" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/refdiff" hreflang="x-default"><link re [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 machine.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="ubuntu">Ubuntu<a class="hash-link" href="#ubuntu" title="标题的直接链接">​</a></h3><div class="codeBlockContainer_I0IT theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-text codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">apt install cmake</span><br>< [...]
 <code>export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib:/usr/local/lib/pkgconfig</code></li></ol></blockquote><br><br><br></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-devlake-website/edit/main/docs/03-Plugins/refdiff.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class= [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/Plugins/tapd/index.html b/zh/docs/Plugins/tapd/index.html
index e8e0dca..600074d 100644
--- a/zh/docs/Plugins/tapd/index.html
+++ b/zh/docs/Plugins/tapd/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">TAPD | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/tapd"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/QuickStart/DeveloperSetup/index.html b/zh/docs/QuickStart/DeveloperSetup/index.html
index dfa1cf7..0b497a1 100644
--- a/zh/docs/QuickStart/DeveloperSetup/index.html
+++ b/zh/docs/QuickStart/DeveloperSetup/index.html
@@ -8,14 +8,14 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Developer Setup | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/QuickStart/DeveloperSetup"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content=" [...]
 "><meta data-rh="true" property="og:description" content="The steps to install DevLake in develper mode.
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/QuickStart/DeveloperSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/DeveloperSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/DeveloperSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/Devel [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 After the pipeline starts, you will be automatically redirected to the <strong>Pipeline Activity</strong> screen to monitor collection activity.</p><p>   <strong>Pipelines</strong> is accessible from the main menu of the config-ui for easy access.</p><ul><li><p>Manage All Pipelines: <code>http://localhost:4000/pipelines</code></p></li><li><p>Create Pipeline RUN: <code>http://localhost:4000/pipelines/create</code></p></li><li><p>Track Pipeline Activity: <code>http://localhost:4000/pipelin [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/QuickStart/KubernetesSetup/index.html b/zh/docs/QuickStart/KubernetesSetup/index.html
index 468a61c..3adda50 100644
--- a/zh/docs/QuickStart/KubernetesSetup/index.html
+++ b/zh/docs/QuickStart/KubernetesSetup/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Deploy to Kubernates | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/QuickStart/KubernetesSetup"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" con [...]
 "><meta data-rh="true" property="og:description" content="The steps to install Apache DevLake in Kubernetes.
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/QuickStart/KubernetesSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/KubernetesSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/KubernetesSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/Ku [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/QuickStart/LocalSetup/index.html b/zh/docs/QuickStart/LocalSetup/index.html
index fcd6085..5430845 100644
--- a/zh/docs/QuickStart/LocalSetup/index.html
+++ b/zh/docs/QuickStart/LocalSetup/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Deploy Locally | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/QuickStart/LocalSetup"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh">< [...]
 "><meta data-rh="true" property="og:description" content="The steps to install DevLake locally.
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/QuickStart/LocalSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/LocalSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/LocalSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/LocalSetup" hrefl [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/QuickStart/TemporalSetup/index.html b/zh/docs/QuickStart/TemporalSetup/index.html
index cc3e9f4..b104b8f 100644
--- a/zh/docs/QuickStart/TemporalSetup/index.html
+++ b/zh/docs/QuickStart/TemporalSetup/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Temporal Setup | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/QuickStart/TemporalSetup"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh [...]
 "><meta data-rh="true" property="og:description" content="The steps to install DevLake in develper mode.
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/QuickStart/TemporalSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/TemporalSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/TemporalSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/Temporal [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/UserManuals/GRAFANA/index.html b/zh/docs/UserManuals/GRAFANA/index.html
index 88d1585..c072117 100644
--- a/zh/docs/UserManuals/GRAFANA/index.html
+++ b/zh/docs/UserManuals/GRAFANA/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">How to use Grafana | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/UserManuals/GRAFANA"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh" [...]
 "><meta data-rh="true" property="og:description" content="How to use Grafana
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/UserManuals/GRAFANA"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/GRAFANA" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/GRAFANA" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/GRAFANA" hreflang="x-d [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/UserManuals/MIGRATIONS/index.html b/zh/docs/UserManuals/MIGRATIONS/index.html
index df27704..ca80b8f 100644
--- a/zh/docs/UserManuals/MIGRATIONS/index.html
+++ b/zh/docs/UserManuals/MIGRATIONS/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">DB Migration | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/UserManuals/MIGRATIONS"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><m [...]
 "><meta data-rh="true" property="og:description" content="DB Migration
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/UserManuals/MIGRATIONS"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/MIGRATIONS" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS" h [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -19,7 +19,7 @@ The migration scripts are written with gorm in Golang to support different SQL d
 They implement the <code>Script</code> interface.
 When DevLake starts, scripts register themselves to the framework by invoking the <code>Register</code> function</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span c [...]
 From which, DevLake could figure out the current state of database schemas.</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="how-it-works">How it Works<a class="hash-link" href="#how-it-works" title="标题的直接链接">​</a></h2><ol><li>Check <code>migration_history</code> table, calculate all the migration scripts need to be executed.</li><li>Sort scripts by Version in ascending order.</li><li>Execute scripts.</li><li>Save results in the <code>migration_history</code> table.</li></ol></div>< [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/UserManuals/NOTIFICATION/index.html b/zh/docs/UserManuals/NOTIFICATION/index.html
index e92b637..95e8bb5 100644
--- a/zh/docs/UserManuals/NOTIFICATION/index.html
+++ b/zh/docs/UserManuals/NOTIFICATION/index.html
@@ -8,13 +8,13 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Notifications | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/UserManuals/NOTIFICATION"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh" [...]
 "><meta data-rh="true" property="og:description" content="Notifications
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/UserManuals/NOTIFICATION"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/NOTIFICATION" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/NOTIFICATION" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/NOTIFIC [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/UserManuals/create-pipeline-in-advanced-mode/index.html b/zh/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
index 150bf17..0f68329 100644
--- a/zh/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
+++ b/zh/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
@@ -8,14 +8,14 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Create Pipeline in Advanced Mode | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/UserManuals/create-pipeline-in-advanced-mode"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" [...]
 "><meta data-rh="true" property="og:description" content="Create Pipeline in Advanced Mode
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/UserManuals/create-pipeline-in-advanced-mode"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/create-pipeline-in-advanced-mode" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/create-pipeline-in-advanced-mode" hreflang="zh"><link data-rh="true" rel="alternat [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 Running multiple tasks against the same data source is unlikely to speed up the process and may overwhelm the data source.</p></blockquote><p>Below is an example for collecting 2 GitLab repos sequentially. It has 2 stages, each contains a GitLab task.</p><div class="codeBlockContainer_I0IT theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-text codeBlock_jd64 thin-scrollbar"><code class="codeBlo [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/UserManuals/github-user-guide-v0.10.0/index.html b/zh/docs/UserManuals/github-user-guide-v0.10.0/index.html
index 4c7279d..6564ae4 100644
--- a/zh/docs/UserManuals/github-user-guide-v0.10.0/index.html
+++ b/zh/docs/UserManuals/github-user-guide-v0.10.0/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub User Guide v0.10.0 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/UserManuals/github-user-guide-v0.10.0"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsear [...]
 "><meta data-rh="true" property="og:description" content="GitHub User Guide v0.10.0
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/UserManuals/github-user-guide-v0.10.0"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/github-user-guide-v0.10.0" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/github-user-guide-v0.10.0" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devl [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@ To accelerate the process, DevLake introduces GitExtractor, a new plugin that co
 <img loading="lazy" src="https://user-images.githubusercontent.com/14050754/163592015-b3294437-ce39-45d6-adf6-293e620d3942.png" alt="image" class="img_E7b_"></p></li></ol><ul><li>Endpoint URL: Leave this unchanged if you&#x27;re using github.com. Otherwise replace it with your own GitHub instance&#x27;s REST API endpoint URL. This URL should end with &#x27;/&#x27;.</li><li>Auth Token(s): Fill in your personal access tokens(s). For how to generate personal access tokens, please see GitHub [...]
 You can provide multiple tokens to speed up the data collection process, simply concatenating tokens with commas.</li><li>GitHub Proxy URL: This is optional. Enter a valid proxy server address on your Network, e.g. <a href="http://your-proxy-server.com:1080" target="_blank" rel="noopener noreferrer">http://your-proxy-server.com:1080</a></li></ul><ol start="4"><li><p>Click &#x27;Test Connection&#x27; and see it&#x27;s working, then click &#x27;Save Connection&#x27;.</p></li><li><p>[Option [...]
 <img loading="lazy" src="https://user-images.githubusercontent.com/14050754/163592506-1873bdd1-53cb-413b-a528-7bda440d07c5.png" alt="image" class="img_E7b_"></p><ol><li><p>Pull Request Enrichment Options</p><ol><li><code>Type</code>: PRs with label that matches given Regular Expression, their properties <code>type</code> will be set to the value of first sub match. For example, with Type being set to <code>type/(.*)$</code>, a PR with label <code>type/bug</code>, its <code>type</code> wo [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/docs/UserManuals/recurring-pipeline/index.html b/zh/docs/UserManuals/recurring-pipeline/index.html
index f31f996..949b8be 100644
--- a/zh/docs/UserManuals/recurring-pipeline/index.html
+++ b/zh/docs/UserManuals/recurring-pipeline/index.html
@@ -8,14 +8,14 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Create Recurring Pipelines | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/UserManuals/recurring-pipeline"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:lan [...]
 "><meta data-rh="true" property="og:description" content="Create Recurring Pipelines
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/UserManuals/recurring-pipeline"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/recurring-pipeline" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/recurring-pipeline" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/U [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 <img loading="lazy" src="https://user-images.githubusercontent.com/14050754/163596590-484e4300-b17e-4119-9818-52463c10b889.png" alt="image" class="img_E7b_"></li></ul><ol start="2"><li><p>Click &#x27;Add Blueprint&#x27;. Fill in the form and &#x27;Save Blueprint&#x27;.</p><ul><li><strong>NOTE</strong>: The schedule syntax is standard unix cron syntax, <a href="https://crontab.guru/" target="_blank" rel="noopener noreferrer">Crontab.guru</a> is an useful reference</li><li><strong>IMPORANT [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/index.html b/zh/index.html
index 8929918..19b03d9 100644
--- a/zh/index.html
+++ b/zh/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake (Incubating) | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div id="docusaurus-base-url-issue-banner-container"></div><div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4  [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/markdown-page/index.html b/zh/markdown-page/index.html
index e2de76d..361a403 100644
--- a/zh/markdown-page/index.html
+++ b/zh/markdown-page/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Markdown page example | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/markdown-page"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" content="default"><meta  [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
-<script src="/zh/assets/js/main.7641d60a.js"></script>
+<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
+<script src="/zh/assets/js/main.373fbedc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/sitemap.xml b/zh/sitemap.xml
index 3c377d8..cd869eb 100644
--- a/zh/sitemap.xml
+++ b/zh/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://devlake.apache.org/zh/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://devlake.apache.org/zh/blog/2022/05/20/ [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://devlake.apache.org/zh/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://devlake.apache.org/zh/blog/2022/05/20/ [...]
\ No newline at end of file