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/24 14:13:52 UTC

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

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 57dea4b  deploy: c34b198a4c24fe787bb05f03ee92a128daa22cdf
57dea4b is described below

commit 57dea4b119a05652eb8fd1ce916befecb1ee3525
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Fri Jun 24 14:13:48 2022 +0000

    deploy: c34b198a4c24fe787bb05f03ee92a128daa22cdf
---
 404.html                                            |  4 ++--
 assets/js/7452ddde.c9405d3d.js                      |  1 -
 assets/js/7452ddde.dfde32fb.js                      |  1 +
 assets/js/b2f554cd.a2a4230c.js                      |  1 +
 assets/js/b2f554cd.c4a67510.js                      |  1 -
 assets/js/ea0b4130.047e3abd.js                      |  1 +
 assets/js/ea0b4130.2fe5cd3c.js                      |  1 -
 ...me~main.bc11700f.js => runtime~main.d1d702e4.js} |  2 +-
 blog/apache-devlake-codebase-walkthrough/index.html |  4 ++--
 blog/apache-welcomes-devlake/index.html             |  4 ++--
 blog/archive/index.html                             |  4 ++--
 blog/atom.xml                                       | 17 +++++++++--------
 .../index.html                                      |  4 ++--
 blog/deadlock-caused-by-using-ants/index.html       |  4 ++--
 blog/how-DevLake-is-up-and-running/index.html       |  4 ++--
 blog/how-apache-devlake-runs/index.html             |  4 ++--
 blog/how-to-contribute-to-issues/index.html         |  4 ++--
 blog/index.html                                     | 19 ++++++++++---------
 blog/refdiff-calculate-commits-diff/index.html      | 21 +++++++++++----------
 blog/rss.xml                                        | 17 +++++++++--------
 .../index.html                                      |  4 ++--
 blog/tags/algorithm/index.html                      | 19 ++++++++++---------
 blog/tags/ants/index.html                           |  4 ++--
 blog/tags/apache/index.html                         |  4 ++--
 blog/tags/codebase/index.html                       |  4 ++--
 blog/tags/database/index.html                       |  4 ++--
 blog/tags/devlake/index.html                        | 19 ++++++++++---------
 blog/tags/graph/index.html                          | 19 ++++++++++---------
 blog/tags/index.html                                |  4 ++--
 blog/tags/postgresql/index.html                     |  4 ++--
 blog/tags/refdiff/index.html                        | 19 ++++++++++---------
 community/Team/index.html                           |  4 ++--
 community/index.html                                |  4 ++--
 .../make-contribution/BlogSubmission/index.html     |  4 ++--
 .../contributor-growth-program/index.html           |  4 ++--
 .../development-workflow/index.html                 |  4 ++--
 .../fix-or-create-issues/index.html                 |  4 ++--
 community/subscribe/index.html                      |  4 ++--
 .../AverageRequirementLeadTime/index.html           |  4 ++--
 docs/Dashboards/CommitCountByAuthor/index.html      |  4 ++--
 docs/Dashboards/DetailedBugInfo/index.html          |  4 ++--
 docs/Dashboards/GitHubBasic/index.html              |  4 ++--
 .../index.html                                      |  4 ++--
 docs/Dashboards/Jenkins/index.html                  |  4 ++--
 docs/Dashboards/WeeklyBugRetro/index.html           |  4 ++--
 docs/DataModels/DataSupport/index.html              |  4 ++--
 docs/DataModels/DevLakeDomainLayerSchema/index.html |  4 ++--
 docs/EngineeringMetrics/index.html                  |  4 ++--
 docs/Glossary/index.html                            |  4 ++--
 docs/Overview/Architecture/index.html               |  4 ++--
 docs/Overview/Roadmap/index.html                    |  4 ++--
 docs/Overview/WhatIsDevLake/index.html              |  4 ++--
 docs/Plugins/dbt/index.html                         |  4 ++--
 docs/Plugins/feishu/index.html                      |  4 ++--
 docs/Plugins/gitee/index.html                       |  4 ++--
 docs/Plugins/gitextractor/index.html                |  4 ++--
 docs/Plugins/github/index.html                      |  4 ++--
 docs/Plugins/gitlab/index.html                      |  4 ++--
 docs/Plugins/jenkins/index.html                     |  4 ++--
 docs/Plugins/jira/index.html                        |  4 ++--
 docs/Plugins/refdiff/index.html                     |  4 ++--
 docs/Plugins/tapd/index.html                        |  4 ++--
 docs/QuickStart/DeveloperSetup/index.html           |  4 ++--
 docs/QuickStart/KubernetesSetup/index.html          |  4 ++--
 docs/QuickStart/LocalSetup/index.html               |  4 ++--
 docs/QuickStart/TemporalSetup/index.html            |  4 ++--
 docs/UserManuals/GRAFANA/index.html                 |  4 ++--
 docs/UserManuals/MIGRATIONS/index.html              |  4 ++--
 docs/UserManuals/NOTIFICATION/index.html            |  4 ++--
 .../create-pipeline-in-advanced-mode/index.html     |  4 ++--
 .../github-user-guide-v0.10.0/index.html            |  4 ++--
 docs/UserManuals/recurring-pipeline/index.html      |  4 ++--
 index.html                                          |  4 ++--
 markdown-page/index.html                            |  4 ++--
 zh/404.html                                         |  4 ++--
 zh/assets/js/4b72bbf5.5750ee38.js                   |  1 -
 zh/assets/js/4b72bbf5.c00d25d5.js                   |  1 +
 zh/assets/js/927d70e2.18446bbc.js                   |  1 -
 zh/assets/js/927d70e2.83610398.js                   |  1 +
 zh/assets/js/abc99659.1e06fb8c.js                   |  1 +
 zh/assets/js/abc99659.24b7d297.js                   |  1 -
 ...me~main.b20c3ed0.js => runtime~main.1ff142e0.js} |  2 +-
 .../index.html"                                     |  4 ++--
 .../apache-devlake-codebase-walkthrough/index.html  |  4 ++--
 zh/blog/apache-welcomes-devlake/index.html          |  4 ++--
 zh/blog/archive/index.html                          |  4 ++--
 zh/blog/atom.xml                                    | 17 +++++++++--------
 .../index.html                                      |  4 ++--
 zh/blog/deadlock-caused-by-using-ants/index.html    |  4 ++--
 zh/blog/how-DevLake-is-up-and-running/index.html    |  4 ++--
 zh/blog/how-apache-devlake-runs/index.html          |  4 ++--
 zh/blog/index.html                                  | 19 ++++++++++---------
 zh/blog/refdiff-calculate-commits-diff/index.html   | 21 +++++++++++----------
 zh/blog/rss.xml                                     | 17 +++++++++--------
 .../index.html                                      |  4 ++--
 zh/blog/tags/algorithm/index.html                   | 19 ++++++++++---------
 zh/blog/tags/ants/index.html                        |  4 ++--
 zh/blog/tags/apache/index.html                      |  4 ++--
 zh/blog/tags/codebase/index.html                    |  4 ++--
 zh/blog/tags/database/index.html                    |  4 ++--
 zh/blog/tags/devlake/index.html                     | 19 ++++++++++---------
 zh/blog/tags/graph/index.html                       | 19 ++++++++++---------
 zh/blog/tags/index.html                             |  4 ++--
 zh/blog/tags/postgresql/index.html                  |  4 ++--
 zh/blog/tags/refdiff/index.html                     | 19 ++++++++++---------
 zh/community/Team/index.html                        |  4 ++--
 zh/community/index.html                             |  4 ++--
 .../make-contribution/BlogSubmission/index.html     |  4 ++--
 .../contributor-growth-program/index.html           |  4 ++--
 .../development-workflow/index.html                 |  4 ++--
 .../fix-or-create-issues/index.html                 |  4 ++--
 zh/community/subscribe/index.html                   |  4 ++--
 .../AverageRequirementLeadTime/index.html           |  4 ++--
 zh/docs/Dashboards/CommitCountByAuthor/index.html   |  4 ++--
 zh/docs/Dashboards/DetailedBugInfo/index.html       |  4 ++--
 zh/docs/Dashboards/GitHubBasic/index.html           |  4 ++--
 .../index.html                                      |  4 ++--
 zh/docs/Dashboards/Jenkins/index.html               |  4 ++--
 zh/docs/Dashboards/WeeklyBugRetro/index.html        |  4 ++--
 zh/docs/DataModels/DataSupport/index.html           |  4 ++--
 .../DataModels/DevLakeDomainLayerSchema/index.html  |  4 ++--
 zh/docs/EngineeringMetrics/index.html               |  4 ++--
 zh/docs/Glossary/index.html                         |  4 ++--
 zh/docs/Overview/Architecture/index.html            |  4 ++--
 zh/docs/Overview/Roadmap/index.html                 |  4 ++--
 zh/docs/Overview/WhatIsDevLake/index.html           |  4 ++--
 zh/docs/Plugins/dbt/index.html                      |  4 ++--
 zh/docs/Plugins/feishu/index.html                   |  4 ++--
 zh/docs/Plugins/gitee/index.html                    |  4 ++--
 zh/docs/Plugins/gitextractor/index.html             |  4 ++--
 zh/docs/Plugins/github/index.html                   |  4 ++--
 zh/docs/Plugins/gitlab/index.html                   |  4 ++--
 zh/docs/Plugins/jenkins/index.html                  |  4 ++--
 zh/docs/Plugins/jira/index.html                     |  4 ++--
 zh/docs/Plugins/refdiff/index.html                  |  4 ++--
 zh/docs/Plugins/tapd/index.html                     |  4 ++--
 zh/docs/QuickStart/DeveloperSetup/index.html        |  4 ++--
 zh/docs/QuickStart/KubernetesSetup/index.html       |  4 ++--
 zh/docs/QuickStart/LocalSetup/index.html            |  4 ++--
 zh/docs/QuickStart/TemporalSetup/index.html         |  4 ++--
 zh/docs/UserManuals/GRAFANA/index.html              |  4 ++--
 zh/docs/UserManuals/MIGRATIONS/index.html           |  4 ++--
 zh/docs/UserManuals/NOTIFICATION/index.html         |  4 ++--
 .../create-pipeline-in-advanced-mode/index.html     |  4 ++--
 .../github-user-guide-v0.10.0/index.html            |  4 ++--
 zh/docs/UserManuals/recurring-pipeline/index.html   |  4 ++--
 zh/index.html                                       |  4 ++--
 zh/markdown-page/index.html                         |  4 ++--
 148 files changed, 402 insertions(+), 386 deletions(-)

