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/23 02:12:29 UTC

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

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 83d72c7  deploy: fe30aaa7b21bedfc978a641319717191c768fc68
83d72c7 is described below

commit 83d72c757a930783f3ee05724f76f3ceeb271885
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Thu Jun 23 02:12:24 2022 +0000

    deploy: fe30aaa7b21bedfc978a641319717191c768fc68
---
 404.html                                           |  8 +++----
 assets/js/016d9cf9.1b44aadc.js                     |  1 +
 .../{312e4254.cebef498.js => 312e4254.5d526d83.js} |  2 +-
 .../{527c8e33.4ffa24f6.js => 527c8e33.bb655eb4.js} |  2 +-
 .../{5bf012c0.c4f7f173.js => 5bf012c0.23e69e04.js} |  2 +-
 assets/js/7452ddde.c0e73ebf.js                     |  1 -
 assets/js/7452ddde.c9405d3d.js                     |  1 +
 .../{7fec31dd.a04633e9.js => 7fec31dd.8eb144ed.js} |  2 +-
 .../{814f3328.9ffefc6a.js => 814f3328.6bef3880.js} |  2 +-
 .../{9c954eb0.86fadcc8.js => 9c954eb0.ea9d77d3.js} |  2 +-
 assets/js/a7023ddc.2de0ee2f.js                     |  1 -
 assets/js/a7023ddc.b5af480b.js                     |  1 +
 .../{b2b675dd.27752387.js => b2b675dd.cb29616a.js} |  2 +-
 assets/js/b2f554cd.b1efd7c3.js                     |  1 -
 assets/js/b2f554cd.e6710845.js                     |  1 +
 assets/js/c8005641.416a0b91.js                     |  1 +
 assets/js/ea0b4130.2fe5cd3c.js                     |  1 +
 assets/js/ea0b4130.8d627b17.js                     |  1 -
 .../{f3810852.4360a999.js => f3810852.d9633325.js} |  2 +-
 assets/js/main.0cecb672.js                         |  2 --
 assets/js/main.25452f27.js                         |  2 ++
 ...js.LICENSE.txt => main.25452f27.js.LICENSE.txt} |  0
 assets/js/runtime~main.84961899.js                 |  1 -
 assets/js/runtime~main.b496e449.js                 |  1 +
 .../apache-devlake-codebase-walkthrough/index.html | 10 ++++----
 blog/apache-welcomes-devlake/index.html            | 10 ++++----
 blog/archive/index.html                            | 10 ++++----
 blog/atom.xml                                      | 20 +++++++++++++++-
 .../index.html                                     | 27 ++++++++++++++++++++++
 blog/deadlock-caused-by-using-ants/index.html      | 10 ++++----
 blog/how-apache-devlake-runs/index.html            | 10 ++++----
 blog/how-to-contribute-to-issues/index.html        | 10 ++++----
 blog/index.html                                    | 13 +++++++----
 blog/refdiff-calculate-commits-diff/index.html     | 12 +++++-----
 blog/rss.xml                                       | 16 ++++++++++++-
 .../index.html                                     | 10 ++++----
 blog/tags/algorithm/index.html                     | 10 ++++----
 blog/tags/ants/index.html                          | 10 ++++----
 blog/tags/apache/index.html                        | 10 ++++----
 blog/tags/codebase/index.html                      | 10 ++++----
 blog/tags/database/index.html                      | 15 +++++++-----
 blog/tags/devlake/index.html                       | 15 +++++++-----
 blog/tags/graph/index.html                         | 10 ++++----
 blog/tags/index.html                               | 10 ++++----
 blog/tags/postgresql/index.html                    | 15 +++++++-----
 blog/tags/refdiff/index.html                       | 10 ++++----
 community/Team/index.html                          |  8 +++----
 community/index.html                               |  8 +++----
 .../make-contribution/BlogSubmission/index.html    |  8 +++----
 .../contributor-growth-program/index.html          |  8 +++----
 .../development-workflow/index.html                |  8 +++----
 .../fix-or-create-issues/index.html                |  8 +++----
 community/subscribe/index.html                     |  8 +++----
 .../AverageRequirementLeadTime/index.html          |  8 +++----
 docs/Dashboards/CommitCountByAuthor/index.html     |  8 +++----
 docs/Dashboards/DetailedBugInfo/index.html         |  8 +++----
 docs/Dashboards/GitHubBasic/index.html             |  8 +++----
 .../index.html                                     |  8 +++----
 docs/Dashboards/Jenkins/index.html                 |  8 +++----
 docs/Dashboards/WeeklyBugRetro/index.html          |  8 +++----
 docs/DataModels/DataSupport/index.html             |  8 +++----
 .../DataModels/DevLakeDomainLayerSchema/index.html |  8 +++----
 docs/EngineeringMetrics/index.html                 |  8 +++----
 docs/Glossary/index.html                           |  8 +++----
 docs/Overview/Architecture/index.html              |  8 +++----
 docs/Overview/Roadmap/index.html                   |  8 +++----
 docs/Overview/WhatIsDevLake/index.html             |  8 +++----
 docs/Plugins/dbt/index.html                        |  8 +++----
 docs/Plugins/feishu/index.html                     |  8 +++----
 docs/Plugins/gitee/index.html                      |  8 +++----
 docs/Plugins/gitextractor/index.html               |  8 +++----
 docs/Plugins/github/index.html                     |  8 +++----
 docs/Plugins/gitlab/index.html                     |  8 +++----
 docs/Plugins/jenkins/index.html                    |  8 +++----
 docs/Plugins/jira/index.html                       |  8 +++----
 docs/Plugins/refdiff/index.html                    |  8 +++----
 docs/Plugins/tapd/index.html                       |  8 +++----
 docs/QuickStart/DeveloperSetup/index.html          |  8 +++----
 docs/QuickStart/KubernetesSetup/index.html         |  8 +++----
 docs/QuickStart/LocalSetup/index.html              |  8 +++----
 docs/QuickStart/TemporalSetup/index.html           |  8 +++----
 docs/UserManuals/GRAFANA/index.html                |  8 +++----
 docs/UserManuals/MIGRATIONS/index.html             |  8 +++----
 docs/UserManuals/NOTIFICATION/index.html           |  8 +++----
 .../create-pipeline-in-advanced-mode/index.html    |  8 +++----
 .../github-user-guide-v0.10.0/index.html           |  8 +++----
 docs/UserManuals/recurring-pipeline/index.html     |  8 +++----
 index.html                                         |  8 +++----
 markdown-page/index.html                           |  8 +++----
 sitemap.xml                                        |  2 +-
 zh/404.html                                        |  8 +++----
 zh/assets/js/016d9cf9.413fcedc.js                  |  1 +
 .../{3a332aed.4767b7f2.js => 3a332aed.8d58fad8.js} |  2 +-
 zh/assets/js/4b72bbf5.4f4f3dc7.js                  |  1 -
 zh/assets/js/4b72bbf5.5750ee38.js                  |  1 +
 .../{5baeb61d.6a650f91.js => 5baeb61d.df4b5925.js} |  2 +-
 .../{6b13107a.226078bf.js => 6b13107a.8facde99.js} |  2 +-
 zh/assets/js/814f3328.58e887e2.js                  |  1 -
 zh/assets/js/814f3328.644446bb.js                  |  1 +
 zh/assets/js/927d70e2.261294b3.js                  |  1 -
 zh/assets/js/927d70e2.6ea59dc0.js                  |  1 +
 .../{96f1ac7f.239032a1.js => 96f1ac7f.5dde03fa.js} |  2 +-
 .../{a68c8982.522fac48.js => a68c8982.a8ab784b.js} |  2 +-
 zh/assets/js/abc99659.24b7d297.js                  |  1 +
 zh/assets/js/abc99659.f4a5ab9d.js                  |  1 -
 zh/assets/js/bfb16af5.5f1cc6cc.js                  |  1 +
 zh/assets/js/bfb16af5.fa9cee1b.js                  |  1 -
 zh/assets/js/c8005641.d6c7028b.js                  |  1 +
 .../{d150864b.f60bd97d.js => d150864b.bf9bd654.js} |  2 +-
 .../{e398a6ca.796dd263.js => e398a6ca.13f3579f.js} |  2 +-
 zh/assets/js/main.373fbedc.js                      |  2 --
 zh/assets/js/main.e63c53b2.js                      |  2 ++
 ...js.LICENSE.txt => main.e63c53b2.js.LICENSE.txt} |  0
 zh/assets/js/runtime~main.1b237011.js              |  1 -
 zh/assets/js/runtime~main.ff791755.js              |  1 +
 .../index.html"                                    | 10 ++++----
 .../apache-devlake-codebase-walkthrough/index.html | 10 ++++----
 zh/blog/apache-welcomes-devlake/index.html         | 10 ++++----
 zh/blog/archive/index.html                         | 10 ++++----
 zh/blog/atom.xml                                   | 20 +++++++++++++++-
 .../index.html                                     | 21 +++++++++++++++++
 zh/blog/deadlock-caused-by-using-ants/index.html   | 10 ++++----
 zh/blog/how-apache-devlake-runs/index.html         | 10 ++++----
 zh/blog/index.html                                 | 13 +++++++----
 zh/blog/refdiff-calculate-commits-diff/index.html  | 12 +++++-----
 zh/blog/rss.xml                                    | 16 ++++++++++++-
 .../index.html                                     | 10 ++++----
 zh/blog/tags/algorithm/index.html                  | 10 ++++----
 zh/blog/tags/ants/index.html                       | 10 ++++----
 zh/blog/tags/apache/index.html                     | 10 ++++----
 zh/blog/tags/codebase/index.html                   | 10 ++++----
 zh/blog/tags/database/index.html                   | 15 +++++++-----
 zh/blog/tags/devlake/index.html                    | 15 +++++++-----
 zh/blog/tags/graph/index.html                      | 10 ++++----
 zh/blog/tags/index.html                            | 10 ++++----
 zh/blog/tags/postgresql/index.html                 | 15 +++++++-----
 zh/blog/tags/refdiff/index.html                    | 10 ++++----
 zh/community/Team/index.html                       |  8 +++----
 zh/community/index.html                            |  8 +++----
 .../make-contribution/BlogSubmission/index.html    |  8 +++----
 .../contributor-growth-program/index.html          |  8 +++----
 .../development-workflow/index.html                |  8 +++----
 .../fix-or-create-issues/index.html                |  8 +++----
 zh/community/subscribe/index.html                  |  8 +++----
 .../AverageRequirementLeadTime/index.html          |  8 +++----
 zh/docs/Dashboards/CommitCountByAuthor/index.html  |  8 +++----
 zh/docs/Dashboards/DetailedBugInfo/index.html      |  8 +++----
 zh/docs/Dashboards/GitHubBasic/index.html          |  8 +++----
 .../index.html                                     |  8 +++----
 zh/docs/Dashboards/Jenkins/index.html              |  8 +++----
 zh/docs/Dashboards/WeeklyBugRetro/index.html       |  8 +++----
 zh/docs/DataModels/DataSupport/index.html          |  8 +++----
 .../DataModels/DevLakeDomainLayerSchema/index.html |  8 +++----
 zh/docs/EngineeringMetrics/index.html              |  8 +++----
 zh/docs/Glossary/index.html                        |  8 +++----
 zh/docs/Overview/Architecture/index.html           |  8 +++----
 zh/docs/Overview/Roadmap/index.html                |  8 +++----
 zh/docs/Overview/WhatIsDevLake/index.html          |  8 +++----
 zh/docs/Plugins/dbt/index.html                     |  8 +++----
 zh/docs/Plugins/feishu/index.html                  |  8 +++----
 zh/docs/Plugins/gitee/index.html                   |  8 +++----
 zh/docs/Plugins/gitextractor/index.html            |  8 +++----
 zh/docs/Plugins/github/index.html                  |  8 +++----
 zh/docs/Plugins/gitlab/index.html                  |  8 +++----
 zh/docs/Plugins/jenkins/index.html                 |  8 +++----
 zh/docs/Plugins/jira/index.html                    |  8 +++----
 zh/docs/Plugins/refdiff/index.html                 |  8 +++----
 zh/docs/Plugins/tapd/index.html                    |  8 +++----
 zh/docs/QuickStart/DeveloperSetup/index.html       |  8 +++----
 zh/docs/QuickStart/KubernetesSetup/index.html      |  8 +++----
 zh/docs/QuickStart/LocalSetup/index.html           |  8 +++----
 zh/docs/QuickStart/TemporalSetup/index.html        |  8 +++----
 zh/docs/UserManuals/GRAFANA/index.html             |  8 +++----
 zh/docs/UserManuals/MIGRATIONS/index.html          |  8 +++----
 zh/docs/UserManuals/NOTIFICATION/index.html        |  8 +++----
 .../create-pipeline-in-advanced-mode/index.html    |  8 +++----
 .../github-user-guide-v0.10.0/index.html           |  8 +++----
 zh/docs/UserManuals/recurring-pipeline/index.html  |  8 +++----
 zh/index.html                                      |  8 +++----
 zh/markdown-page/index.html                        |  8 +++----
 zh/sitemap.xml                                     |  2 +-
 181 files changed, 726 insertions(+), 586 deletions(-)