diff --git a/404.html b/404.html
index f970f63..43a4b93 100644
--- a/404.html
+++ b/404.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/7452ddde.c9405d3d.js b/assets/js/7452ddde.c9405d3d.js
deleted file mode 100644
index f15b373..0000000
--- a/assets/js/7452ddde.c9405d3d.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/7452ddde.dfde32fb.js b/assets/js/7452ddde.dfde32fb.js
new file mode 100644
index 0000000..2e76f37
--- /dev/null
+++ b/assets/js/7452ddde.dfde32fb.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 u}});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/b2f554cd.a2a4230c.js b/assets/js/b2f554cd.a2a4230c.js
new file mode 100644
index 0000000..d9009fa
--- /dev/null
+++ b/assets/js/b2f554cd.a2a4230c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1477],{10:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"compatibility-of-apache-devLake-with-postgreSQL","metadata":{"permalink":"/blog/compatibility-of-apache-devLake-with-postgreSQL","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-23-compatibility-of-apache-devLake-with-postgreSQL/index.md","source":"@site/blog/2022-06-23-compatibility-of-apache-devLake-with-postgreSQL/ind [...]
\ No newline at end of file
diff --git a/assets/js/b2f554cd.c4a67510.js b/assets/js/b2f554cd.c4a67510.js
deleted file mode 100644
index 46f5dd4..0000000
--- a/assets/js/b2f554cd.c4a67510.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1477],{10:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"compatibility-of-apache-devLake-with-postgreSQL","metadata":{"permalink":"/blog/compatibility-of-apache-devLake-with-postgreSQL","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-23-compatibility-of-apache-devLake-with-postgreSQL/index.md","source":"@site/blog/2022-06-23-compatibility-of-apache-devLake-with-postgreSQL/ind [...]
\ No newline at end of file
diff --git a/assets/js/ea0b4130.047e3abd.js b/assets/js/ea0b4130.047e3abd.js
new file mode 100644
index 0000000..bb8f134
--- /dev/null
+++ b/assets/js/ea0b4130.047e3abd.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 u}});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/ea0b4130.2fe5cd3c.js b/assets/js/ea0b4130.2fe5cd3c.js
deleted file mode 100644
index e1b9546..0000000
--- a/assets/js/ea0b4130.2fe5cd3c.js
+++ /dev/null
@@ -1 +0,0 @@
-"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/runtime~main.bc11700f.js b/assets/js/runtime~main.d1d702e4.js
similarity index 97%
rename from assets/js/runtime~main.bc11700f.js
rename to assets/js/runtime~main.d1d702e4.js
index 668e00f..2afaa24 100644
--- a/assets/js/runtime~main.bc11700f.js
+++ b/assets/js/runtime~main.d1d702e4.js
@@ -1 +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
+!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 13cba22..45a0d8f 100644
--- a/blog/apache-devlake-codebase-walkthrough/index.html
+++ b/blog/apache-devlake-codebase-walkthrough/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 b8c717b..0905357 100644
--- a/blog/apache-welcomes-devlake/index.html
+++ b/blog/apache-welcomes-devlake/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 21a494c..8a983da 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/atom.xml b/blog/atom.xml
index 01480dc..37304b5 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -30,16 +30,17 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
         <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>来使用。< [...]
-当然,有的同学在这里可能又会产生一个问题:</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 [...]
+        <summary type="html"><![CDATA[本文作者:Nddtfjiang]]></summary>
+        <content type="html"><![CDATA[<p>本文作者:Nddtfjiang
+个人主页:<a href="https://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>,用户能迅速的判 [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>使用<c [...]
+从节点 <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)) [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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<!-- -->*<!-- -->lo [...]
         <author>
             <name>Nddtfjiang</name>
             <uri>http://nddtf.com/github</uri>
diff --git a/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html b/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
index 265c02d..07af387 100644
--- a/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
+++ b/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
@@ -6,7 +6,7 @@
 <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">Compatibility of Apache DevLake with 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/compatibility-of-apache-devLake-with-postgreSQL"><meta data-rh="true" name="docusaurus_locale" content="en"><meta da [...]
-<link rel="preload" href="/assets/js/runtime~main.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -21,7 +21,7 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
           <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/deadlock-caused-by-using-ants/index.html b/blog/deadlock-caused-by-using-ants/index.html
index 54c1950..cc94f96 100644
--- a/blog/deadlock-caused-by-using-ants/index.html
+++ b/blog/deadlock-caused-by-using-ants/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/how-DevLake-is-up-and-running/index.html b/blog/how-DevLake-is-up-and-running/index.html
index 7e05f37..406777c 100644
--- a/blog/how-DevLake-is-up-and-running/index.html
+++ b/blog/how-DevLake-is-up-and-running/index.html
@@ -6,7 +6,7 @@
 <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">How DevLake is Up and Running | 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-DevLake-is-up-and-running"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" c [...]
-<link rel="preload" href="/assets/js/runtime~main.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -19,7 +19,7 @@ Before we go through the pipeline process, we need to know the <a href="https://
           <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 4b7ab74..eaf265a 100644
--- a/blog/how-apache-devlake-runs/index.html
+++ b/blog/how-apache-devlake-runs/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 cee5e78..362a8ad 100644
--- a/blog/how-to-contribute-to-issues/index.html
+++ b/blog/how-to-contribute-to-issues/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 4d7653a..a26ec56 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -14,15 +14,16 @@
 <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" src="https://i.imgur.com/zaExAUG.png" class="img_E7b_"></p><p><img loading="lazy" src="https://i.imgur.com/BpZY8dN.png" class="img_E7b_"></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="inconsistent-definition-of-model-with-schema">Inconsistent definition of model with schema<a class="hash-link" href="#inconsistent-definition-of-model-with-schema" title="Direct link to heading">​</a></h3><p>For example, in the model definition, <code>GithubPullRequest.AuthorId</ [...]
 We finally decided to use two steps to achieve the <code>GROUP_CONCAT</code> function. First we used the simplest SQL query to get multiple pieces of the sorted data, and then used the code to group them.</p><p>After modification:</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines [...]
-We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
-当然,有的同学在这里可能又会产生一个问题:</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 [...]
+We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
+个人主页:<a href="https://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>,用户能迅速的判 [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>使用<c [...]
+从节点 <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)) [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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<!-- -->*<!-- -->lo [...]
 <!-- -->个人主页:<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" [...]
 这很有趣,它们几乎立刻就被拿走了......
@@ -43,7 +44,7 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
           <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/refdiff-calculate-commits-diff/index.html b/blog/refdiff-calculate-commits-diff/index.html
index e641857..487e261 100644
--- a/blog/refdiff-calculate-commits-diff/index.html
+++ b/blog/refdiff-calculate-commits-diff/index.html
@@ -5,28 +5,29 @@
 <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/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.bc11700f.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.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.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 [...]
+<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://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>,用户能迅速的判 [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>使用<c [...]
+从节点 <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)) [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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<!-- -->*<!-- -->lo [...]
         <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/rss.xml b/blog/rss.xml
index 6c30824..fe87ecd 100644
--- a/blog/rss.xml
+++ b/blog/rss.xml
@@ -27,16 +27,17 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
             <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>来使用。< [...]
-当然,有的同学在这里可能又会产生一个问题:</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 [...]
+            <description><![CDATA[本文作者:Nddtfjiang]]></description>
+            <content:encoded><![CDATA[<p>本文作者:Nddtfjiang
+个人主页:<a href="https://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>,用户能迅速的判 [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>使用<c [...]
+从节点 <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)) [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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<!-- -->*<!-- -->lo [...]
             <category>devlake</category>
             <category>refdiff</category>
             <category>algorithm</category>
diff --git a/blog/some-practices-of-supporting-postgresql/index.html b/blog/some-practices-of-supporting-postgresql/index.html
index 0481289..2ed264f 100644
--- a/blog/some-practices-of-supporting-postgresql/index.html
+++ b/blog/some-practices-of-supporting-postgresql/index.html
@@ -6,7 +6,7 @@
 <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 兼容 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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 6a2b1d8..083e38f 100644
--- a/blog/tags/algorithm/index.html
+++ b/blog/tags/algorithm/index.html
@@ -6,27 +6,28 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.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 [...]
+<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://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>,用户能迅速的判 [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>使用<c [...]
+从节点 <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)) [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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<!-- -->*<!-- -->lo [...]
         <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 4aa475c..a2546bb 100644
--- a/blog/tags/ants/index.html
+++ b/blog/tags/ants/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 3c4f3fd..7979942 100644
--- a/blog/tags/apache/index.html
+++ b/blog/tags/apache/index.html
@@ -6,7 +6,7 @@
 <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">4 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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 4457566..6f96ef0 100644
--- a/blog/tags/codebase/index.html
+++ b/blog/tags/codebase/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 36d3bb3..9209273 100644
--- a/blog/tags/database/index.html
+++ b/blog/tags/database/index.html
@@ -6,7 +6,7 @@
 <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">2 posts 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" co [...]
-<link rel="preload" href="/assets/js/runtime~main.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -23,7 +23,7 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
           <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 1dbb99b..1f90810 100644
--- a/blog/tags/devlake/index.html
+++ b/blog/tags/devlake/index.html
@@ -6,7 +6,7 @@
 <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">9 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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -14,15 +14,16 @@
 <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" src="https://i.imgur.com/zaExAUG.png" class="img_E7b_"></p><p><img loading="lazy" src="https://i.imgur.com/BpZY8dN.png" class="img_E7b_"></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="inconsistent-definition-of-model-with-schema">Inconsistent definition of model with schema<a class="hash-link" href="#inconsistent-definition-of-model-with-schema" title="Direct link to heading">​</a></h3><p>For example, in the model definition, <code>GithubPullRequest.AuthorId</ [...]
 We finally decided to use two steps to achieve the <code>GROUP_CONCAT</code> function. First we used the simplest SQL query to get multiple pieces of the sorted data, and then used the code to group them.</p><p>After modification:</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines [...]
-We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
-当然,有的同学在这里可能又会产生一个问题:</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 [...]
+We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
+个人主页:<a href="https://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>,用户能迅速的判 [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>使用<c [...]
+从节点 <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)) [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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<!-- -->*<!-- -->lo [...]
 <!-- -->个人主页:<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" [...]
 这很有趣,它们几乎立刻就被拿走了......
@@ -43,7 +44,7 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
           <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 6fd6e76..6efdecd 100644
--- a/blog/tags/graph/index.html
+++ b/blog/tags/graph/index.html
@@ -6,27 +6,28 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.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 [...]
+<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://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>,用户能迅速的判 [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>使用<c [...]
+从节点 <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)) [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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<!-- -->*<!-- -->lo [...]
         <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 74491f0..816386f 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 394ca55..c73987c 100644
--- a/blog/tags/postgresql/index.html
+++ b/blog/tags/postgresql/index.html
@@ -6,7 +6,7 @@
 <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">2 posts 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:language [...]
-<link rel="preload" href="/assets/js/runtime~main.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -23,7 +23,7 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
           <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 ec45c70..dfc4c2e 100644
--- a/blog/tags/refdiff/index.html
+++ b/blog/tags/refdiff/index.html
@@ -6,27 +6,28 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.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 [...]
+<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://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>,用户能迅速的判 [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>使用<c [...]
+从节点 <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)) [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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<!-- -->*<!-- -->lo [...]
         <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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/Team/index.html b/community/Team/index.html
index edd4316..82347c8 100644
--- a/community/Team/index.html
+++ b/community/Team/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index 970d866..32c90f3 100644
--- a/community/index.html
+++ b/community/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 72d1ef6..4d9c7ec 100644
--- a/community/make-contribution/BlogSubmission/index.html
+++ b/community/make-contribution/BlogSubmission/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 4cf3191..0a34ec9 100644
--- a/community/make-contribution/contributor-growth-program/index.html
+++ b/community/make-contribution/contributor-growth-program/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 a96d332..39ad625 100644
--- a/community/make-contribution/development-workflow/index.html
+++ b/community/make-contribution/development-workflow/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 3e3ca56..1d81725 100644
--- a/community/make-contribution/fix-or-create-issues/index.html
+++ b/community/make-contribution/fix-or-create-issues/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/subscribe/index.html b/community/subscribe/index.html
index 0188e3d..150c9ac 100644
--- a/community/subscribe/index.html
+++ b/community/subscribe/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 42a43d4..c0d7195 100644
--- a/docs/Dashboards/AverageRequirementLeadTime/index.html
+++ b/docs/Dashboards/AverageRequirementLeadTime/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 25a17b2..422dc3e 100644
--- a/docs/Dashboards/CommitCountByAuthor/index.html
+++ b/docs/Dashboards/CommitCountByAuthor/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 34542ff..6470407 100644
--- a/docs/Dashboards/DetailedBugInfo/index.html
+++ b/docs/Dashboards/DetailedBugInfo/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 c0abf14..63ccc1c 100644
--- a/docs/Dashboards/GitHubBasic/index.html
+++ b/docs/Dashboards/GitHubBasic/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 61e1a6a..075b774 100644
--- a/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
+++ b/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 160c809..41861df 100644
--- a/docs/Dashboards/Jenkins/index.html
+++ b/docs/Dashboards/Jenkins/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 183eaf2..f236780 100644
--- a/docs/Dashboards/WeeklyBugRetro/index.html
+++ b/docs/Dashboards/WeeklyBugRetro/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 8e14418..f04a1c3 100644
--- a/docs/DataModels/DataSupport/index.html
+++ b/docs/DataModels/DataSupport/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 0076909..3e294cb 100644
--- a/docs/DataModels/DevLakeDomainLayerSchema/index.html
+++ b/docs/DataModels/DevLakeDomainLayerSchema/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/EngineeringMetrics/index.html b/docs/EngineeringMetrics/index.html
index 606ab0d..57405e8 100644
--- a/docs/EngineeringMetrics/index.html
+++ b/docs/EngineeringMetrics/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Glossary/index.html b/docs/Glossary/index.html
index 7b2e9e9..0f8e252 100644
--- a/docs/Glossary/index.html
+++ b/docs/Glossary/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 db86065..398836d 100644
--- a/docs/Overview/Architecture/index.html
+++ b/docs/Overview/Architecture/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 2ae68df..8cb7dba 100644
--- a/docs/Overview/Roadmap/index.html
+++ b/docs/Overview/Roadmap/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 957f85f..c6ac6cb 100644
--- a/docs/Overview/WhatIsDevLake/index.html
+++ b/docs/Overview/WhatIsDevLake/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 7465b22..d344c94 100644
--- a/docs/Plugins/dbt/index.html
+++ b/docs/Plugins/dbt/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 b10ac5d..8fdfd43 100644
--- a/docs/Plugins/feishu/index.html
+++ b/docs/Plugins/feishu/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 657fc97..4ae73f0 100644
--- a/docs/Plugins/gitee/index.html
+++ b/docs/Plugins/gitee/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 d91fc80..683898c 100644
--- a/docs/Plugins/gitextractor/index.html
+++ b/docs/Plugins/gitextractor/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 d2a156c..99b932b 100644
--- a/docs/Plugins/github/index.html
+++ b/docs/Plugins/github/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 0b1e892..f35ddf7 100644
--- a/docs/Plugins/gitlab/index.html
+++ b/docs/Plugins/gitlab/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 3c5050c..9d6df3c 100644
--- a/docs/Plugins/jenkins/index.html
+++ b/docs/Plugins/jenkins/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 660106f..8b15361 100644
--- a/docs/Plugins/jira/index.html
+++ b/docs/Plugins/jira/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 4b54ca4..db69711 100644
--- a/docs/Plugins/refdiff/index.html
+++ b/docs/Plugins/refdiff/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 0c732ab..ac96405 100644
--- a/docs/Plugins/tapd/index.html
+++ b/docs/Plugins/tapd/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 2d03f14..9bdc8d8 100644
--- a/docs/QuickStart/DeveloperSetup/index.html
+++ b/docs/QuickStart/DeveloperSetup/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 2be0573..5493cc9 100644
--- a/docs/QuickStart/KubernetesSetup/index.html
+++ b/docs/QuickStart/KubernetesSetup/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 f867054..a2ff3b9 100644
--- a/docs/QuickStart/LocalSetup/index.html
+++ b/docs/QuickStart/LocalSetup/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 156096a..78e4ddb 100644
--- a/docs/QuickStart/TemporalSetup/index.html
+++ b/docs/QuickStart/TemporalSetup/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 bb8b25c..3ad24fc 100644
--- a/docs/UserManuals/GRAFANA/index.html
+++ b/docs/UserManuals/GRAFANA/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 cee2921..b79580b 100644
--- a/docs/UserManuals/MIGRATIONS/index.html
+++ b/docs/UserManuals/MIGRATIONS/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 fb881a0..e23c8bc 100644
--- a/docs/UserManuals/NOTIFICATION/index.html
+++ b/docs/UserManuals/NOTIFICATION/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 aa592ae..bb8fab1 100644
--- a/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
+++ b/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 d541cec..cec11da 100644
--- a/docs/UserManuals/github-user-guide-v0.10.0/index.html
+++ b/docs/UserManuals/github-user-guide-v0.10.0/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.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 ad5b84d..4480780 100644
--- a/docs/UserManuals/recurring-pipeline/index.html
+++ b/docs/UserManuals/recurring-pipeline/index.html
@@ -8,7 +8,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 3432ee7..1da32a2 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/markdown-page/index.html b/markdown-page/index.html
index d93f8c1..24e7f10 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -6,7 +6,7 @@
 <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.bc11700f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d1d702e4.js" as="script">
 <link rel="preload" href="/assets/js/main.3770b7a7.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.bc11700f.js"></script>
+<script src="/assets/js/runtime~main.d1d702e4.js"></script>
 <script src="/assets/js/main.3770b7a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/404.html b/zh/404.html
index 8ac3d8f..01248b1 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/assets/js/4b72bbf5.5750ee38.js b/zh/assets/js/4b72bbf5.5750ee38.js
deleted file mode 100644
index 7ed1ac8..0000000
--- a/zh/assets/js/4b72bbf5.5750ee38.js
+++ /dev/null
@@ -1 +0,0 @@
-"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/4b72bbf5.c00d25d5.js b/zh/assets/js/4b72bbf5.c00d25d5.js
new file mode 100644
index 0000000..0a87757
--- /dev/null
+++ b/zh/assets/js/4b72bbf5.c00d25d5.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 u}});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/927d70e2.18446bbc.js b/zh/assets/js/927d70e2.18446bbc.js
deleted file mode 100644
index 818aa2f..0000000
--- a/zh/assets/js/927d70e2.18446bbc.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1045],{2190:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"compatibility-of-apache-devLake-with-postgreSQL","metadata":{"permalink":"/zh/blog/compatibility-of-apache-devLake-with-postgreSQL","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-23-compatibility-of-apache-devLake-with-postgreSQL/index.md","source":"@site/blog/2022-06-23-compatibility-of-apache-devLake-with-postgreSQ [...]
\ No newline at end of file
diff --git a/zh/assets/js/927d70e2.83610398.js b/zh/assets/js/927d70e2.83610398.js
new file mode 100644
index 0000000..650aa3d
--- /dev/null
+++ b/zh/assets/js/927d70e2.83610398.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1045],{2190:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"compatibility-of-apache-devLake-with-postgreSQL","metadata":{"permalink":"/zh/blog/compatibility-of-apache-devLake-with-postgreSQL","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-23-compatibility-of-apache-devLake-with-postgreSQL/index.md","source":"@site/blog/2022-06-23-compatibility-of-apache-devLake-with-postgreSQ [...]
\ No newline at end of file
diff --git a/zh/assets/js/abc99659.1e06fb8c.js b/zh/assets/js/abc99659.1e06fb8c.js
new file mode 100644
index 0000000..1ccfbe8
--- /dev/null
+++ b/zh/assets/js/abc99659.1e06fb8c.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 u}});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.24b7d297.js b/zh/assets/js/abc99659.24b7d297.js
deleted file mode 100644
index 773f9b2..0000000
--- a/zh/assets/js/abc99659.24b7d297.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/runtime~main.b20c3ed0.js b/zh/assets/js/runtime~main.1ff142e0.js
similarity index 76%
rename from zh/assets/js/runtime~main.b20c3ed0.js
rename to zh/assets/js/runtime~main.1ff142e0.js
index ef07081..f96237d 100644
--- a/zh/assets/js/runtime~main.b20c3ed0.js
+++ b/zh/assets/js/runtime~main.1ff142e0.js
@@ -1 +1 @@
-!function(){"use strict";var e,a,c,f,b,d={},t={};function n(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return d[e].call(c.exports,c,c.exports,n),c.loaded=!0,c.exports}n.m=d,n.c=t,e=[],n.O=function(a,c,f,b){if(!c){var d=1/0;for(u=0;u<e.length;u++){c=e[u][0],f=e[u][1],b=e[u][2];for(var t=!0,r=0;r<c.length;r++)(!1&b||d>=b)&&Object.keys(n.O).every((function(e){return n.O[e](c[r])}))?c.splice(r--,1):(t=!1,b<d&&(d=b));if(t){e.splice(u--,1);var o=f();voi [...]
\ No newline at end of file
+!function(){"use strict";var e,a,c,f,d,b={},t={};function n(e){var a=t[e];if(void 0!==a)return a.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(a,c,f,d){if(!c){var b=1/0;for(u=0;u<e.length;u++){c=e[u][0],f=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=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 e4a71f6..e758d98 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,7 +6,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 eb14bd8..65b7c95 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 16cc66c..6ca4c31 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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>数据源自定义: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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 741c093..078227e 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/atom.xml b/zh/blog/atom.xml
index 3ad9702..9154d11 100644
--- a/zh/blog/atom.xml
+++ b/zh/blog/atom.xml
@@ -30,16 +30,17 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
         <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 [...]
-当然,有的同学在这里可能又会产生一个问题:</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 [...]
+        <summary type="html"><![CDATA[本文作者:Nddtfjiang]]></summary>
+        <content type="html"><![CDATA[<p>本文作者:Nddtfjiang
+个人主页:<a href="https://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>分支/ [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>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 [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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>计 [...]
         <author>
             <name>Nddtfjiang</name>
             <uri>http://nddtf.com/github</uri>
diff --git a/zh/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html b/zh/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
index 2aac117..17ea2e8 100644
--- a/zh/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
+++ b/zh/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
@@ -6,7 +6,7 @@
 <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">Compatibility of Apache DevLake with 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/compatibility-of-apache-devLake-with-postgreSQL"><meta data-rh="true" name="docusaurus_locale" content="zh"><m [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -15,7 +15,7 @@
 <img loading="lazy" src="https://i.imgur.com/zaExAUG.png" class="img_E7b_"></p><p><img loading="lazy" src="https://i.imgur.com/BpZY8dN.png" class="img_E7b_"></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="inconsistent-definition-of-model-with-schema">Inconsistent definition of model with schema<a class="hash-link" href="#inconsistent-definition-of-model-with-schema" title="标题的直接链接">​</a></h3><p>For example, in the model definition, <code>GithubPullRequest.AuthorId</code> is of the [...]
 We finally decided to use two steps to achieve the <code>GROUP_CONCAT</code> function. First we used the simplest SQL query to get multiple pieces of the sorted data, and then used the code to group them.</p><p>After modification:</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines [...]
 We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
-<script src="/zh/assets/js/runtime~main.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/deadlock-caused-by-using-ants/index.html b/zh/blog/deadlock-caused-by-using-ants/index.html
index 76ac408..c86e29d 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/how-DevLake-is-up-and-running/index.html b/zh/blog/how-DevLake-is-up-and-running/index.html
index 6f3c31f..42731d0 100644
--- a/zh/blog/how-DevLake-is-up-and-running/index.html
+++ b/zh/blog/how-DevLake-is-up-and-running/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">How DevLake is Up and Running | 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-DevLake-is-up-and-running"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_ [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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 [...]
 Before we go through the pipeline process, we need to know the <a href="https://devlake.apache.org/docs/Glossary#blueprints" target="_blank" rel="noopener noreferrer">Blueprint</a> first.</p><p>Blueprint is a timed task that contains all the subtasks and plans that need to be executed. Each execution record of Blueprint is a historical run, AKA Pipeline. Which presents a trigger for DevLack to complete one or more data collection transformation tasks through one or more plugins.</p><p><i [...]
-<script src="/zh/assets/js/runtime~main.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 81c5350..70f3b97 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/index.html b/zh/blog/index.html
index c5d7ef5..ac4023d 100644
--- a/zh/blog/index.html
+++ b/zh/blog/index.html
@@ -6,7 +6,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -14,15 +14,16 @@
 <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://i.imgur.com/zaExAUG.png" class="img_E7b_"></p><p><img loading="lazy" src="https://i.imgur.com/BpZY8dN.png" class="img_E7b_"></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="inconsistent-definition-of-model-with-schema">Inconsistent definition of model with schema<a class="hash-link" href="#inconsistent-definition-of-model-with-schema" title="标题的直接链接">​</a></h3><p>For example, in the model definition, <code>GithubPullRequest.AuthorId</code> is of the [...]
 We finally decided to use two steps to achieve the <code>GROUP_CONCAT</code> function. First we used the simplest SQL query to get multiple pieces of the sorted data, and then used the code to group them.</p><p>After modification:</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines [...]
-We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
-当然,有的同学在这里可能又会产生一个问题:</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 [...]
+We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
+个人主页:<a href="https://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>分支/ [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>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 [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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>计 [...]
 <!-- -->个人主页:<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" [...]
 这很有趣,它们几乎立刻就被拿走了......
@@ -37,7 +38,7 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
 不不不,你不是为我们写代码,你是为社区里的每个人写代码,你是为自己写代码。
 为了提高你的技能,为了学习如何与他人合作。而对于那些做出重大贡献的人,
 我们为您提供一个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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/refdiff-calculate-commits-diff/index.html b/zh/blog/refdiff-calculate-commits-diff/index.html
index 5eed379..2b034d5 100644
--- a/zh/blog/refdiff-calculate-commits-diff/index.html
+++ b/zh/blog/refdiff-calculate-commits-diff/index.html
@@ -5,22 +5,23 @@
 <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/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.b20c3ed0.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.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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 [...]
+<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://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>分支/ [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>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.b20c3ed0.js"></script>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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>计 [...]
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/rss.xml b/zh/blog/rss.xml
index 16a8ceb..8c6de96 100644
--- a/zh/blog/rss.xml
+++ b/zh/blog/rss.xml
@@ -27,16 +27,17 @@ We changed <code>system</code> to <code>is_system</code> to avoid the usage of b
             <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 [...]
-当然,有的同学在这里可能又会产生一个问题:</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 [...]
+            <description><![CDATA[本文作者:Nddtfjiang]]></description>
+            <content:encoded><![CDATA[<p>本文作者:Nddtfjiang
+个人主页:<a href="https://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>分支/ [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>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 [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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>计 [...]
             <category>devlake</category>
             <category>refdiff</category>
             <category>algorithm</category>
diff --git a/zh/blog/some-practices-of-supporting-postgresql/index.html b/zh/blog/some-practices-of-supporting-postgresql/index.html
index 127d61c..cde91c9 100644
--- a/zh/blog/some-practices-of-supporting-postgresql/index.html
+++ b/zh/blog/some-practices-of-supporting-postgresql/index.html
@@ -6,7 +6,7 @@
 <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 兼容 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -14,7 +14,7 @@
 <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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 3d26cbd..c424f24 100644
--- a/zh/blog/tags/algorithm/index.html
+++ b/zh/blog/tags/algorithm/index.html
@@ -6,21 +6,22 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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 [...]
+<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://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>分支/ [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>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.b20c3ed0.js"></script>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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>计 [...]
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 a6e0d4e..1e1ebe6 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 6575368..c0436b1 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">3 篇博文 含有标签「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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 ce764a9..ea15435 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 24de8ad..7ba5864 100644
--- a/zh/blog/tags/database/index.html
+++ b/zh/blog/tags/database/index.html
@@ -6,7 +6,7 @@
 <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 篇博文 含有标签「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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -17,7 +17,7 @@ We finally decided to use two steps to achieve the <code>GROUP_CONCAT</code> fun
 We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
 <!-- -->个人主页:<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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 b878a90..8207c95 100644
--- a/zh/blog/tags/devlake/index.html
+++ b/zh/blog/tags/devlake/index.html
@@ -6,7 +6,7 @@
 <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">8 篇博文 含有标签「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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -14,18 +14,19 @@
 <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://i.imgur.com/zaExAUG.png" class="img_E7b_"></p><p><img loading="lazy" src="https://i.imgur.com/BpZY8dN.png" class="img_E7b_"></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="inconsistent-definition-of-model-with-schema">Inconsistent definition of model with schema<a class="hash-link" href="#inconsistent-definition-of-model-with-schema" title="标题的直接链接">​</a></h3><p>For example, in the model definition, <code>GithubPullRequest.AuthorId</code> is of the [...]
 We finally decided to use two steps to achieve the <code>GROUP_CONCAT</code> function. First we used the simplest SQL query to get multiple pieces of the sorted data, and then used the code to group them.</p><p>After modification:</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines [...]
-We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
-当然,有的同学在这里可能又会产生一个问题:</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 [...]
+We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
+个人主页:<a href="https://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>分支/ [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>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 [...]
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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>计 [...]
 <!-- -->个人主页:<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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 238ebc5..b6a32da 100644
--- a/zh/blog/tags/graph/index.html
+++ b/zh/blog/tags/graph/index.html
@@ -6,21 +6,22 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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 [...]
+<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://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>分支/ [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>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.b20c3ed0.js"></script>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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>计 [...]
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 25f6a3e..d898b5f 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 817a4a4..e9af6de 100644
--- a/zh/blog/tags/postgresql/index.html
+++ b/zh/blog/tags/postgresql/index.html
@@ -6,7 +6,7 @@
 <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 篇博文 含有标签「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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -17,7 +17,7 @@ We finally decided to use two steps to achieve the <code>GROUP_CONCAT</code> fun
 We changed <code>system</code> to <code>is_system</code> to avoid the usage of backticks.</p><div class="codeBlockContainer_I0IT language-sql= theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-sql= codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">db.Where(&quot;merge_request_id = ? AND is_system = ?&quot;,  [...]
 <!-- -->个人主页:<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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 4936ce0..6bdde39 100644
--- a/zh/blog/tags/refdiff/index.html
+++ b/zh/blog/tags/refdiff/index.html
@@ -6,21 +6,22 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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 [...]
+<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://nddtf.com/github" target="_blank" rel="noopener noreferrer">https://nddtf.com/github</a></p><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>分支/ [...]
+当然,有的同学在这里可能又会产生一个问题:</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>
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</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>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.b20c3ed0.js"></script>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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>计 [...]
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 ae45647..4591d3f 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/index.html b/zh/community/index.html
index 8625be2..03c8be2 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 d79f3dd..5aeaae2 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 93a07c5..45ee498 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 076a423..9a67790 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 b0a0afd..3b8330d 100644
--- a/zh/community/make-contribution/fix-or-create-issues/index.html
+++ b/zh/community/make-contribution/fix-or-create-issues/index.html
@@ -6,7 +6,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 379d92c..903ef9d 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 1134e87..ef3f714 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 1577c48..bfeb0b9 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 0283c54..afd2387 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 dc35ca3..6ccff47 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 947d3d6..5b6fe2c 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 a5e7c0f..9be91b1 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 4904d83..96936d0 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 dbfd3e4..c13f0d5 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 301e47f..cc1eee1 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 7a1b4a4..94cd3b1 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 570fddc..242cf16 100644
--- a/zh/docs/Glossary/index.html
+++ b/zh/docs/Glossary/index.html
@@ -8,7 +8,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -16,7 +16,7 @@
 <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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 a51ddae..2c2fbe2 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 493c681..e858fb0 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 0b4ed9c..56baa52 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 03787e0..da75137 100644
--- a/zh/docs/Plugins/dbt/index.html
+++ b/zh/docs/Plugins/dbt/index.html
@@ -8,7 +8,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 6cb12e0..4168bb2 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 fe50c99..4d6f3fe 100644
--- a/zh/docs/Plugins/gitee/index.html
+++ b/zh/docs/Plugins/gitee/index.html
@@ -8,7 +8,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -16,7 +16,7 @@
 <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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 8e9ad64..1c974ce 100644
--- a/zh/docs/Plugins/gitextractor/index.html
+++ b/zh/docs/Plugins/gitextractor/index.html
@@ -8,7 +8,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -16,7 +16,7 @@
 <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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 61fc5dd..653ecc1 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 25fc11b..fc3b288 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 5b00c83..4d91477 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 6075537..65a958c 100644
--- a/zh/docs/Plugins/jira/index.html
+++ b/zh/docs/Plugins/jira/index.html
@@ -8,7 +8,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 8e65cd6..27b5528 100644
--- a/zh/docs/Plugins/refdiff/index.html
+++ b/zh/docs/Plugins/refdiff/index.html
@@ -8,7 +8,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -16,7 +16,7 @@
 <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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 bab051b..ba0a07a 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 ccd10d1..7a8ab6a 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 ffa7bea..efce4e1 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 52d4459..a4eefab 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 931f966..6df92f8 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 ae0feb2..31f8b45 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 afc535d..95dd56b 100644
--- a/zh/docs/UserManuals/MIGRATIONS/index.html
+++ b/zh/docs/UserManuals/MIGRATIONS/index.html
@@ -8,7 +8,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 65d86a8..978bae9 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 e347e45..54ded25 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 a54ba98..711ab8f 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,7 +8,7 @@
 <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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 3db1857..18f8dd9 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/index.html b/zh/index.html
index d89a0bb..04fec2e 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.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 027db21..36fbb5a 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.b20c3ed0.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.1ff142e0.js" as="script">
 <link rel="preload" href="/zh/assets/js/main.4b5d6cf1.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.b20c3ed0.js"></script>
+<script src="/zh/assets/js/runtime~main.1ff142e0.js"></script>
 <script src="/zh/assets/js/main.4b5d6cf1.js"></script>
 </body>
 </html>
\ No newline at end of file