diff --git a/404.html b/404.html
index 229f56b..1e2243a 100644
--- a/404.html
+++ b/404.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Page Not Found | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/404.html"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" nam [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/016d9cf9.1b44aadc.js b/assets/js/016d9cf9.1b44aadc.js
new file mode 100644
index 0000000..3b29729
--- /dev/null
+++ b/assets/js/016d9cf9.1b44aadc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[4350],{3905:function(e,t,r){r.d(t,{Zo:function(){return d},kt:function(){return m}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/assets/js/312e4254.cebef498.js b/assets/js/312e4254.5d526d83.js
similarity index 74%
rename from assets/js/312e4254.cebef498.js
rename to assets/js/312e4254.5d526d83.js
index 5637b8c..886b234 100644
--- a/assets/js/312e4254.cebef498.js
+++ b/assets/js/312e4254.5d526d83.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6730],{5607:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/postgresql","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6730],{5607:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/postgresql","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/527c8e33.4ffa24f6.js b/assets/js/527c8e33.bb655eb4.js
similarity index 60%
rename from assets/js/527c8e33.4ffa24f6.js
rename to assets/js/527c8e33.bb655eb4.js
index ef72b65..c180d3b 100644
--- a/assets/js/527c8e33.4ffa24f6.js
+++ b/assets/js/527c8e33.bb655eb4.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6795],{245:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"database","count":1,"permalink":"/blog/tags/database"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6795],{245:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"database","count":2,"permalink":"/blog/tags/database"}')}}]);
\ No newline at end of file
diff --git a/assets/js/5bf012c0.c4f7f173.js b/assets/js/5bf012c0.23e69e04.js
similarity index 75%
rename from assets/js/5bf012c0.c4f7f173.js
rename to assets/js/5bf012c0.23e69e04.js
index 0eebba3..fc71da8 100644
--- a/assets/js/5bf012c0.c4f7f173.js
+++ b/assets/js/5bf012c0.23e69e04.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6090],{9006:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/devlake","page":1,"postsPerPage":10,"totalPages":1,"totalCount":7,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6090],{9006:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/devlake","page":1,"postsPerPage":10,"totalPages":1,"totalCount":8,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/7452ddde.c0e73ebf.js b/assets/js/7452ddde.c0e73ebf.js
deleted file mode 100644
index f22e75b..0000000
--- a/assets/js/7452ddde.c0e73ebf.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.c9405d3d.js b/assets/js/7452ddde.c9405d3d.js
new file mode 100644
index 0000000..f15b373
--- /dev/null
+++ b/assets/js/7452ddde.c9405d3d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2024],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/assets/js/7fec31dd.a04633e9.js b/assets/js/7fec31dd.8eb144ed.js
similarity index 59%
rename from assets/js/7fec31dd.a04633e9.js
rename to assets/js/7fec31dd.8eb144ed.js
index e50f533..9d1f5f8 100644
--- a/assets/js/7fec31dd.a04633e9.js
+++ b/assets/js/7fec31dd.8eb144ed.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3914],{4006:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"postgresql","count":1,"permalink":"/blog/tags/postgresql"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3914],{4006:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"postgresql","count":2,"permalink":"/blog/tags/postgresql"}')}}]);
\ No newline at end of file
diff --git a/assets/js/814f3328.9ffefc6a.js b/assets/js/814f3328.6bef3880.js
similarity index 79%
rename from assets/js/814f3328.9ffefc6a.js
rename to assets/js/814f3328.6bef3880.js
index 3f7d134..0dbbbb2 100644
--- a/assets/js/814f3328.9ffefc6a.js
+++ b/assets/js/814f3328.6bef3880.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"All posts","items":[{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/blog/refdiff-calculate-commits-diff"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7ed3","permalink":"/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake\u4ee3\u7801\u5e93\u5bfc\u89c8","permal [...]
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"All posts","items":[{"title":"Compatibility of Apache DevLake with PostgreSQL","permalink":"/blog/compatibility-of-apache-devLake-with-postgreSQL"},{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/blog/refdiff-calculate-commits-diff"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7e [...]
\ No newline at end of file
diff --git a/assets/js/9c954eb0.86fadcc8.js b/assets/js/9c954eb0.ea9d77d3.js
similarity index 74%
rename from assets/js/9c954eb0.86fadcc8.js
rename to assets/js/9c954eb0.ea9d77d3.js
index b4f4dae..64ad838 100644
--- a/assets/js/9c954eb0.86fadcc8.js
+++ b/assets/js/9c954eb0.ea9d77d3.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5657],{3484:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/database","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5657],{3484:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/database","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/a7023ddc.2de0ee2f.js b/assets/js/a7023ddc.2de0ee2f.js
deleted file mode 100644
index a493b69..0000000
--- a/assets/js/a7023ddc.2de0ee2f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1713],{3457:function(a){a.exports=JSON.parse('{"devlake":{"allTagsPath":"/blog/tags","name":"devlake","count":7,"permalink":"/blog/tags/devlake"},"refdiff":{"allTagsPath":"/blog/tags","name":"refdiff","count":1,"permalink":"/blog/tags/refdiff"},"algorithm":{"allTagsPath":"/blog/tags","name":"algorithm","count":1,"permalink":"/blog/tags/algorithm"},"graph":{"allTagsPath":"/blog/tags","name":"graph","count":1,"permalink":" [...]
\ No newline at end of file
diff --git a/assets/js/a7023ddc.b5af480b.js b/assets/js/a7023ddc.b5af480b.js
new file mode 100644
index 0000000..9264bb2
--- /dev/null
+++ b/assets/js/a7023ddc.b5af480b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1713],{3457:function(a){a.exports=JSON.parse('{"devlake":{"allTagsPath":"/blog/tags","name":"devlake","count":8,"permalink":"/blog/tags/devlake"},"database":{"allTagsPath":"/blog/tags","name":"database","count":2,"permalink":"/blog/tags/database"},"postgresql":{"allTagsPath":"/blog/tags","name":"postgresql","count":2,"permalink":"/blog/tags/postgresql"},"refdiff":{"allTagsPath":"/blog/tags","name":"refdiff","count":1,"pe [...]
\ No newline at end of file
diff --git a/assets/js/b2b675dd.27752387.js b/assets/js/b2b675dd.cb29616a.js
similarity index 52%
rename from assets/js/b2b675dd.27752387.js
rename to assets/js/b2b675dd.cb29616a.js
index a1e8c33..64bdb3f 100644
--- a/assets/js/b2b675dd.27752387.js
+++ b/assets/js/b2b675dd.cb29616a.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[533],{8017:function(e){e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":7,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[533],{8017:function(e){e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":8,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/b2f554cd.b1efd7c3.js b/assets/js/b2f554cd.b1efd7c3.js
deleted file mode 100644
index 55aac2a..0000000
--- a/assets/js/b2f554cd.b1efd7c3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1477],{10:function(n){n.exports=JSON.parse('{"blogPosts":[{"id":"refdiff-calculate-commits-diff","metadata":{"permalink":"/blog/refdiff-calculate-commits-diff","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5/index.md","source":"@site/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4e [...]
\ No newline at end of file
diff --git a/assets/js/b2f554cd.e6710845.js b/assets/js/b2f554cd.e6710845.js
new file mode 100644
index 0000000..cacbe0b
--- /dev/null
+++ b/assets/js/b2f554cd.e6710845.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/c8005641.416a0b91.js b/assets/js/c8005641.416a0b91.js
new file mode 100644
index 0000000..1e7ea9a
--- /dev/null
+++ b/assets/js/c8005641.416a0b91.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3651],{3905:function(e,t,r){r.d(t,{Zo:function(){return d},kt:function(){return m}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/assets/js/ea0b4130.2fe5cd3c.js b/assets/js/ea0b4130.2fe5cd3c.js
new file mode 100644
index 0000000..e1b9546
--- /dev/null
+++ b/assets/js/ea0b4130.2fe5cd3c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9709],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/assets/js/ea0b4130.8d627b17.js b/assets/js/ea0b4130.8d627b17.js
deleted file mode 100644
index 5af0c8f..0000000
--- a/assets/js/ea0b4130.8d627b17.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/f3810852.4360a999.js b/assets/js/f3810852.d9633325.js
similarity index 61%
rename from assets/js/f3810852.4360a999.js
rename to assets/js/f3810852.d9633325.js
index dbc7115..c8cb65b 100644
--- a/assets/js/f3810852.4360a999.js
+++ b/assets/js/f3810852.d9633325.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2698],{1601:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"devlake","count":7,"permalink":"/blog/tags/devlake"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2698],{1601:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"devlake","count":8,"permalink":"/blog/tags/devlake"}')}}]);
\ No newline at end of file
diff --git a/assets/js/main.0cecb672.js b/assets/js/main.0cecb672.js
deleted file mode 100644
index bdaac8f..0000000
--- a/assets/js/main.0cecb672.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.0cecb672.js.LICENSE.txt */
-(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/assets/js/main.25452f27.js b/assets/js/main.25452f27.js
new file mode 100644
index 0000000..be2ca62
--- /dev/null
+++ b/assets/js/main.25452f27.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.25452f27.js.LICENSE.txt */
+(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/assets/js/main.0cecb672.js.LICENSE.txt b/assets/js/main.25452f27.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.0cecb672.js.LICENSE.txt
rename to assets/js/main.25452f27.js.LICENSE.txt
diff --git a/assets/js/runtime~main.84961899.js b/assets/js/runtime~main.84961899.js
deleted file mode 100644
index 0b26c6f..0000000
--- a/assets/js/runtime~main.84961899.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var e,f,c,a,d,b={},t={};function n(e){var f=t[e];if(void 0!==f)return f.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,n),c.loaded=!0,c.exports}n.m=b,n.c=t,e=[],n.O=function(f,c,a,d){if(!c){var b=1/0;for(u=0;u<e.length;u++){c=e[u][0],a=e[u][1],d=e[u][2];for(var t=!0,r=0;r<c.length;r++)(!1&d||b>=d)&&Object.keys(n.O).every((function(e){return n.O[e](c[r])}))?c.splice(r--,1):(t=!1,d<b&&(b=d));if(t){e.splice(u--,1);var o=a();voi [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.b496e449.js b/assets/js/runtime~main.b496e449.js
new file mode 100644
index 0000000..1f62b53
--- /dev/null
+++ b/assets/js/runtime~main.b496e449.js
@@ -0,0 +1 @@
+!function(){"use strict";var e,c,f,a,d,b={},t={};function n(e){var c=t[e];if(void 0!==c)return c.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,n),f.loaded=!0,f.exports}n.m=b,n.c=t,e=[],n.O=function(c,f,a,d){if(!f){var b=1/0;for(u=0;u<e.length;u++){f=e[u][0],a=e[u][1],d=e[u][2];for(var t=!0,r=0;r<f.length;r++)(!1&d||b>=d)&&Object.keys(n.O).every((function(e){return n.O[e](f[r])}))?f.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 524a934..4d50445 100644
--- a/blog/apache-devlake-codebase-walkthrough/index.html
+++ b/blog/apache-devlake-codebase-walkthrough/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake代码库导览 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/apache-devlake-codebase-walkthrough"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" conte [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 accaf02..7bbdd55 100644
--- a/blog/apache-welcomes-devlake/index.html
+++ b/blog/apache-welcomes-devlake/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache Incubator Welcomes DevLake, A Dev-Data Platform Serving Developers | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/apache-welcomes-devlake"><meta data-rh="true" name="docusaurus_locale" content="en"><meta  [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 <img loading="lazy" alt="architecture" src="/assets/images/0.11-architecture-diagram-f422e47efad0b84f72eb3bc51c7d1f1b.jpg" width="2143" height="1182" class="img_E7b_"></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="why-join-apache-incubator">Why join Apache Incubator?<a class="hash-link" href="#why-join-apache-incubator" title="Direct link to heading">​</a></h3><p>First and foremost, we firmly believe in Apache&#x27;s principle of &quot;Community over Code&quot; and <a href="https [...]
 Join us on Slack and at our weekly open source community meetups🥳</p><p><strong>Apache DevLake (Incubating) Links:</strong></p><ul><li>GitHub:  <a href="https://github.com/apache/incubator-devlake" target="_blank" rel="noopener noreferrer">https://github.com/apache/incubator-devlake</a></li><li>Official Website: <a href="https://devlake.apache.org/" target="_blank" rel="noopener noreferrer">https://devlake.apache.org/</a></li><li>Slack:   <a href="https://join.slack.com/t/devlake-io/shar [...]
         <div style="margin-top: 20px">
@@ -20,7 +20,7 @@ Join us on Slack and at our weekly open source community meetups🥳</p><p><stro
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 698bb3d..a083e84 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Archive | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/archive"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name=" [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/atom.xml b/blog/atom.xml
index eeab0b7..c3bf6dd 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -2,11 +2,29 @@
 <feed xmlns="http://www.w3.org/2005/Atom">
     <id>https://devlake.apache.org/blog</id>
     <title>Apache DevLake (Incubating) Blog</title>
-    <updated>2022-06-22T00:00:00.000Z</updated>
+    <updated>2022-06-23T00:00:00.000Z</updated>
     <generator>https://github.com/jpmonette/feed</generator>
     <link rel="alternate" href="https://devlake.apache.org/blog"/>
     <subtitle>Apache DevLake (Incubating) Blog</subtitle>
     <icon>https://devlake.apache.org/img/logo.svg</icon>
+    <entry>
+        <title type="html"><![CDATA[Compatibility of Apache DevLake with PostgreSQL]]></title>
+        <id>compatibility-of-apache-devLake-with-postgreSQL</id>
+        <link href="https://devlake.apache.org/blog/compatibility-of-apache-devLake-with-postgreSQL"/>
+        <updated>2022-06-23T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[Apache DevLake is a dev data platform that can collect and integrate data from different dev tools including Jira, Github, Gitlab and Jenkins.]]></summary>
+        <content type="html"><![CDATA[<p>Apache DevLake is a dev data platform that can collect and integrate data from different dev tools including Jira, Github, Gitlab and Jenkins.</p><p>This blog will not aim at a comprehensive summary of the compatibility of database but a record of issues for future reference.</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="1different--data-types">1.Different  Data Types<a class="hash-link" href="#1different--data-types" title="Direct link to [...]
+<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("merge_request_id = ? AND is_system = ?", gitlabMr.G [...]
+        <author>
+            <name>Geyu Chen</name>
+            <uri>https://github.com/fredtheflat</uri>
+        </author>
+        <category label="devlake" term="devlake"/>
+        <category label="database" term="database"/>
+        <category label="postgresql" term="postgresql"/>
+    </entry>
     <entry>
         <title type="html"><![CDATA[refdiff插件的计算提交版本差异算法]]></title>
         <id>refdiff-calculate-commits-diff</id>
diff --git a/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html b/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
new file mode 100644
index 0000000..9ac2709
--- /dev/null
+++ b/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en-GB" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default">
+<head>
+<meta charset="UTF-8">
+<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">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.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.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>< [...]
+<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;,  [...]
+        <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.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 b441698..ebf1251 100644
--- a/blog/deadlock-caused-by-using-ants/index.html
+++ b/blog/deadlock-caused-by-using-ants/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">使用ants引发的死锁 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/deadlock-caused-by-using-ants"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default">< [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 d25bd50..b50af09 100644
--- a/blog/how-apache-devlake-runs/index.html
+++ b/blog/how-apache-devlake-runs/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake是怎么跑起来的 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/how-apache-devlake-runs"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="defaul [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 ef19721..47c6062 100644
--- a/blog/how-to-contribute-to-issues/index.html
+++ b/blog/how-to-contribute-to-issues/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">如何贡献issues | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/how-to-contribute-to-issues"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><met [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 这很有趣,它们几乎立刻就被拿走了......
 但对于那些有兴趣但没有得到的人来说可能就不那么有趣了。</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="所以">所以...<a class="hash-link" href="#所以" title="Direct link to heading">​</a></h3><p>我们决定,不再有竞争,你可以从我们的github issue pages中挑选你喜欢的issue。如果没有了,甚至可以创建你自己的。
 我们毕竟是社区!</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="怎么做呢这很简单">怎么做呢?这很简单!<a class="hash-link" href="#怎么做呢这很简单" title="Direct link to heading">​</a></h3><p>进入我们的<a href="https://github.com/apache/incubator-devlake/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" target="_blank" rel="noopener noreferrer">问题页面</a>,然后点击这里。我们所有的Good First Issue都列在这里!
@@ -30,7 +30,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index d70c7a1..e095474 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -6,12 +6,15 @@
 <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.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<img loading="lazy" 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 [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</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 [...]
@@ -40,7 +43,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.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 ee962df..c0ec060 100644
--- a/blog/refdiff-calculate-commits-diff/index.html
+++ b/blog/refdiff-calculate-commits-diff/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/refdiff-calculate-commits-diff"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content=" [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
@@ -19,14 +19,14 @@
 从节点<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<!-- -->*<!-- -->log(n)) [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/rss.xml b/blog/rss.xml
index 1805257..5aafdc3 100644
--- a/blog/rss.xml
+++ b/blog/rss.xml
@@ -4,10 +4,24 @@
         <title>Apache DevLake (Incubating) Blog</title>
         <link>https://devlake.apache.org/blog</link>
         <description>Apache DevLake (Incubating) Blog</description>
-        <lastBuildDate>Wed, 22 Jun 2022 00:00:00 GMT</lastBuildDate>
+        <lastBuildDate>Thu, 23 Jun 2022 00:00:00 GMT</lastBuildDate>
         <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
         <generator>https://github.com/jpmonette/feed</generator>
         <language>en</language>
+        <item>
+            <title><![CDATA[Compatibility of Apache DevLake with PostgreSQL]]></title>
+            <link>https://devlake.apache.org/blog/compatibility-of-apache-devLake-with-postgreSQL</link>
+            <guid>compatibility-of-apache-devLake-with-postgreSQL</guid>
+            <pubDate>Thu, 23 Jun 2022 00:00:00 GMT</pubDate>
+            <description><![CDATA[Apache DevLake is a dev data platform that can collect and integrate data from different dev tools including Jira, Github, Gitlab and Jenkins.]]></description>
+            <content:encoded><![CDATA[<p>Apache DevLake is a dev data platform that can collect and integrate data from different dev tools including Jira, Github, Gitlab and Jenkins.</p><p>This blog will not aim at a comprehensive summary of the compatibility of database but a record of issues for future reference.</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="1different--data-types">1.Different  Data Types<a class="hash-link" href="#1different--data-types" title="Direct link to [...]
+<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("merge_request_id = ? AND is_system = ?", gitlabMr.G [...]
+            <category>devlake</category>
+            <category>database</category>
+            <category>postgresql</category>
+        </item>
         <item>
             <title><![CDATA[refdiff插件的计算提交版本差异算法]]></title>
             <link>https://devlake.apache.org/blog/refdiff-calculate-commits-diff</link>
diff --git a/blog/some-practices-of-supporting-postgresql/index.html b/blog/some-practices-of-supporting-postgresql/index.html
index ab04ea0..f0ed7ed 100644
--- a/blog/some-practices-of-supporting-postgresql/index.html
+++ b/blog/some-practices-of-supporting-postgresql/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake 兼容 PostgreSQL 踩坑小结 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="doc [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
         <div style="margin-top: 20px">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 8414f8c..e50f491 100644
--- a/blog/tags/algorithm/index.html
+++ b/blog/tags/algorithm/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;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.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
@@ -26,7 +26,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 4fc94fd..f3e515a 100644
--- a/blog/tags/ants/index.html
+++ b/blog/tags/ants/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;ants&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/ants"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content=" [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 c0d6dd6..99d46a3 100644
--- a/blog/tags/apache/index.html
+++ b/blog/tags/apache/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">3 posts tagged with &quot;apache&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/apache"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" conten [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 这很有趣,它们几乎立刻就被拿走了......
 但对于那些有兴趣但没有得到的人来说可能就不那么有趣了。</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="所以">所以...<a class="hash-link" href="#所以" title="Direct link to heading">​</a></h3><p>我们决定,不再有竞争,你可以从我们的github issue pages中挑选你喜欢的issue。如果没有了,甚至可以创建你自己的。
 我们毕竟是社区!</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="怎么做呢这很简单">怎么做呢?这很简单!<a class="hash-link" href="#怎么做呢这很简单" title="Direct link to heading">​</a></h3><p>进入我们的<a href="https://github.com/apache/incubator-devlake/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" target="_blank" rel="noopener noreferrer">问题页面</a>,然后点击这里。我们所有的Good First Issue都列在这里!
@@ -30,7 +30,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 564a2c0..b379b31 100644
--- a/blog/tags/codebase/index.html
+++ b/blog/tags/codebase/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;codebase&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/codebase"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" c [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 a4b1af9..9ebf264 100644
--- a/blog/tags/database/index.html
+++ b/blog/tags/database/index.html
@@ -5,13 +5,16 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;database&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/database"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" c [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<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.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<img loading="lazy" 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;,  [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
         <div style="margin-top: 20px">
@@ -20,7 +23,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.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 26ab2d5..9d703c5 100644
--- a/blog/tags/devlake/index.html
+++ b/blog/tags/devlake/index.html
@@ -5,13 +5,16 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">7 posts tagged with &quot;devlake&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/devlake"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" cont [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">8 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.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<img loading="lazy" 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 [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</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 [...]
@@ -40,7 +43,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.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 a5e69e7..aa50a44 100644
--- a/blog/tags/graph/index.html
+++ b/blog/tags/graph/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;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.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
@@ -26,7 +26,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index e01e86e..8c82319 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -6,19 +6,19 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Tags | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og: [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 ed06931..9e1c12f 100644
--- a/blog/tags/postgresql/index.html
+++ b/blog/tags/postgresql/index.html
@@ -5,13 +5,16 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;postgresql&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:languag [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<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.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<img loading="lazy" 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;,  [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
         <div style="margin-top: 20px">
@@ -20,7 +23,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.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 0ebfc94..717c1f1 100644
--- a/blog/tags/refdiff/index.html
+++ b/blog/tags/refdiff/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;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.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
@@ -26,7 +26,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/Team/index.html b/community/Team/index.html
index dd161df..2cd333c 100644
--- a/community/Team/index.html
+++ b/community/Team/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Team | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/Team/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="d [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -19,7 +19,7 @@ get merged into the codebase. We deeply appreciate your contribution!</p><ul><li
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index 3e23fdb..6c1eec2 100644
--- a/community/index.html
+++ b/community/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">How to Make Contributions? | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data- [...]
 "><meta data-rh="true" property="og:description" content="The steps and specs to contribute to DevLake.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/community/"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/community/" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/community/" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/community/" hreflang="x-default"><link rel="stylesheet" href="/assets/css/styles.680c5a [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 fafca62..d7d30de 100644
--- a/community/make-contribution/BlogSubmission/index.html
+++ b/community/make-contribution/BlogSubmission/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Blog Submission | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/make-contribution/BlogSubmission"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" con [...]
 "><meta data-rh="true" property="og:description" content="Instructions for how to submit a blog post to DevLake Blog
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/community/make-contribution/BlogSubmission"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/community/make-contribution/BlogSubmission" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/community/make-contribution/BlogSubmission" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.ap [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 f200246..8be880f 100644
--- a/community/make-contribution/contributor-growth-program/index.html
+++ b/community/make-contribution/contributor-growth-program/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Becoming a Committer | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/make-contribution/contributor-growth-program"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsea [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 c5bc2d3..4920d0f 100644
--- a/community/make-contribution/development-workflow/index.html
+++ b/community/make-contribution/development-workflow/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Development Workflow | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/make-contribution/development-workflow"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:la [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 5f7298d..d087b9f 100644
--- a/community/make-contribution/fix-or-create-issues/index.html
+++ b/community/make-contribution/fix-or-create-issues/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Contributing to Issues | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/make-contribution/fix-or-create-issues"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch: [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -33,7 +33,7 @@ for your skills, to learn how to cooperate with others. And for those who made s
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/subscribe/index.html b/community/subscribe/index.html
index e4b8411..a821115 100644
--- a/community/subscribe/index.html
+++ b/community/subscribe/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Mailing List | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/community/subscribe"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="t [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 4caeeab..709093a 100644
--- a/docs/Dashboards/AverageRequirementLeadTime/index.html
+++ b/docs/Dashboards/AverageRequirementLeadTime/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Average Requirement Lead Time by Assignee | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/AverageRequirementLeadTime"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" nam [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/AverageRequirementLeadTime"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/AverageRequirementLeadTime" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/AverageRequirementLeadTime" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.ap [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 76ce4fb..047d4ba 100644
--- a/docs/Dashboards/CommitCountByAuthor/index.html
+++ b/docs/Dashboards/CommitCountByAuthor/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Commit Count by Author | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/CommitCountByAuthor"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" con [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/CommitCountByAuthor"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/CommitCountByAuthor" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/CommitCountByAuthor" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboa [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 570b4ae..a1440ed 100644
--- a/docs/Dashboards/DetailedBugInfo/index.html
+++ b/docs/Dashboards/DetailedBugInfo/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Detailed Bug Info | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/DetailedBugInfo"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en" [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/DetailedBugInfo"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/DetailedBugInfo" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/DetailedBugInfo" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/Detailed [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 923a4fc..fc9c068 100644
--- a/docs/Dashboards/GitHubBasic/index.html
+++ b/docs/Dashboards/GitHubBasic/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub Basic Metrics | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/GitHubBasic"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"> [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/GitHubBasic"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/GitHubBasic" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/GitHubBasic" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/GitHubBasic" hreflan [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 39e60e1..0e5e490 100644
--- a/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
+++ b/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub Release Quality and Contribution Analysis | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis"><meta data-rh="true" name="docusaurus_locale" content="en"> [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/GitHubReleaseQualityAndContributionAnalysis" hreflang="zh"><link data [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 bd8bff6..5106010 100644
--- a/docs/Dashboards/Jenkins/index.html
+++ b/docs/Dashboards/Jenkins/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jenkins | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/Jenkins"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="tr [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/Jenkins"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/Jenkins" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/Jenkins" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/Jenkins" hreflang="x-default"><l [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 530d1ae..066c48e 100644
--- a/docs/Dashboards/WeeklyBugRetro/index.html
+++ b/docs/Dashboards/WeeklyBugRetro/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Weekly Bug Retro | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Dashboards/WeeklyBugRetro"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en">< [...]
 "><meta data-rh="true" property="og:description" content="DevLake Live Demo
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Dashboards/WeeklyBugRetro"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/WeeklyBugRetro" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Dashboards/WeeklyBugRetro" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Dashboards/WeeklyBugRe [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 b245e5c..f4a919d 100644
--- a/docs/DataModels/DataSupport/index.html
+++ b/docs/DataModels/DataSupport/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Data Support | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/DataModels/DataSupport"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta da [...]
 "><meta data-rh="true" property="og:description" content="Data sources that DevLake supports
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/DataModels/DataSupport"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/DataModels/DataSupport" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/DataModels/DataSupport" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/DataModels/DataSupport" hreflan [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 1234af4..7fcc4e8 100644
--- a/docs/DataModels/DevLakeDomainLayerSchema/index.html
+++ b/docs/DataModels/DevLakeDomainLayerSchema/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Domain Layer Schema | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" c [...]
 "><meta data-rh="true" property="og:description" content="DevLake Domain Layer Schema
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/DataModels/DevLakeDomainLayerSchema" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/DataModels/DevLakeDomainLayerSchema" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.o [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/EngineeringMetrics/index.html b/docs/EngineeringMetrics/index.html
index 4133563..a947fad 100644
--- a/docs/EngineeringMetrics/index.html
+++ b/docs/EngineeringMetrics/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Engineering Metrics | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/EngineeringMetrics"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta [...]
 "><meta data-rh="true" property="og:description" content="The definition, values and data required for the 20+ engineering metrics supported by DevLake.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/EngineeringMetrics"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/EngineeringMetrics" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/EngineeringMetrics" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/EngineeringMetrics" hreflang="x-default"><l [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Glossary/index.html b/docs/Glossary/index.html
index 5120940..43ba92e 100644
--- a/docs/Glossary/index.html
+++ b/docs/Glossary/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Glossary | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Glossary"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name= [...]
 "><meta data-rh="true" property="og:description" content="DevLake Glossary
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Glossary"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Glossary" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Glossary" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Glossary" hreflang="x-default"><link rel="stylesheet" href="/assets/css/s [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -22,7 +22,7 @@ Notice: <strong>You can manually orchestrate the pipeline in Configuration UI Ad
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 76e7596..f237f8c 100644
--- a/docs/Overview/Architecture/index.html
+++ b/docs/Overview/Architecture/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Architecture | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Overview/Architecture"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta dat [...]
 "><meta data-rh="true" property="og:description" content="Understand the architecture of Apache DevLake.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Overview/Architecture"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Architecture" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Overview/Architecture" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Architecture" hreflang="x [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 63e712d..0c8860b 100644
--- a/docs/Overview/Roadmap/index.html
+++ b/docs/Overview/Roadmap/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Roadmap | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Overview/Roadmap"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true [...]
 "><meta data-rh="true" property="og:description" content="The goals and roadmap for DevLake in 2022.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Overview/Roadmap"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Roadmap" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Overview/Roadmap" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Overview/Roadmap" hreflang="x-default"><link rel= [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ Also, if you plan to work (or are already working) on a new or existing feature,
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 25af7df..d56df67 100644
--- a/docs/Overview/WhatIsDevLake/index.html
+++ b/docs/Overview/WhatIsDevLake/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Introduction | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Overview/WhatIsDevLake"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta da [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 deb6a76..3dcdcfd 100644
--- a/docs/Plugins/dbt/index.html
+++ b/docs/Plugins/dbt/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">DBT | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/dbt"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="d [...]
 "><meta data-rh="true" property="og:description" content="DBT Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/dbt"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/dbt" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/dbt" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/dbt" hreflang="x-default"><link rel="stylesheet" href="/ [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,7 +25,7 @@ To execute this SQL query in your model, you need set a value for <code>event_ty
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 f1cd84a..e2918d0 100644
--- a/docs/Plugins/feishu/index.html
+++ b/docs/Plugins/feishu/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Feishu | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/feishu"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" n [...]
 "><meta data-rh="true" property="og:description" content="Feishu Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/feishu"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/feishu" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/feishu" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/feishu" hreflang="x-default"><link rel="stylesh [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ then set these two parameters via Dev Lake&#x27;s <code>.env</code>.</p><h3 clas
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 fcf31fa..c3243bc 100644
--- a/docs/Plugins/gitee/index.html
+++ b/docs/Plugins/gitee/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Gitee(WIP) | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/gitee"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true [...]
 "><meta data-rh="true" property="og:description" content="Gitee Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/gitee"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitee" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitee" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitee" hreflang="x-default"><link rel="stylesheet" [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -22,7 +22,7 @@ You can also trigger data collection by making a POST request to <code>/pipeline
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 68320c5..4d865b2 100644
--- a/docs/Plugins/gitextractor/index.html
+++ b/docs/Plugins/gitextractor/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitExtractor | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/gitextractor"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data [...]
 "><meta data-rh="true" property="og:description" content="GitExtractor Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/gitextractor"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitextractor" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitextractor" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitextractor" hreflang="x-def [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -22,7 +22,7 @@ machine. <a href="/docs/Plugins/refdiff#development">Click here</a> for a brief
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 238b2ac..658bd25 100644
--- a/docs/Plugins/github/index.html
+++ b/docs/Plugins/github/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/github"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" n [...]
 "><meta data-rh="true" property="og:description" content="GitHub Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/github"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/github" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/github" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/github" hreflang="x-default"><link rel="stylesh [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ Enter a valid proxy server address on your Network, e.g. <code>http://your-proxy
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 a96881e..29e1322 100644
--- a/docs/Plugins/gitlab/index.html
+++ b/docs/Plugins/gitlab/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitLab | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/gitlab"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" n [...]
 "><meta data-rh="true" property="og:description" content="GitLab Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/gitlab"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitlab" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitlab" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitlab" hreflang="x-default"><link rel="stylesh [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ For an overview of the <strong>GitLab REST API</strong>, please see official <a
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 1f279d7..89c39ed 100644
--- a/docs/Plugins/jenkins/index.html
+++ b/docs/Plugins/jenkins/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jenkins | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/jenkins"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
 "><meta data-rh="true" property="og:description" content="Jenkins Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/jenkins"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jenkins" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/jenkins" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jenkins" hreflang="x-default"><link rel="sty [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 2c9b6fd..ce8c06d 100644
--- a/docs/Plugins/jira/index.html
+++ b/docs/Plugins/jira/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jira | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/jira"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name= [...]
 "><meta data-rh="true" property="og:description" content="Jira Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/jira"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jira" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/jira" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jira" hreflang="x-default"><link rel="stylesheet" hre [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,7 +25,7 @@ would be forwarded to <code>https://your_jira_host/rest/agile/1.0/board/8/sprint
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 bb43178..1d90abc 100644
--- a/docs/Plugins/refdiff/index.html
+++ b/docs/Plugins/refdiff/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">RefDiff | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/refdiff"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" [...]
 "><meta data-rh="true" property="og:description" content="RefDiff Plugin
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/Plugins/refdiff"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/refdiff" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/refdiff" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/refdiff" hreflang="x-default"><link rel="sty [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -22,7 +22,7 @@ machine.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="ubuntu">Ubuntu<a
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 15e71f3..b618e3e 100644
--- a/docs/Plugins/tapd/index.html
+++ b/docs/Plugins/tapd/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">TAPD | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/Plugins/tapd"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name= [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 33b9eb2..ea6d0ce 100644
--- a/docs/QuickStart/DeveloperSetup/index.html
+++ b/docs/QuickStart/DeveloperSetup/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Developer Setup | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/QuickStart/DeveloperSetup"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><m [...]
 "><meta data-rh="true" property="og:description" content="The steps to install DevLake in develper mode.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/QuickStart/DeveloperSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/DeveloperSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/DeveloperSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/DeveloperSe [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ After the pipeline starts, you will be automatically redirected to the <strong>P
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 c902f69..a10e2d6 100644
--- a/docs/QuickStart/KubernetesSetup/index.html
+++ b/docs/QuickStart/KubernetesSetup/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Deploy to Kubernates | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/QuickStart/KubernetesSetup"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content=" [...]
 "><meta data-rh="true" property="og:description" content="The steps to install Apache DevLake in Kubernetes.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/QuickStart/KubernetesSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/KubernetesSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/KubernetesSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/Kubernet [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 f9a4e4b..52020b3 100644
--- a/docs/QuickStart/LocalSetup/index.html
+++ b/docs/QuickStart/LocalSetup/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Deploy Locally | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/QuickStart/LocalSetup"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta d [...]
 "><meta data-rh="true" property="og:description" content="The steps to install DevLake locally.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/QuickStart/LocalSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/LocalSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/LocalSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/LocalSetup" hreflang="x [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 11ab699..11c9b6f 100644
--- a/docs/QuickStart/TemporalSetup/index.html
+++ b/docs/QuickStart/TemporalSetup/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Temporal Setup | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/QuickStart/TemporalSetup"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><met [...]
 "><meta data-rh="true" property="og:description" content="The steps to install DevLake in develper mode.
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/QuickStart/TemporalSetup"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/TemporalSetup" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/QuickStart/TemporalSetup" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/QuickStart/TemporalSetup" [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 1a034bb..8fab0c3 100644
--- a/docs/UserManuals/GRAFANA/index.html
+++ b/docs/UserManuals/GRAFANA/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">How to use Grafana | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/GRAFANA"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta [...]
 "><meta data-rh="true" property="og:description" content="How to use Grafana
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/GRAFANA"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/GRAFANA" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/GRAFANA" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/GRAFANA" hreflang="x-default [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 788f754..b16813c 100644
--- a/docs/UserManuals/MIGRATIONS/index.html
+++ b/docs/UserManuals/MIGRATIONS/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">DB Migration | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/MIGRATIONS"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta da [...]
 "><meta data-rh="true" property="og:description" content="DB Migration
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/MIGRATIONS" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS" hreflan [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,7 +25,7 @@ From which, DevLake could figure out the current state of database schemas.</p><
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 79eec51..8178ad2 100644
--- a/docs/UserManuals/NOTIFICATION/index.html
+++ b/docs/UserManuals/NOTIFICATION/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Notifications | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/NOTIFICATION"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta [...]
 "><meta data-rh="true" property="og:description" content="Notifications
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/NOTIFICATION"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/NOTIFICATION" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/NOTIFICATION" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/NOTIFICATION" [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 55f2c70..29aaf4b 100644
--- a/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
+++ b/docs/UserManuals/create-pipeline-in-advanced-mode/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Create Pipeline in Advanced Mode | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/create-pipeline-in-advanced-mode"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name= [...]
 "><meta data-rh="true" property="og:description" content="Create Pipeline in Advanced Mode
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/create-pipeline-in-advanced-mode"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/create-pipeline-in-advanced-mode" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/create-pipeline-in-advanced-mode" hreflang="zh"><link data-rh="true" rel="alternate" hre [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@ Running multiple tasks against the same data source is unlikely to speed up the
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 e12bc8f..2c7114b 100644
--- a/docs/UserManuals/github-user-guide-v0.10.0/index.html
+++ b/docs/UserManuals/github-user-guide-v0.10.0/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub User Guide v0.10.0 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/github-user-guide-v0.10.0"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:lan [...]
 "><meta data-rh="true" property="og:description" content="GitHub User Guide v0.10.0
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/github-user-guide-v0.10.0"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/github-user-guide-v0.10.0" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/github-user-guide-v0.10.0" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.ap [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -26,7 +26,7 @@ You can provide multiple tokens to speed up the data collection process, simply
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.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 cd09994..64ce826 100644
--- a/docs/UserManuals/recurring-pipeline/index.html
+++ b/docs/UserManuals/recurring-pipeline/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Create Recurring Pipelines | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/docs/UserManuals/recurring-pipeline"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" [...]
 "><meta data-rh="true" property="og:description" content="Create Recurring Pipelines
 "><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/docs/UserManuals/recurring-pipeline"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/recurring-pipeline" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/recurring-pipeline" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserMan [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -21,7 +21,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index b4fa5ee..ada01af 100644
--- a/index.html
+++ b/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake (Incubating) | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/markdown-page/index.html b/markdown-page/index.html
index 13d307c..c6601ca 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Markdown page example | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/markdown-page"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-r [...]
-<link rel="preload" href="/assets/js/runtime~main.84961899.js" as="script">
-<link rel="preload" href="/assets/js/main.0cecb672.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.b496e449.js" as="script">
+<link rel="preload" href="/assets/js/main.25452f27.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -18,7 +18,7 @@
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.84961899.js"></script>
-<script src="/assets/js/main.0cecb672.js"></script>
+<script src="/assets/js/runtime~main.b496e449.js"></script>
+<script src="/assets/js/main.25452f27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index c36bdf7..0cf26c9 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://devlake.apache.org/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://devlake.apache.org/blog/apache-devlake-co [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://devlake.apache.org/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://devlake.apache.org/blog/apache-devlake-co [...]
\ No newline at end of file
diff --git a/zh/404.html b/zh/404.html
index bedf453..1bbd2e2 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/assets/js/016d9cf9.413fcedc.js b/zh/assets/js/016d9cf9.413fcedc.js
new file mode 100644
index 0000000..8f40ee7
--- /dev/null
+++ b/zh/assets/js/016d9cf9.413fcedc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[4350],{3905:function(e,t,r){r.d(t,{Zo:function(){return d},kt:function(){return m}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/3a332aed.4767b7f2.js b/zh/assets/js/3a332aed.8d58fad8.js
similarity index 78%
rename from zh/assets/js/3a332aed.4767b7f2.js
rename to zh/assets/js/3a332aed.8d58fad8.js
index eb7f4e3..068a735 100644
--- a/zh/assets/js/3a332aed.4767b7f2.js
+++ b/zh/assets/js/3a332aed.8d58fad8.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[8800],{9567:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":7,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[8800],{9567:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":8,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/4b72bbf5.4f4f3dc7.js b/zh/assets/js/4b72bbf5.4f4f3dc7.js
deleted file mode 100644
index 7079823..0000000
--- a/zh/assets/js/4b72bbf5.4f4f3dc7.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.5750ee38.js b/zh/assets/js/4b72bbf5.5750ee38.js
new file mode 100644
index 0000000..7ed1ac8
--- /dev/null
+++ b/zh/assets/js/4b72bbf5.5750ee38.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[8726],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/5baeb61d.6a650f91.js b/zh/assets/js/5baeb61d.df4b5925.js
similarity index 74%
rename from zh/assets/js/5baeb61d.6a650f91.js
rename to zh/assets/js/5baeb61d.df4b5925.js
index 861d8af..327d361 100644
--- a/zh/assets/js/5baeb61d.6a650f91.js
+++ b/zh/assets/js/5baeb61d.df4b5925.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[7405],{2884:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog/tags/devlake","page":1,"postsPerPage":10,"totalPages":1,"totalCount":6,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[7405],{2884:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog/tags/devlake","page":1,"postsPerPage":10,"totalPages":1,"totalCount":7,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/6b13107a.226078bf.js b/zh/assets/js/6b13107a.8facde99.js
similarity index 73%
rename from zh/assets/js/6b13107a.226078bf.js
rename to zh/assets/js/6b13107a.8facde99.js
index 805e61f..94dedb2 100644
--- a/zh/assets/js/6b13107a.226078bf.js
+++ b/zh/assets/js/6b13107a.8facde99.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5617],{8636:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog/tags/postgresql","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5617],{8636:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog/tags/postgresql","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/814f3328.58e887e2.js b/zh/assets/js/814f3328.58e887e2.js
deleted file mode 100644
index 6b6f686..0000000
--- a/zh/assets/js/814f3328.58e887e2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/zh/blog/refdiff-calculate-commits-diff"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7ed3","permalink":"/zh/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake\u4ee3\u7801\u5e93\u5bfc\u89c8 [...]
\ No newline at end of file
diff --git a/zh/assets/js/814f3328.644446bb.js b/zh/assets/js/814f3328.644446bb.js
new file mode 100644
index 0000000..04275ac
--- /dev/null
+++ b/zh/assets/js/814f3328.644446bb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Compatibility of Apache DevLake with PostgreSQL","permalink":"/zh/blog/compatibility-of-apache-devLake-with-postgreSQL"},{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/zh/blog/refdiff-calculate-commits-diff"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\ [...]
\ No newline at end of file
diff --git a/zh/assets/js/927d70e2.261294b3.js b/zh/assets/js/927d70e2.261294b3.js
deleted file mode 100644
index 706e9a6..0000000
--- a/zh/assets/js/927d70e2.261294b3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1045],{2190:function(n){n.exports=JSON.parse('{"blogPosts":[{"id":"refdiff-calculate-commits-diff","metadata":{"permalink":"/zh/blog/refdiff-calculate-commits-diff","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5/index.md","source":"@site/i18n/zh/docusaurus-plugin-content-blog/2022-06-22-refdiff\ [...]
\ No newline at end of file
diff --git a/zh/assets/js/927d70e2.6ea59dc0.js b/zh/assets/js/927d70e2.6ea59dc0.js
new file mode 100644
index 0000000..1f5629f
--- /dev/null
+++ b/zh/assets/js/927d70e2.6ea59dc0.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/96f1ac7f.239032a1.js b/zh/assets/js/96f1ac7f.5dde03fa.js
similarity index 73%
rename from zh/assets/js/96f1ac7f.239032a1.js
rename to zh/assets/js/96f1ac7f.5dde03fa.js
index f31c464..495485c 100644
--- a/zh/assets/js/96f1ac7f.239032a1.js
+++ b/zh/assets/js/96f1ac7f.5dde03fa.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3753],{4474:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog/tags/database","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3753],{4474:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog/tags/database","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/a68c8982.522fac48.js b/zh/assets/js/a68c8982.a8ab784b.js
similarity index 59%
rename from zh/assets/js/a68c8982.522fac48.js
rename to zh/assets/js/a68c8982.a8ab784b.js
index 6442441..49c6932 100644
--- a/zh/assets/js/a68c8982.522fac48.js
+++ b/zh/assets/js/a68c8982.a8ab784b.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5208],{1613:function(e){e.exports=JSON.parse('{"allTagsPath":"/zh/blog/tags","name":"devlake","count":6,"permalink":"/zh/blog/tags/devlake"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5208],{1613:function(e){e.exports=JSON.parse('{"allTagsPath":"/zh/blog/tags","name":"devlake","count":7,"permalink":"/zh/blog/tags/devlake"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/abc99659.24b7d297.js b/zh/assets/js/abc99659.24b7d297.js
new file mode 100644
index 0000000..773f9b2
--- /dev/null
+++ b/zh/assets/js/abc99659.24b7d297.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6160],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return C}});var i=t(7294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/abc99659.f4a5ab9d.js b/zh/assets/js/abc99659.f4a5ab9d.js
deleted file mode 100644
index f9396eb..0000000
--- a/zh/assets/js/abc99659.f4a5ab9d.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/bfb16af5.5f1cc6cc.js b/zh/assets/js/bfb16af5.5f1cc6cc.js
new file mode 100644
index 0000000..d23fed9
--- /dev/null
+++ b/zh/assets/js/bfb16af5.5f1cc6cc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5909],{5392:function(a){a.exports=JSON.parse('{"devlake":{"allTagsPath":"/zh/blog/tags","name":"devlake","count":7,"permalink":"/zh/blog/tags/devlake"},"database":{"allTagsPath":"/zh/blog/tags","name":"database","count":2,"permalink":"/zh/blog/tags/database"},"postgresql":{"allTagsPath":"/zh/blog/tags","name":"postgresql","count":2,"permalink":"/zh/blog/tags/postgresql"},"refdiff":{"allTagsPath":"/zh/blog/tags","name":"r [...]
\ No newline at end of file
diff --git a/zh/assets/js/bfb16af5.fa9cee1b.js b/zh/assets/js/bfb16af5.fa9cee1b.js
deleted file mode 100644
index e96afea..0000000
--- a/zh/assets/js/bfb16af5.fa9cee1b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5909],{5392:function(a){a.exports=JSON.parse('{"devlake":{"allTagsPath":"/zh/blog/tags","name":"devlake","count":6,"permalink":"/zh/blog/tags/devlake"},"refdiff":{"allTagsPath":"/zh/blog/tags","name":"refdiff","count":1,"permalink":"/zh/blog/tags/refdiff"},"algorithm":{"allTagsPath":"/zh/blog/tags","name":"algorithm","count":1,"permalink":"/zh/blog/tags/algorithm"},"graph":{"allTagsPath":"/zh/blog/tags","name":"graph","c [...]
\ No newline at end of file
diff --git a/zh/assets/js/c8005641.d6c7028b.js b/zh/assets/js/c8005641.d6c7028b.js
new file mode 100644
index 0000000..5272735
--- /dev/null
+++ b/zh/assets/js/c8005641.d6c7028b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3651],{3905:function(e,t,r){r.d(t,{Zo:function(){return d},kt:function(){return m}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/d150864b.f60bd97d.js b/zh/assets/js/d150864b.bf9bd654.js
similarity index 57%
rename from zh/assets/js/d150864b.f60bd97d.js
rename to zh/assets/js/d150864b.bf9bd654.js
index 6ed46cb..b352c3b 100644
--- a/zh/assets/js/d150864b.f60bd97d.js
+++ b/zh/assets/js/d150864b.bf9bd654.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[4906],{7029:function(s){s.exports=JSON.parse('{"allTagsPath":"/zh/blog/tags","name":"postgresql","count":1,"permalink":"/zh/blog/tags/postgresql"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[4906],{7029:function(s){s.exports=JSON.parse('{"allTagsPath":"/zh/blog/tags","name":"postgresql","count":2,"permalink":"/zh/blog/tags/postgresql"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/e398a6ca.796dd263.js b/zh/assets/js/e398a6ca.13f3579f.js
similarity index 58%
rename from zh/assets/js/e398a6ca.796dd263.js
rename to zh/assets/js/e398a6ca.13f3579f.js
index f688e94..aecaabe 100644
--- a/zh/assets/js/e398a6ca.796dd263.js
+++ b/zh/assets/js/e398a6ca.13f3579f.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9117],{7481:function(a){a.exports=JSON.parse('{"allTagsPath":"/zh/blog/tags","name":"database","count":1,"permalink":"/zh/blog/tags/database"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9117],{7481:function(a){a.exports=JSON.parse('{"allTagsPath":"/zh/blog/tags","name":"database","count":2,"permalink":"/zh/blog/tags/database"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/main.373fbedc.js b/zh/assets/js/main.373fbedc.js
deleted file mode 100644
index e1a80b3..0000000
--- a/zh/assets/js/main.373fbedc.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.373fbedc.js.LICENSE.txt */
-(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/zh/assets/js/main.e63c53b2.js b/zh/assets/js/main.e63c53b2.js
new file mode 100644
index 0000000..91216b3
--- /dev/null
+++ b/zh/assets/js/main.e63c53b2.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.e63c53b2.js.LICENSE.txt */
+(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/zh/assets/js/main.373fbedc.js.LICENSE.txt b/zh/assets/js/main.e63c53b2.js.LICENSE.txt
similarity index 100%
rename from zh/assets/js/main.373fbedc.js.LICENSE.txt
rename to zh/assets/js/main.e63c53b2.js.LICENSE.txt
diff --git a/zh/assets/js/runtime~main.1b237011.js b/zh/assets/js/runtime~main.1b237011.js
deleted file mode 100644
index 0d99713..0000000
--- a/zh/assets/js/runtime~main.1b237011.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var e,a,c,f,d,t={},b={};function n(e){var a=b[e];if(void 0!==a)return a.exports;var c=b[e]={id:e,loaded:!1,exports:{}};return t[e].call(c.exports,c,c.exports,n),c.loaded=!0,c.exports}n.m=t,n.c=b,e=[],n.O=function(a,c,f,d){if(!c){var t=1/0;for(u=0;u<e.length;u++){c=e[u][0],f=e[u][1],d=e[u][2];for(var b=!0,r=0;r<c.length;r++)(!1&d||t>=d)&&Object.keys(n.O).every((function(e){return n.O[e](c[r])}))?c.splice(r--,1):(b=!1,d<t&&(t=d));if(b){e.splice(u--,1);var o=f();voi [...]
\ No newline at end of file
diff --git a/zh/assets/js/runtime~main.ff791755.js b/zh/assets/js/runtime~main.ff791755.js
new file mode 100644
index 0000000..0d15afe
--- /dev/null
+++ b/zh/assets/js/runtime~main.ff791755.js
@@ -0,0 +1 @@
+!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 6b3b1c9..84a5f86 100644
--- "a/zh/blog/2022/05/20/\345\246\202\344\275\225\350\264\241\347\214\256issues/index.html"
+++ "b/zh/blog/2022/05/20/\345\246\202\344\275\225\350\264\241\347\214\256issues/index.html"
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">如何贡献issue | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/2022/05/20/如何贡献issues"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" content="default"><meta [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 这很有趣,它们几乎立刻就被拿走了......
 但对于那些有兴趣但没有得到的人来说可能就不那么有趣了。</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="所以">所以...<a class="hash-link" href="#所以" title="标题的直接链接">​</a></h3><p>我们决定,不再有竞争,你可以从我们的github issue pages中挑选你喜欢的issue。如果没有了,甚至可以创建你自己的。
 我们毕竟是社区!</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="怎么做呢这很简单">怎么做呢?这很简单!<a class="hash-link" href="#怎么做呢这很简单" title="标题的直接链接">​</a></h3><p>进入我们的<a href="https://github.com/apache/incubator-devlake/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" target="_blank" rel="noopener noreferrer">问题页面</a>,然后点击这里。我们所有的Good First Issue都列在这里!
@@ -24,7 +24,7 @@
 不不不,你不是为我们写代码,你是为社区里的每个人写代码,你是为自己写代码。
 为了提高你的技能,为了学习如何与他人合作。而对于那些做出重大贡献的人,
 我们为您提供一个Apache Committer的席位,甚至是PPMC!</p></li></ul><h3 class="anchor anchorWithStickyNavbar_mojV" id="就这些了有任何问题请随时提出编码快乐">就这些了,有任何问题请随时提出。编码快乐!<a class="hash-link" href="#就这些了有任何问题请随时提出编码快乐" title="标题的直接链接">​</a></h3></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="博文分页导航"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/zh/blog/apache-devlake-codebase-walkthrough"><div class="pagination-nav__sublabel">较新一篇</div><div class="pagination-nav__l [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 ebdcdcc..c27cb18 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 f0294c4..8a3426d 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 用户可以根据实际需求,实现以下自定义:</p><ul><li>数据源自定义:Apache DevLake 基于 Golang plugin 系统设计了灵活的插件系统,支持用户独立开发接入任意 DevOps 工具</li><li>数据实体自定义:基于 dbt 插件,支持用户自定义数据转换模型</li><li>效能指标自定义:支持用户基于数据模型自定义指标,或调整指标计算方式</li><li>数据看板自定义:SQL 查询,在 Grafana 中拖拽搭建数据看板</li></ul><p>以下是 <a href="https://github.com/apache/incubator-devlake/blob/main/ARCHITECTURE.md" target="_blank" rel="noopener noreferrer">Apache DevLake 架构图</a>:</p><p><img loading="lazy" alt="面向开源产品的版本/模块质量分析" src="/zh/assets/images/0.11-architecture-diagram-f [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 f3b19c1..3354109 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/atom.xml b/zh/blog/atom.xml
index 3624fde..dd48f4f 100644
--- a/zh/blog/atom.xml
+++ b/zh/blog/atom.xml
@@ -2,11 +2,29 @@
 <feed xmlns="http://www.w3.org/2005/Atom">
     <id>https://devlake.apache.org/zh/blog</id>
     <title>Apache DevLake (Incubating) Blog</title>
-    <updated>2022-06-22T00:00:00.000Z</updated>
+    <updated>2022-06-23T00:00:00.000Z</updated>
     <generator>https://github.com/jpmonette/feed</generator>
     <link rel="alternate" href="https://devlake.apache.org/zh/blog"/>
     <subtitle>Apache DevLake (Incubating) Blog</subtitle>
     <icon>https://devlake.apache.org/zh/img/logo.svg</icon>
+    <entry>
+        <title type="html"><![CDATA[Compatibility of Apache DevLake with PostgreSQL]]></title>
+        <id>compatibility-of-apache-devLake-with-postgreSQL</id>
+        <link href="https://devlake.apache.org/zh/blog/compatibility-of-apache-devLake-with-postgreSQL"/>
+        <updated>2022-06-23T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[Apache DevLake is a dev data platform that can collect and integrate data from different dev tools including Jira, Github, Gitlab and Jenkins.]]></summary>
+        <content type="html"><![CDATA[<p>Apache DevLake is a dev data platform that can collect and integrate data from different dev tools including Jira, Github, Gitlab and Jenkins.</p><p>This blog will not aim at a comprehensive summary of the compatibility of database but a record of issues for future reference.</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="1different--data-types">1.Different  Data Types<a class="hash-link" href="#1different--data-types" title="标题的直接链接">​</a> [...]
+<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("merge_request_id = ? AND is_system = ?", gitlabMr.G [...]
+        <author>
+            <name>陈舸禹</name>
+            <uri>https://github.com/fredtheflat</uri>
+        </author>
+        <category label="devlake" term="devlake"/>
+        <category label="database" term="database"/>
+        <category label="postgresql" term="postgresql"/>
+    </entry>
     <entry>
         <title type="html"><![CDATA[refdiff插件的计算提交版本差异算法]]></title>
         <id>refdiff-calculate-commits-diff</id>
diff --git a/zh/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html b/zh/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
new file mode 100644
index 0000000..8bee391
--- /dev/null
+++ b/zh/blog/compatibility-of-apache-devLake-with-postgreSQL/index.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<html lang="zh" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default">
+<head>
+<meta charset="UTF-8">
+<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">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.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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://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.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 74d4a7f..1d4f7a1 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 d857822..ead129a 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/index.html b/zh/blog/index.html
index 991cce2..9f30834 100644
--- a/zh/blog/index.html
+++ b/zh/blog/index.html
@@ -6,12 +6,15 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<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 [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</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>计算出其到 [...]
@@ -34,7 +37,7 @@
 不不不,你不是为我们写代码,你是为社区里的每个人写代码,你是为自己写代码。
 为了提高你的技能,为了学习如何与他人合作。而对于那些做出重大贡献的人,
 我们为您提供一个Apache Committer的席位,甚至是PPMC!</p></li></ul><h3 class="anchor anchorWithStickyNavbar_mojV" id="就这些了有任何问题请随时提出编码快乐">就这些了,有任何问题请随时提出。编码快乐!<a class="hash-link" href="#就这些了有任何问题请随时提出编码快乐" title="标题的直接链接">​</a></h3></div></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="blogPostTitle_rzP5" itemprop="headline"><a itemprop="url" href="/zh/blog/apache-welcomes-devlake">DevLake 加入 Apache 孵化器,来和我们一起玩开源!</ [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 c737013..6527bee 100644
--- a/zh/blog/refdiff-calculate-commits-diff/index.html
+++ b/zh/blog/refdiff-calculate-commits-diff/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/refdiff-calculate-commits-diff"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus_tag" con [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
@@ -19,8 +19,8 @@
 从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
 此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
 此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
-从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</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.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/rss.xml b/zh/blog/rss.xml
index a3e7c71..1236881 100644
--- a/zh/blog/rss.xml
+++ b/zh/blog/rss.xml
@@ -4,10 +4,24 @@
         <title>Apache DevLake (Incubating) Blog</title>
         <link>https://devlake.apache.org/zh/blog</link>
         <description>Apache DevLake (Incubating) Blog</description>
-        <lastBuildDate>Wed, 22 Jun 2022 00:00:00 GMT</lastBuildDate>
+        <lastBuildDate>Thu, 23 Jun 2022 00:00:00 GMT</lastBuildDate>
         <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
         <generator>https://github.com/jpmonette/feed</generator>
         <language>zh</language>
+        <item>
+            <title><![CDATA[Compatibility of Apache DevLake with PostgreSQL]]></title>
+            <link>https://devlake.apache.org/zh/blog/compatibility-of-apache-devLake-with-postgreSQL</link>
+            <guid>compatibility-of-apache-devLake-with-postgreSQL</guid>
+            <pubDate>Thu, 23 Jun 2022 00:00:00 GMT</pubDate>
+            <description><![CDATA[Apache DevLake is a dev data platform that can collect and integrate data from different dev tools including Jira, Github, Gitlab and Jenkins.]]></description>
+            <content:encoded><![CDATA[<p>Apache DevLake is a dev data platform that can collect and integrate data from different dev tools including Jira, Github, Gitlab and Jenkins.</p><p>This blog will not aim at a comprehensive summary of the compatibility of database but a record of issues for future reference.</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="1different--data-types">1.Different  Data Types<a class="hash-link" href="#1different--data-types" title="标题的直接链接">​</a> [...]
+<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("merge_request_id = ? AND is_system = ?", gitlabMr.G [...]
+            <category>devlake</category>
+            <category>database</category>
+            <category>postgresql</category>
+        </item>
         <item>
             <title><![CDATA[refdiff插件的计算提交版本差异算法]]></title>
             <link>https://devlake.apache.org/zh/blog/refdiff-calculate-commits-diff</link>
diff --git a/zh/blog/some-practices-of-supporting-postgresql/index.html b/zh/blog/some-practices-of-supporting-postgresql/index.html
index 55a106c..ab21319 100644
--- a/zh/blog/some-practices-of-supporting-postgresql/index.html
+++ b/zh/blog/some-practices-of-supporting-postgresql/index.html
@@ -6,15 +6,15 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Apache DevLake 兼容 PostgreSQL 踩坑小结 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" nam [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 28b8888..3cd8ca0 100644
--- a/zh/blog/tags/algorithm/index.html
+++ b/zh/blog/tags/algorithm/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
@@ -20,7 +20,7 @@
 此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
 此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
 从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 aab3933..14ec402 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 54c010d..c2d6c1c 100644
--- a/zh/blog/tags/apache/index.html
+++ b/zh/blog/tags/apache/index.html
@@ -6,13 +6,13 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">2 篇博文 含有标签「apache」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/apache"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta d [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 28bcb28..818b675 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 b668f14..8bc9f97 100644
--- a/zh/blog/tags/database/index.html
+++ b/zh/blog/tags/database/index.html
@@ -5,16 +5,19 @@
 <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">1 篇博文 含有标签「database」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/database"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><me [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.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">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.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<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;,  [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 bca653c..4cac13c 100644
--- a/zh/blog/tags/devlake/index.html
+++ b/zh/blog/tags/devlake/index.html
@@ -5,13 +5,16 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">6 篇博文 含有标签「devlake」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/devlake"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.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">7 篇博文 含有标签「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.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<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 [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</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>计算出其到 [...]
@@ -22,7 +25,7 @@
 从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 a027c71..b5ad1af 100644
--- a/zh/blog/tags/graph/index.html
+++ b/zh/blog/tags/graph/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
@@ -20,7 +20,7 @@
 此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
 此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
 从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 4a97d7b..2bda633 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 998560c..1fc11c3 100644
--- a/zh/blog/tags/postgresql/index.html
+++ b/zh/blog/tags/postgresql/index.html
@@ -5,16 +5,19 @@
 <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">1 篇博文 含有标签「postgresql」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/postgresql"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh" [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.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">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.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<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;,  [...]
 <!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
 我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 88cb51d..c23f3a4 100644
--- a/zh/blog/tags/refdiff/index.html
+++ b/zh/blog/tags/refdiff/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
 问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
 集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
@@ -20,7 +20,7 @@
 此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
 此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
 从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 a1d448a..99ed6e2 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/index.html b/zh/community/index.html
index b2b6961..c978aac 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 e94c140..c73ff45 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 23b5a74..4cc766f 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 242ae58..6ae6e76 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 99fc40a..f87bf1f 100644
--- a/zh/community/make-contribution/fix-or-create-issues/index.html
+++ b/zh/community/make-contribution/fix-or-create-issues/index.html
@@ -6,8 +6,8 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Contributing to Issues | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/community/make-contribution/fix-or-create-issues"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docs [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -27,7 +27,7 @@ and then you can work on it. </p></li><li><p>Finally, you may ask, why do I go t
 No, you don&#x27;t code for us, you code for everyone in the community, you code for yourself,
 for your skills, to learn how to cooperate with others. And for those who made significant contribution,<br>
 <!-- -->we offer you, a seat of Apache Committer, or even PPMC.</p></li></ul><p>That&#x27;s all, feel free to ask any questions. And Happy Coding!</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="文档分页导航"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/zh/community/make-contribution/BlogSubmission"><div class="pagination-nav__sublabel">上一页</div><div class="pagination-nav__label">Blog Submission</div></a></div><div class="pagination-nav__ [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 0a257d0..b107ab2 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 08deacc..bbf6346 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 120ad31..de4a33b 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 8f66f08..a8423c1 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 ff3da51..b58e41a 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 cb0fe85..ceb983b 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 fc3090f..28be947 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 f57a3e4..e1a183b 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 cdba8f5..908c9c8 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 4ade96b..336aaf4 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 3dd66a1..db6f65d 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 d4bac55..73095df 100644
--- a/zh/docs/Glossary/index.html
+++ b/zh/docs/Glossary/index.html
@@ -8,15 +8,15 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Glossary | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Glossary"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" [...]
 "><meta data-rh="true" property="og:description" content="DevLake Glossary
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Glossary"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Glossary" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Glossary" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Glossary" hreflang="x-default"><link rel="stylesheet" href="/zh/ass [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 <img loading="lazy" alt="Blueprint ERD" src="/zh/assets/images/pipeline-erd-63705e2232b63c7fe75197ee3e96f170.svg" width="1409" height="593" class="img_E7b_">
 Notice: <strong>You can manually orchestrate the pipeline in Configuration UI Advanced Mode and the DevLake API; whereas in Configuration UI regular mode, an optimized pipeline orchestration will be automatically generated for you.</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="stages">Stages<a class="hash-link" href="#stages" title="标题的直接链接">​</a></h3><p><strong>A stages is a collection of tasks performed by data plugins.</strong> Stages are executed in a sequential orde [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 b13673a..ad451b8 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 e46be80..78aa1bf 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 8f37f88..a0ef261 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 5dd532e..0d47a06 100644
--- a/zh/docs/Plugins/dbt/index.html
+++ b/zh/docs/Plugins/dbt/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">DBT | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/dbt"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" n [...]
 "><meta data-rh="true" property="og:description" content="DBT Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/dbt"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/dbt" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/dbt" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/dbt" hreflang="x-default"><link rel="stylesheet" h [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -19,7 +19,7 @@ And selectedModels accepts one or more arguments. Each argument can be one of:</
 example:
 <code>select * from events where event_type = &#x27;{{ var(&quot;event_type&quot;) }}&#x27;</code>
 To execute this SQL query in your model, you need set a value for <code>event_type</code>.</li></ul><h3 class="anchor anchorWithStickyNavbar_mojV" id="resources">Resources:<a class="hash-link" href="#resources" title="标题的直接链接">​</a></h3><ul><li>Learn more about dbt <a href="https://docs.getdbt.com/docs/introduction" target="_blank" rel="noopener noreferrer">in the docs</a></li><li>Check out <a href="https://discourse.getdbt.com/" target="_blank" rel="noopener noreferrer">Discourse</a> fo [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 dbea624..c74d822 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 cbbc1b8..2e6f10a 100644
--- a/zh/docs/Plugins/gitee/index.html
+++ b/zh/docs/Plugins/gitee/index.html
@@ -8,15 +8,15 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Gitee(WIP) | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/gitee"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh [...]
 "><meta data-rh="true" property="og:description" content="Gitee Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/gitee"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitee" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitee" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitee" hreflang="x-default"><link rel="style [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 Enter a valid proxy server address on your Network, e.g. <code>http://your-proxy-server.com:1080</code></p><p>Click <strong>Save Settings</strong> to update additional settings.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="regular-expression-configuration">Regular Expression Configuration<a class="hash-link" href="#regular-expression-configuration" title="标题的直接链接">​</a></h3><p>Define regex pattern in .env</p><ul><li>GITEE_PR_BODY_CLOSE_PATTERN: Define key word to associate issue [...]
 You can also trigger data collection by making a POST request to <code>/pipelines</code>.</li></ol><div class="codeBlockContainer_I0IT theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-text codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">curl --location --request POST &#x27;localhost:8080/pipelines&#x27; \ [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 016d361..661e254 100644
--- a/zh/docs/Plugins/gitextractor/index.html
+++ b/zh/docs/Plugins/gitextractor/index.html
@@ -8,15 +8,15 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitExtractor | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/gitextractor"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><met [...]
 "><meta data-rh="true" property="og:description" content="GitExtractor Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/gitextractor"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitextractor" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/gitextractor" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/gitextractor" hreflang= [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 NOTE: you can run only one issue collection stage as described in the Github Plugin README.</li><li>Use the <a href="/zh/docs/Plugins/refdiff#development">RefDiff</a> plugin to calculate version diff, which will be stored in <code>refs_commits_diffs</code> table.</li></ol><h2 class="anchor anchorWithStickyNavbar_mojV" id="sample-request">Sample Request<a class="hash-link" href="#sample-request" title="标题的直接链接">​</a></h2><div class="codeBlockContainer_I0IT theme-code-block"><div class="co [...]
 machine. <a href="/zh/docs/Plugins/refdiff#development">Click here</a> for a brief guide.</p><br><br><br></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-devlake-website/edit/main/docs/03-Plugins/gitextractor.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_dcUD" a [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 f50d358..8bec140 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 9efe47b..7094691 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 b282f23..8aea2c8 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 fd808a0..04276e1 100644
--- a/zh/docs/Plugins/jira/index.html
+++ b/zh/docs/Plugins/jira/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">Jira | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/jira"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh="true" [...]
 "><meta data-rh="true" property="og:description" content="Jira Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/jira"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jira" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/jira" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/jira" hreflang="x-default"><link rel="styleshee [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -19,7 +19,7 @@
 For example:
 Requests to <code>http://your_devlake_host/plugins/jira/connections/1/proxy/rest/agile/1.0/board/8/sprint</code>
 would be forwarded to <code>https://your_jira_host/rest/agile/1.0/board/8/sprint</code></li></ol><div class="codeBlockContainer_I0IT language-GET theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-GET codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#3 [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 0a57e67..6ba5365 100644
--- a/zh/docs/Plugins/refdiff/index.html
+++ b/zh/docs/Plugins/refdiff/index.html
@@ -8,15 +8,15 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">RefDiff | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/Plugins/refdiff"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta data-rh= [...]
 "><meta data-rh="true" property="og:description" content="RefDiff Plugin
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/Plugins/refdiff"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/refdiff" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/Plugins/refdiff" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/Plugins/refdiff" hreflang="x-default"><link re [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
 machine.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="ubuntu">Ubuntu<a class="hash-link" href="#ubuntu" title="标题的直接链接">​</a></h3><div class="codeBlockContainer_I0IT theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-text codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">apt install cmake</span><br>< [...]
 <code>export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib:/usr/local/lib/pkgconfig</code></li></ol></blockquote><br><br><br></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-devlake-website/edit/main/docs/03-Plugins/refdiff.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class= [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 600074d..de2ff44 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 0b497a1..b16926f 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 3adda50..60b2625 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 5430845..684703a 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 b104b8f..e70a3d9 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 c072117..a99c900 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 ca80b8f..915f6be 100644
--- a/zh/docs/UserManuals/MIGRATIONS/index.html
+++ b/zh/docs/UserManuals/MIGRATIONS/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">DB Migration | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/UserManuals/MIGRATIONS"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><m [...]
 "><meta data-rh="true" property="og:description" content="DB Migration
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/UserManuals/MIGRATIONS"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/MIGRATIONS" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/MIGRATIONS" h [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -19,7 +19,7 @@ The migration scripts are written with gorm in Golang to support different SQL d
 They implement the <code>Script</code> interface.
 When DevLake starts, scripts register themselves to the framework by invoking the <code>Register</code> function</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span c [...]
 From which, DevLake could figure out the current state of database schemas.</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="how-it-works">How it Works<a class="hash-link" href="#how-it-works" title="标题的直接链接">​</a></h2><ol><li>Check <code>migration_history</code> table, calculate all the migration scripts need to be executed.</li><li>Sort scripts by Version in ascending order.</li><li>Execute scripts.</li><li>Save results in the <code>migration_history</code> table.</li></ol></div>< [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 95e8bb5..2417963 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 0f68329..c1275d2 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 6564ae4..05cdb39 100644
--- a/zh/docs/UserManuals/github-user-guide-v0.10.0/index.html
+++ b/zh/docs/UserManuals/github-user-guide-v0.10.0/index.html
@@ -8,8 +8,8 @@
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">GitHub User Guide v0.10.0 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/docs/UserManuals/github-user-guide-v0.10.0"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsear [...]
 "><meta data-rh="true" property="og:description" content="GitHub User Guide v0.10.0
 "><link data-rh="true" rel="icon" href="/zh/img/logo.svg"><link data-rh="true" rel="canonical" href="https://devlake.apache.org/zh/docs/UserManuals/github-user-guide-v0.10.0"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/docs/UserManuals/github-user-guide-v0.10.0" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://devlake.apache.org/zh/docs/UserManuals/github-user-guide-v0.10.0" hreflang="zh"><link data-rh="true" rel="alternate" href="https://devl [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -20,7 +20,7 @@ To accelerate the process, DevLake introduces GitExtractor, a new plugin that co
 <img loading="lazy" src="https://user-images.githubusercontent.com/14050754/163592015-b3294437-ce39-45d6-adf6-293e620d3942.png" alt="image" class="img_E7b_"></p></li></ol><ul><li>Endpoint URL: Leave this unchanged if you&#x27;re using github.com. Otherwise replace it with your own GitHub instance&#x27;s REST API endpoint URL. This URL should end with &#x27;/&#x27;.</li><li>Auth Token(s): Fill in your personal access tokens(s). For how to generate personal access tokens, please see GitHub [...]
 You can provide multiple tokens to speed up the data collection process, simply concatenating tokens with commas.</li><li>GitHub Proxy URL: This is optional. Enter a valid proxy server address on your Network, e.g. <a href="http://your-proxy-server.com:1080" target="_blank" rel="noopener noreferrer">http://your-proxy-server.com:1080</a></li></ul><ol start="4"><li><p>Click &#x27;Test Connection&#x27; and see it&#x27;s working, then click &#x27;Save Connection&#x27;.</p></li><li><p>[Option [...]
 <img loading="lazy" src="https://user-images.githubusercontent.com/14050754/163592506-1873bdd1-53cb-413b-a528-7bda440d07c5.png" alt="image" class="img_E7b_"></p><ol><li><p>Pull Request Enrichment Options</p><ol><li><code>Type</code>: PRs with label that matches given Regular Expression, their properties <code>type</code> will be set to the value of first sub match. For example, with Type being set to <code>type/(.*)$</code>, a PR with label <code>type/bug</code>, its <code>type</code> wo [...]
-<script src="/zh/assets/js/runtime~main.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 949b8be..9a17610 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/index.html b/zh/index.html
index 19b03d9..8f275f9 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.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 361a403..abb30b7 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.1b237011.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.373fbedc.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.ff791755.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.e63c53b2.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.1b237011.js"></script>
-<script src="/zh/assets/js/main.373fbedc.js"></script>
+<script src="/zh/assets/js/runtime~main.ff791755.js"></script>
+<script src="/zh/assets/js/main.e63c53b2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/sitemap.xml b/zh/sitemap.xml
index cd869eb..4b00fee 100644
--- a/zh/sitemap.xml
+++ b/zh/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://devlake.apache.org/zh/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://devlake.apache.org/zh/blog/2022/05/20/ [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://devlake.apache.org/zh/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://devlake.apache.org/zh/blog/2022/05/20/ [...]
\ No newline at end of file