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

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

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 eed5acc  deploy: 24ce1279cb8a637e55e3c3dc1104487bd8ea6bcd
eed5acc is described below

commit eed5acc7410b306fb3240b477486d176fc184dd4
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Wed Jun 22 10:13:52 2022 +0000

    deploy: 24ce1279cb8a637e55e3c3dc1104487bd8ea6bcd
---
 404.html                                           |   8 ++---
 .../dfs-3464f1398b150e893646c4f21e95ea10.gif       | Bin 0 -> 8701776 bytes
 ...5\233\276-4a78a881d229f093e4da55b862af4108.png" | Bin 0 -> 84765 bytes
 ...6\224\257-99f50ad221ac3d6162e30ccd1e71a075.png" | Bin 0 -> 73006 bytes
 ...6\257\224-d1d9959a319e4bb088379c7234097145.png" | Bin 0 -> 125303 bytes
 ...7\211\207-03a197c811642b9877283665e88f49fa.png" | Bin 0 -> 260049 bytes
 assets/js/13e19468.44da0956.js                     |   1 +
 assets/js/151b71a9.88a18f38.js                     |   1 +
 assets/js/1fa830c6.2859b7f4.js                     |   1 -
 assets/js/1fa830c6.a66caf20.js                     |   1 +
 assets/js/46be7bbd.8c97deed.js                     |   1 +
 assets/js/46be7bbd.cf5cf369.js                     |   1 -
 assets/js/5a750047.60fed7af.js                     |   1 +
 .../{5bf012c0.718a8bf9.js => 5bf012c0.c4f7f173.js} |   2 +-
 assets/js/7452ddde.f237960f.js                     |   1 +
 assets/js/814f3328.0b8a4603.js                     |   1 -
 assets/js/814f3328.51824e17.js                     |   1 +
 assets/js/8c241076.9e582661.js                     |   1 +
 assets/js/a12762e1.53601d6d.js                     |   1 +
 assets/js/a7023ddc.2de0ee2f.js                     |   1 +
 assets/js/a7023ddc.b1312c13.js                     |   1 -
 .../{b2b675dd.1f1f5b18.js => b2b675dd.27752387.js} |   2 +-
 assets/js/b2f554cd.03fed4cb.js                     |   1 -
 assets/js/b2f554cd.b99906cf.js                     |   1 +
 assets/js/cee7cffd.03fdf950.js                     |   1 +
 assets/js/cee7cffd.625cd037.js                     |   1 -
 assets/js/d65984bc.3a7a97d6.js                     |   1 +
 assets/js/d65984bc.9e9b9b00.js                     |   1 -
 .../{f3810852.3be01120.js => f3810852.4360a999.js} |   2 +-
 assets/js/fac0f815.47a78158.js                     |   1 +
 .../main.032cc920.js => assets/js/main.0120c557.js |   4 +--
 ...js.LICENSE.txt => main.0120c557.js.LICENSE.txt} |   0
 assets/js/main.6474abd9.js                         |   2 --
 assets/js/runtime~main.04e154b5.js                 |   1 +
 assets/js/runtime~main.597bb2b3.js                 |   1 -
 .../apache-devlake-codebase-walkthrough/index.html |  10 +++---
 blog/apache-welcomes-devlake/index.html            |  10 +++---
 blog/archive/index.html                            |  10 +++---
 blog/atom.xml                                      |  38 ++++++++++++++++++---
 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                                    |  14 ++++----
 blog/rss.xml                                       |  34 +++++++++++++++---
 .../index.html                                     |  22 +++++++-----
 blog/tags/{database => algorithm}/index.html       |  12 +++----
 blog/tags/ants/index.html                          |  10 +++---
 blog/tags/apache/index.html                        |  10 +++---
 blog/tags/codebase/index.html                      |  10 +++---
 blog/tags/database/index.html                      |  10 +++---
 blog/tags/devlake/index.html                       |  16 +++++----
 blog/tags/{database => graph}/index.html           |  12 +++----
 blog/tags/index.html                               |  10 +++---
 blog/tags/postgresql/index.html                    |  10 +++---
 blog/tags/{database => refdiff}/index.html         |  12 +++----
 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 ++---
 .../dfs-3464f1398b150e893646c4f21e95ea10.gif       | Bin 0 -> 8701776 bytes
 ...5\233\276-4a78a881d229f093e4da55b862af4108.png" | Bin 0 -> 84765 bytes
 ...6\224\257-99f50ad221ac3d6162e30ccd1e71a075.png" | Bin 0 -> 73006 bytes
 ...6\257\224-d1d9959a319e4bb088379c7234097145.png" | Bin 0 -> 125303 bytes
 ...7\211\207-03a197c811642b9877283665e88f49fa.png" | Bin 0 -> 260049 bytes
 zh/assets/js/04f1e2d2.c8ab0280.js                  |   1 +
 zh/assets/js/04f1e2d2.ce617ae3.js                  |   1 -
 .../{3a332aed.bdf240de.js => 3a332aed.4767b7f2.js} |   2 +-
 zh/assets/js/4b856534.63f7e03d.js                  |   1 +
 zh/assets/js/4dda8c35.f36954e6.js                  |   1 +
 zh/assets/js/54d20d08.4ef0e6e3.js                  |   1 +
 .../{5baeb61d.3ff92def.js => 5baeb61d.6a650f91.js} |   2 +-
 zh/assets/js/61c646b3.849d1c9e.js                  |   1 +
 zh/assets/js/6c760c7a.8e6ab870.js                  |   1 +
 zh/assets/js/814f3328.8cfec258.js                  |   1 +
 zh/assets/js/814f3328.cf52fc1d.js                  |   1 -
 zh/assets/js/927d70e2.53599570.js                  |   1 -
 zh/assets/js/927d70e2.d5a5e75d.js                  |   1 +
 zh/assets/js/9c294295.a7f2f9ed.js                  |   1 +
 zh/assets/js/9c294295.fa42af5c.js                  |   1 -
 .../{a68c8982.118270a5.js => a68c8982.522fac48.js} |   2 +-
 zh/assets/js/aa9d3612.cbdfeed2.js                  |   1 +
 zh/assets/js/abc99659.fb2aa604.js                  |   1 +
 zh/assets/js/bacbb418.1fea8fb5.js                  |   1 +
 zh/assets/js/bfb16af5.04cb7c2b.js                  |   1 -
 zh/assets/js/bfb16af5.fa9cee1b.js                  |   1 +
 .../{54d20d08.289f43ba.js => d16611e3.0d24eab2.js} |   2 +-
 zh/assets/js/d16611e3.cb576080.js                  |   1 -
 .../{edc931f8.149c17b0.js => edc931f8.1969f4fa.js} |   2 +-
 zh/assets/js/main.7641d60a.js                      |   2 ++
 ...js.LICENSE.txt => main.7641d60a.js.LICENSE.txt} |   0
 zh/assets/js/runtime~main.3317dbb0.js              |   1 -
 zh/assets/js/runtime~main.7463da36.js              |   1 +
 .../index.html"                                    |  10 +++---
 .../apache-devlake-codebase-walkthrough/index.html |  10 +++---
 zh/blog/apache-welcomes-devlake/index.html         |  10 +++---
 zh/blog/archive/index.html                         |  10 +++---
 zh/blog/atom.xml                                   |  38 ++++++++++++++++++---
 zh/blog/deadlock-caused-by-using-ants/index.html   |  10 +++---
 zh/blog/how-apache-devlake-runs/index.html         |  10 +++---
 zh/blog/index.html                                 |  14 ++++----
 zh/blog/rss.xml                                    |  34 +++++++++++++++---
 .../index.html                                     |  22 +++++++-----
 zh/blog/tags/{database => algorithm}/index.html    |  12 +++----
 zh/blog/tags/ants/index.html                       |  10 +++---
 zh/blog/tags/apache/index.html                     |  10 +++---
 zh/blog/tags/codebase/index.html                   |  10 +++---
 zh/blog/tags/database/index.html                   |  10 +++---
 zh/blog/tags/devlake/index.html                    |  16 +++++----
 zh/blog/tags/{database => graph}/index.html        |  12 +++----
 zh/blog/tags/index.html                            |  10 +++---
 zh/blog/tags/postgresql/index.html                 |  10 +++---
 zh/blog/tags/{database => refdiff}/index.html      |  12 +++----
 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 +-
 197 files changed, 741 insertions(+), 595 deletions(-)

diff --git a/404.html b/404.html
index aa8ea8c..0f1b290 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/images/dfs-3464f1398b150e893646c4f21e95ea10.gif b/assets/images/dfs-3464f1398b150e893646c4f21e95ea10.gif
new file mode 100644
index 0000000..73bfc87
Binary files /dev/null and b/assets/images/dfs-3464f1398b150e893646c4f21e95ea10.gif differ
diff --git "a/assets/images/\346\225\260\345\255\246\346\250\241\345\236\213\346\236\204\345\233\276-4a78a881d229f093e4da55b862af4108.png" "b/assets/images/\346\225\260\345\255\246\346\250\241\345\236\213\346\236\204\345\233\276-4a78a881d229f093e4da55b862af4108.png"
new file mode 100644
index 0000000..46e5b41
Binary files /dev/null and "b/assets/images/\346\225\260\345\255\246\346\250\241\345\236\213\346\236\204\345\233\276-4a78a881d229f093e4da55b862af4108.png" differ
diff --git "a/assets/images/\346\272\220\345\210\206\346\224\257-\347\233\256\346\240\207\345\210\206\346\224\257-99f50ad221ac3d6162e30ccd1e71a075.png" "b/assets/images/\346\272\220\345\210\206\346\224\257-\347\233\256\346\240\207\345\210\206\346\224\257-99f50ad221ac3d6162e30ccd1e71a075.png"
new file mode 100644
index 0000000..474372e
Binary files /dev/null and "b/assets/images/\346\272\220\345\210\206\346\224\257-\347\233\256\346\240\207\345\210\206\346\224\257-99f50ad221ac3d6162e30ccd1e71a075.png" differ
diff --git "a/assets/images/\347\211\210\346\234\254\345\257\271\346\257\224-d1d9959a319e4bb088379c7234097145.png" "b/assets/images/\347\211\210\346\234\254\345\257\271\346\257\224-d1d9959a319e4bb088379c7234097145.png"
new file mode 100644
index 0000000..58e020d
Binary files /dev/null and "b/assets/images/\347\211\210\346\234\254\345\257\271\346\257\224-d1d9959a319e4bb088379c7234097145.png" differ
diff --git "a/assets/images/\351\235\242\346\235\277\345\233\276\347\211\207-03a197c811642b9877283665e88f49fa.png" "b/assets/images/\351\235\242\346\235\277\345\233\276\347\211\207-03a197c811642b9877283665e88f49fa.png"
new file mode 100644
index 0000000..6438442
Binary files /dev/null and "b/assets/images/\351\235\242\346\235\277\345\233\276\347\211\207-03a197c811642b9877283665e88f49fa.png" differ
diff --git a/assets/js/13e19468.44da0956.js b/assets/js/13e19468.44da0956.js
new file mode 100644
index 0000000..fe819be
--- /dev/null
+++ b/assets/js/13e19468.44da0956.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[7971],{5593:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/algorithm","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/151b71a9.88a18f38.js b/assets/js/151b71a9.88a18f38.js
new file mode 100644
index 0000000..7849f63
--- /dev/null
+++ b/assets/js/151b71a9.88a18f38.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[654],{4969:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/refdiff","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1fa830c6.2859b7f4.js b/assets/js/1fa830c6.2859b7f4.js
deleted file mode 100644
index eba6ec1..0000000
--- a/assets/js/1fa830c6.2859b7f4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6725],{3905:function(e,a,t){t.d(a,{Zo:function(){return m},kt:function(){return c}});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/assets/js/1fa830c6.a66caf20.js b/assets/js/1fa830c6.a66caf20.js
new file mode 100644
index 0000000..7bc110e
--- /dev/null
+++ b/assets/js/1fa830c6.a66caf20.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6725],{3905:function(e,a,t){t.d(a,{Zo:function(){return m},kt:function(){return c}});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/assets/js/46be7bbd.8c97deed.js b/assets/js/46be7bbd.8c97deed.js
new file mode 100644
index 0000000..a05e818
--- /dev/null
+++ b/assets/js/46be7bbd.8c97deed.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5162],{3905:function(e,a,t){t.d(a,{Zo:function(){return m},kt:function(){return c}});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/assets/js/46be7bbd.cf5cf369.js b/assets/js/46be7bbd.cf5cf369.js
deleted file mode 100644
index 757dcd9..0000000
--- a/assets/js/46be7bbd.cf5cf369.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5162],{3905:function(e,a,t){t.d(a,{Zo:function(){return m},kt:function(){return c}});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/assets/js/5a750047.60fed7af.js b/assets/js/5a750047.60fed7af.js
new file mode 100644
index 0000000..163a2ef
--- /dev/null
+++ b/assets/js/5a750047.60fed7af.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[4123],{7455:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"algorithm","count":1,"permalink":"/blog/tags/algorithm"}')}}]);
\ No newline at end of file
diff --git a/assets/js/5bf012c0.718a8bf9.js b/assets/js/5bf012c0.c4f7f173.js
similarity index 75%
rename from assets/js/5bf012c0.718a8bf9.js
rename to assets/js/5bf012c0.c4f7f173.js
index 67ababe..0eebba3 100644
--- a/assets/js/5bf012c0.718a8bf9.js
+++ b/assets/js/5bf012c0.c4f7f173.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":6,"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":7,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/7452ddde.f237960f.js b/assets/js/7452ddde.f237960f.js
new file mode 100644
index 0000000..bf71f11
--- /dev/null
+++ b/assets/js/7452ddde.f237960f.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/814f3328.0b8a4603.js b/assets/js/814f3328.0b8a4603.js
deleted file mode 100644
index b5c5a37..0000000
--- a/assets/js/814f3328.0b8a4603.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"All posts","items":[{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7ed3","permalink":"/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake\u4ee3\u7801\u5e93\u5bfc\u89c8","permalink":"/blog/apache-devlake-codebase-walkthrough"},{"title":"\u5982\u4f55\u8d21\u732eissues","permalink":"/blog/how-to-contribute-to-issues"},{"title" [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.51824e17.js b/assets/js/814f3328.51824e17.js
new file mode 100644
index 0000000..61e7bdf
--- /dev/null
+++ b/assets/js/814f3328.51824e17.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"All posts","items":[{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7ed3","permalink":"/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake\u4ee3\u7801\u5e93\u5bfc\u89c8 [...]
\ No newline at end of file
diff --git a/assets/js/8c241076.9e582661.js b/assets/js/8c241076.9e582661.js
new file mode 100644
index 0000000..13fc613
--- /dev/null
+++ b/assets/js/8c241076.9e582661.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1324],{2687:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"graph","count":1,"permalink":"/blog/tags/graph"}')}}]);
\ No newline at end of file
diff --git a/assets/js/a12762e1.53601d6d.js b/assets/js/a12762e1.53601d6d.js
new file mode 100644
index 0000000..b61a6e2
--- /dev/null
+++ b/assets/js/a12762e1.53601d6d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[4619],{5186:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"refdiff","count":1,"permalink":"/blog/tags/refdiff"}')}}]);
\ No newline at end of file
diff --git a/assets/js/a7023ddc.2de0ee2f.js b/assets/js/a7023ddc.2de0ee2f.js
new file mode 100644
index 0000000..a493b69
--- /dev/null
+++ b/assets/js/a7023ddc.2de0ee2f.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":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.b1312c13.js b/assets/js/a7023ddc.b1312c13.js
deleted file mode 100644
index b0e02dc..0000000
--- a/assets/js/a7023ddc.b1312c13.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":6,"permalink":"/blog/tags/devlake"},"database":{"allTagsPath":"/blog/tags","name":"database","count":1,"permalink":"/blog/tags/database"},"postgresql":{"allTagsPath":"/blog/tags","name":"postgresql","count":1,"permalink":"/blog/tags/postgresql"},"codebase":{"allTagsPath":"/blog/tags","name":"codebase","count":1," [...]
\ No newline at end of file
diff --git a/assets/js/b2b675dd.1f1f5b18.js b/assets/js/b2b675dd.27752387.js
similarity index 52%
rename from assets/js/b2b675dd.1f1f5b18.js
rename to assets/js/b2b675dd.27752387.js
index e23513c..a1e8c33 100644
--- a/assets/js/b2b675dd.1f1f5b18.js
+++ b/assets/js/b2b675dd.27752387.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":6,"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":7,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/b2f554cd.03fed4cb.js b/assets/js/b2f554cd.03fed4cb.js
deleted file mode 100644
index 93a08fb..0000000
--- a/assets/js/b2f554cd.03fed4cb.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1477],{10:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"some-practices-of-supporting-postgresql","metadata":{"permalink":"/blog/some-practices-of-supporting-postgresql","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-17-Apache-DevLake\u517c\u5bb9PostgreSQL\u8e29\u5751\u5c0f\u7ed3/index.md","source":"@site/blog/2022-06-17-Apache-DevLake\u517c\u5bb9PostgreSQL\u8e29\u5751\u5c0f [...]
\ No newline at end of file
diff --git a/assets/js/b2f554cd.b99906cf.js b/assets/js/b2f554cd.b99906cf.js
new file mode 100644
index 0000000..8729e16
--- /dev/null
+++ b/assets/js/b2f554cd.b99906cf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1477],{10:function(n){n.exports=JSON.parse('{"blogPosts":[{"id":"some-practices-of-supporting-postgresql","metadata":{"permalink":"/blog/some-practices-of-supporting-postgresql","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5/index.md","source":"@site/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8b [...]
\ No newline at end of file
diff --git a/assets/js/cee7cffd.03fdf950.js b/assets/js/cee7cffd.03fdf950.js
new file mode 100644
index 0000000..76dfefd
--- /dev/null
+++ b/assets/js/cee7cffd.03fdf950.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[8187],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/assets/js/cee7cffd.625cd037.js b/assets/js/cee7cffd.625cd037.js
deleted file mode 100644
index 006edc8..0000000
--- a/assets/js/cee7cffd.625cd037.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[8187],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/assets/js/d65984bc.3a7a97d6.js b/assets/js/d65984bc.3a7a97d6.js
new file mode 100644
index 0000000..6286851
--- /dev/null
+++ b/assets/js/d65984bc.3a7a97d6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9396],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/assets/js/d65984bc.9e9b9b00.js b/assets/js/d65984bc.9e9b9b00.js
deleted file mode 100644
index 81de13d..0000000
--- a/assets/js/d65984bc.9e9b9b00.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9396],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function 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/f3810852.3be01120.js b/assets/js/f3810852.4360a999.js
similarity index 61%
rename from assets/js/f3810852.3be01120.js
rename to assets/js/f3810852.4360a999.js
index ec0ca46..dbc7115 100644
--- a/assets/js/f3810852.3be01120.js
+++ b/assets/js/f3810852.4360a999.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2698],{1601:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","name":"devlake","count":6,"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":7,"permalink":"/blog/tags/devlake"}')}}]);
\ No newline at end of file
diff --git a/assets/js/fac0f815.47a78158.js b/assets/js/fac0f815.47a78158.js
new file mode 100644
index 0000000..2193993
--- /dev/null
+++ b/assets/js/fac0f815.47a78158.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3941],{2698:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/graph","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/main.032cc920.js b/assets/js/main.0120c557.js
similarity index 79%
rename from zh/assets/js/main.032cc920.js
rename to assets/js/main.0120c557.js
index 9f4b34f..a0da0e3 100644
--- a/zh/assets/js/main.032cc920.js
+++ b/assets/js/main.0120c557.js
@@ -1,2 +1,2 @@
-/*! For license information please see main.032cc920.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
+/*! For license information please see main.0120c557.js.LICENSE.txt */
+(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/assets/js/main.6474abd9.js.LICENSE.txt b/assets/js/main.0120c557.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.6474abd9.js.LICENSE.txt
rename to assets/js/main.0120c557.js.LICENSE.txt
diff --git a/assets/js/main.6474abd9.js b/assets/js/main.6474abd9.js
deleted file mode 100644
index d870767..0000000
--- a/assets/js/main.6474abd9.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.6474abd9.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/runtime~main.04e154b5.js b/assets/js/runtime~main.04e154b5.js
new file mode 100644
index 0000000..baf65c0
--- /dev/null
+++ b/assets/js/runtime~main.04e154b5.js
@@ -0,0 +1 @@
+!function(){"use strict";var e,f,c,a,d,b={},t={};function n(e){var f=t[e];if(void 0!==f)return f.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,n),c.loaded=!0,c.exports}n.m=b,n.c=t,e=[],n.O=function(f,c,a,d){if(!c){var b=1/0;for(u=0;u<e.length;u++){c=e[u][0],a=e[u][1],d=e[u][2];for(var t=!0,r=0;r<c.length;r++)(!1&d||b>=d)&&Object.keys(n.O).every((function(e){return n.O[e](c[r])}))?c.splice(r--,1):(t=!1,d<b&&(b=d));if(t){e.splice(u--,1);var o=a();voi [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.597bb2b3.js b/assets/js/runtime~main.597bb2b3.js
deleted file mode 100644
index 6e3c221..0000000
--- a/assets/js/runtime~main.597bb2b3.js
+++ /dev/null
@@ -1 +0,0 @@
-!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 75fe2ae..e9d072f 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 ffb9b4c..f79f27a 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 82304fd..2be8390 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/atom.xml b/blog/atom.xml
index d581473..285b252 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -2,20 +2,50 @@
 <feed xmlns="http://www.w3.org/2005/Atom">
     <id>https://devlake.apache.org/blog</id>
     <title>Apache DevLake (Incubating) Blog</title>
-    <updated>2022-06-17T00:00:00.000Z</updated>
+    <updated>2022-06-22T00: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[refdiff插件的计算提交版本差异算法]]></title>
+        <id>some-practices-of-supporting-postgresql</id>
+        <link href="https://devlake.apache.org/blog/some-practices-of-supporting-postgresql"/>
+        <updated>2022-06-22T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[什么是 计算提交版本差异(CalculateCommitsDiff)?]]></summary>
+        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="Direct link to heading">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
+        <author>
+            <name>Nddtfjiang</name>
+            <uri>http://nddtf.com/github</uri>
+        </author>
+        <category label="devlake" term="devlake"/>
+        <category label="refdiff" term="refdiff"/>
+        <category label="algorithm" term="algorithm"/>
+        <category label="graph" term="graph"/>
+    </entry>
     <entry>
         <title type="html"><![CDATA[Apache DevLake 兼容 PostgreSQL 踩坑小结]]></title>
         <id>some-practices-of-supporting-postgresql</id>
         <link href="https://devlake.apache.org/blog/some-practices-of-supporting-postgresql"/>
         <updated>2022-06-17T00:00:00.000Z</updated>
         <summary type="html"><![CDATA[本文作者:ZhangLiang]]></summary>
-        <content type="html"><![CDATA[<p>本文作者:ZhangLiang<br>
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="Direct link to heading">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
         <author>
             <name>ZhangLiang</name>
             <uri>https://github.com/mindlesscloud</uri>
diff --git a/blog/deadlock-caused-by-using-ants/index.html b/blog/deadlock-caused-by-using-ants/index.html
index f073a4c..ad15b03 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 e57721d..062aaa4 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 5b9c606..dceb5db 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index f74e418..295e003 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -6,14 +6,16 @@
 <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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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" [...]
+我们最终决定把<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" [...]
+<!-- -->个人主页:<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" [...]
 这很有趣,它们几乎立刻就被拿走了......
 但对于那些有兴趣但没有得到的人来说可能就不那么有趣了。</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都列在这里!
@@ -32,7 +34,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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/rss.xml b/blog/rss.xml
index ba49033..0959b7f 100644
--- a/blog/rss.xml
+++ b/blog/rss.xml
@@ -4,19 +4,45 @@
         <title>Apache DevLake (Incubating) Blog</title>
         <link>https://devlake.apache.org/blog</link>
         <description>Apache DevLake (Incubating) Blog</description>
-        <lastBuildDate>Fri, 17 Jun 2022 00:00:00 GMT</lastBuildDate>
+        <lastBuildDate>Wed, 22 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[refdiff插件的计算提交版本差异算法]]></title>
+            <link>https://devlake.apache.org/blog/some-practices-of-supporting-postgresql</link>
+            <guid>some-practices-of-supporting-postgresql</guid>
+            <pubDate>Wed, 22 Jun 2022 00:00:00 GMT</pubDate>
+            <description><![CDATA[什么是 计算提交版本差异(CalculateCommitsDiff)?]]></description>
+            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="Direct link to heading">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
+            <category>devlake</category>
+            <category>refdiff</category>
+            <category>algorithm</category>
+            <category>graph</category>
+        </item>
         <item>
             <title><![CDATA[Apache DevLake 兼容 PostgreSQL 踩坑小结]]></title>
             <link>https://devlake.apache.org/blog/some-practices-of-supporting-postgresql</link>
             <guid>some-practices-of-supporting-postgresql</guid>
             <pubDate>Fri, 17 Jun 2022 00:00:00 GMT</pubDate>
             <description><![CDATA[本文作者:ZhangLiang]]></description>
-            <content:encoded><![CDATA[<p>本文作者:ZhangLiang<br>
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="Direct link to heading">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
             <category>devlake</category>
             <category>database</category>
             <category>postgresql</category>
diff --git a/blog/some-practices-of-supporting-postgresql/index.html b/blog/some-practices-of-supporting-postgresql/index.html
index d421c00..da4a8fb 100644
--- a/blog/some-practices-of-supporting-postgresql/index.html
+++ b/blog/some-practices-of-supporting-postgresql/index.html
@@ -5,22 +5,28 @@
 <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">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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag"  [...]
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button>< [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="Direct link to heading">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜�
 �(D [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="Direct link to heading">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n)) [...]
         <div style="margin-top: 20px">
           <a href="https://incubator.apache.org/" target="_blank"><img style="height:40px; margin-bottom: 10px; margin-top: 10px" alt="Apache Software Foundation" src="/img/apache-incubator.svg"></a>
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Apache DevLake is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of th [...]
           <p style="text-align:left; font-weight: 300; font-size: 0.8em;">Copyright ©2022 Apache DevLake, DevLake, Apache, the Apache feather logo and the Apache DevLake project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
         </div> 
         </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/database/index.html b/blog/tags/algorithm/index.html
similarity index 87%
copy from blog/tags/database/index.html
copy to blog/tags/algorithm/index.html
index 7a11f6e..616fee9 100644
--- a/blog/tags/database/index.html
+++ b/blog/tags/algorithm/index.html
@@ -5,13 +5,13 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;algorithm&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/algorithm"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" [...]
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 9fc691c..1152ca2 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 3615a49..c2686ce 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 b46d9cf..c6e6650 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 7a11f6e..383767d 100644
--- a/blog/tags/database/index.html
+++ b/blog/tags/database/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;database&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/database"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" c [...]
-<link rel="preload" href="/assets/js/runtime~main.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 093608f..8153c35 100644
--- a/blog/tags/devlake/index.html
+++ b/blog/tags/devlake/index.html
@@ -5,15 +5,17 @@
 <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">6 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">7 posts tagged with &quot;devlake&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/devlake"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" cont [...]
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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" [...]
+我们最终决定把<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" [...]
+<!-- -->个人主页:<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" [...]
 这很有趣,它们几乎立刻就被拿走了......
 但对于那些有兴趣但没有得到的人来说可能就不那么有趣了。</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都列在这里!
@@ -32,7 +34,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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/database/index.html b/blog/tags/graph/index.html
similarity index 87%
copy from blog/tags/database/index.html
copy to blog/tags/graph/index.html
index 7a11f6e..e64a555 100644
--- a/blog/tags/database/index.html
+++ b/blog/tags/graph/index.html
@@ -5,13 +5,13 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;graph&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/graph"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content [...]
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 4efb240..3a8f43f 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 cebbcb6..90ec928 100644
--- a/blog/tags/postgresql/index.html
+++ b/blog/tags/postgresql/index.html
@@ -6,12 +6,12 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;postgresql&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/postgresql"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:languag [...]
-<link rel="preload" href="/assets/js/runtime~main.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/database/index.html b/blog/tags/refdiff/index.html
similarity index 87%
copy from blog/tags/database/index.html
copy to blog/tags/refdiff/index.html
index 7a11f6e..493ec31 100644
--- a/blog/tags/database/index.html
+++ b/blog/tags/refdiff/index.html
@@ -5,13 +5,13 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">One post tagged with &quot;refdiff&quot; | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/blog/tags/refdiff"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" con [...]
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/Team/index.html b/community/Team/index.html
index abf7bf3..8f51a66 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index cd3a6ec..0b4a010 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 91114f9..26462d8 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 4adcfea..6fc73e2 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 045181a..80f4ece 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 5964e20..1f193bf 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/community/subscribe/index.html b/community/subscribe/index.html
index 09e634e..d83c835 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 77cc0f0..2e41127 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 941f694..3d8b06a 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 dbbca84..ae4a8a7 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 9c72488..0c57e83 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 4bfaf99..dccd630 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 e35c9f5..c8e2032 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 7c68f76..9dc242a 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 e336445..fe95d33 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 47ee1a4..899ef4d 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/EngineeringMetrics/index.html b/docs/EngineeringMetrics/index.html
index a01b1bc..7a7f1ad 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/Glossary/index.html b/docs/Glossary/index.html
index 7f7ae26..16e929a 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 b6072f3..6910e07 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 20014f2..0d00923 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 e14eb73..05afe85 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 bf59917..77a8367 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 9d8f7c9..c8e80e9 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 ed34b07..343593c 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 0259c58..74f2142 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 a51e162..c59224d 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 54a44f6..0f5051d 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 62d4109..997e2bc 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 7f525cd..499b372 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 26bad5b..c153ed0 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 430aae9..8850b5f 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 ffcb9c7..fa8235b 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 fda4f95..e4d9e6a 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 4e3e8d5..882c03b 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 395bdec..1eb4f75 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 390bdf0..cdc48a5 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 6a3a82f..12e129f 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 0d3c929..b18fd56 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 dc62114..d02a4be 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 5cb1e1d..805b6c5 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.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 ff6a4f3..e85f69c 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index a599f16..d651ea7 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/markdown-page/index.html b/markdown-page/index.html
index 941a86e..216936d 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.597bb2b3.js" as="script">
-<link rel="preload" href="/assets/js/main.6474abd9.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.04e154b5.js" as="script">
+<link rel="preload" href="/assets/js/main.0120c557.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.597bb2b3.js"></script>
-<script src="/assets/js/main.6474abd9.js"></script>
+<script src="/assets/js/runtime~main.04e154b5.js"></script>
+<script src="/assets/js/main.0120c557.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index 5cc5988..8282fbe 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 050b0be..a250839 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/assets/images/dfs-3464f1398b150e893646c4f21e95ea10.gif b/zh/assets/images/dfs-3464f1398b150e893646c4f21e95ea10.gif
new file mode 100644
index 0000000..73bfc87
Binary files /dev/null and b/zh/assets/images/dfs-3464f1398b150e893646c4f21e95ea10.gif differ
diff --git "a/zh/assets/images/\346\225\260\345\255\246\346\250\241\345\236\213\346\236\204\345\233\276-4a78a881d229f093e4da55b862af4108.png" "b/zh/assets/images/\346\225\260\345\255\246\346\250\241\345\236\213\346\236\204\345\233\276-4a78a881d229f093e4da55b862af4108.png"
new file mode 100644
index 0000000..46e5b41
Binary files /dev/null and "b/zh/assets/images/\346\225\260\345\255\246\346\250\241\345\236\213\346\236\204\345\233\276-4a78a881d229f093e4da55b862af4108.png" differ
diff --git "a/zh/assets/images/\346\272\220\345\210\206\346\224\257-\347\233\256\346\240\207\345\210\206\346\224\257-99f50ad221ac3d6162e30ccd1e71a075.png" "b/zh/assets/images/\346\272\220\345\210\206\346\224\257-\347\233\256\346\240\207\345\210\206\346\224\257-99f50ad221ac3d6162e30ccd1e71a075.png"
new file mode 100644
index 0000000..474372e
Binary files /dev/null and "b/zh/assets/images/\346\272\220\345\210\206\346\224\257-\347\233\256\346\240\207\345\210\206\346\224\257-99f50ad221ac3d6162e30ccd1e71a075.png" differ
diff --git "a/zh/assets/images/\347\211\210\346\234\254\345\257\271\346\257\224-d1d9959a319e4bb088379c7234097145.png" "b/zh/assets/images/\347\211\210\346\234\254\345\257\271\346\257\224-d1d9959a319e4bb088379c7234097145.png"
new file mode 100644
index 0000000..58e020d
Binary files /dev/null and "b/zh/assets/images/\347\211\210\346\234\254\345\257\271\346\257\224-d1d9959a319e4bb088379c7234097145.png" differ
diff --git "a/zh/assets/images/\351\235\242\346\235\277\345\233\276\347\211\207-03a197c811642b9877283665e88f49fa.png" "b/zh/assets/images/\351\235\242\346\235\277\345\233\276\347\211\207-03a197c811642b9877283665e88f49fa.png"
new file mode 100644
index 0000000..6438442
Binary files /dev/null and "b/zh/assets/images/\351\235\242\346\235\277\345\233\276\347\211\207-03a197c811642b9877283665e88f49fa.png" differ
diff --git a/zh/assets/js/04f1e2d2.c8ab0280.js b/zh/assets/js/04f1e2d2.c8ab0280.js
new file mode 100644
index 0000000..ac8123e
--- /dev/null
+++ b/zh/assets/js/04f1e2d2.c8ab0280.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9576],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/04f1e2d2.ce617ae3.js b/zh/assets/js/04f1e2d2.ce617ae3.js
deleted file mode 100644
index 07aad06..0000000
--- a/zh/assets/js/04f1e2d2.ce617ae3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[9576],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/3a332aed.bdf240de.js b/zh/assets/js/3a332aed.4767b7f2.js
similarity index 78%
rename from zh/assets/js/3a332aed.bdf240de.js
rename to zh/assets/js/3a332aed.4767b7f2.js
index aff1777..eb7f4e3 100644
--- a/zh/assets/js/3a332aed.bdf240de.js
+++ b/zh/assets/js/3a332aed.4767b7f2.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":6,"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":7,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/4b856534.63f7e03d.js b/zh/assets/js/4b856534.63f7e03d.js
new file mode 100644
index 0000000..b602383
--- /dev/null
+++ b/zh/assets/js/4b856534.63f7e03d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[8899],{4285:function(a){a.exports=JSON.parse('{"allTagsPath":"/zh/blog/tags","name":"algorithm","count":1,"permalink":"/zh/blog/tags/algorithm"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/4dda8c35.f36954e6.js b/zh/assets/js/4dda8c35.f36954e6.js
new file mode 100644
index 0000000..88abcb0
--- /dev/null
+++ b/zh/assets/js/4dda8c35.f36954e6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[4940],{1246:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog/tags/graph","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/54d20d08.4ef0e6e3.js b/zh/assets/js/54d20d08.4ef0e6e3.js
new file mode 100644
index 0000000..a8e986f
--- /dev/null
+++ b/zh/assets/js/54d20d08.4ef0e6e3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2708],{3905:function(e,a,t){t.d(a,{Zo:function(){return m},kt:function(){return c}});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/5baeb61d.3ff92def.js b/zh/assets/js/5baeb61d.6a650f91.js
similarity index 74%
rename from zh/assets/js/5baeb61d.3ff92def.js
rename to zh/assets/js/5baeb61d.6a650f91.js
index 5dee410..861d8af 100644
--- a/zh/assets/js/5baeb61d.3ff92def.js
+++ b/zh/assets/js/5baeb61d.6a650f91.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":5,"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":6,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/61c646b3.849d1c9e.js b/zh/assets/js/61c646b3.849d1c9e.js
new file mode 100644
index 0000000..1fca564
--- /dev/null
+++ b/zh/assets/js/61c646b3.849d1c9e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5054],{2573:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog/tags/algorithm","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/6c760c7a.8e6ab870.js b/zh/assets/js/6c760c7a.8e6ab870.js
new file mode 100644
index 0000000..7853b76
--- /dev/null
+++ b/zh/assets/js/6c760c7a.8e6ab870.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[915],{7644:function(e){e.exports=JSON.parse('{"permalink":"/zh/blog/tags/refdiff","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/814f3328.8cfec258.js b/zh/assets/js/814f3328.8cfec258.js
new file mode 100644
index 0000000..2912051
--- /dev/null
+++ b/zh/assets/js/814f3328.8cfec258.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2535],{5641:function(e){e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5","permalink":"/zh/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake \u517c\u5bb9 PostgreSQL \u8e29\u5751\u5c0f\u7ed3","permalink":"/zh/blog/some-practices-of-supporting-postgresql"},{"title":"Apache DevLake\u4ee3\u7801\u5e93\u5 [...]
\ No newline at end of file
diff --git a/zh/assets/js/814f3328.cf52fc1d.js b/zh/assets/js/814f3328.cf52fc1d.js
deleted file mode 100644
index 8f7c4b0..0000000
--- a/zh/assets/js/814f3328.cf52fc1d.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":"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","permalink":"/zh/blog/apache-devlake-codebase-walkthrough"},{"title":"\u5982\u4f55\u8d21\u732eissue","permalink":"/zh/blog/2022/05/20/\u5982\u4f55\u8d [...]
\ No newline at end of file
diff --git a/zh/assets/js/927d70e2.53599570.js b/zh/assets/js/927d70e2.53599570.js
deleted file mode 100644
index 745ef0c..0000000
--- a/zh/assets/js/927d70e2.53599570.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1045],{2190:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"some-practices-of-supporting-postgresql","metadata":{"permalink":"/zh/blog/some-practices-of-supporting-postgresql","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-17-Apache-DevLake\u517c\u5bb9PostgreSQL\u8e29\u5751\u5c0f\u7ed3/index.md","source":"@site/i18n/zh/docusaurus-plugin-content-blog/2022-06-17-Apache-DevLake\ [...]
\ No newline at end of file
diff --git a/zh/assets/js/927d70e2.d5a5e75d.js b/zh/assets/js/927d70e2.d5a5e75d.js
new file mode 100644
index 0000000..63ab93c
--- /dev/null
+++ b/zh/assets/js/927d70e2.d5a5e75d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1045],{2190:function(n){n.exports=JSON.parse('{"blogPosts":[{"id":"some-practices-of-supporting-postgresql","metadata":{"permalink":"/zh/blog/some-practices-of-supporting-postgresql","editUrl":"https://github.com/apache/incubator-devlake-website/edit/main/blog/2022-06-22-refdiff\u63d2\u4ef6\u7684\u8ba1\u7b97\u63d0\u4ea4\u7248\u672c\u5dee\u5f02\u7b97\u6cd5/index.md","source":"@site/i18n/zh/docusaurus-plugin-content-blog/2 [...]
\ No newline at end of file
diff --git a/zh/assets/js/9c294295.a7f2f9ed.js b/zh/assets/js/9c294295.a7f2f9ed.js
new file mode 100644
index 0000000..a55061c
--- /dev/null
+++ b/zh/assets/js/9c294295.a7f2f9ed.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3781],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/9c294295.fa42af5c.js b/zh/assets/js/9c294295.fa42af5c.js
deleted file mode 100644
index ee650e5..0000000
--- a/zh/assets/js/9c294295.fa42af5c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3781],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/a68c8982.118270a5.js b/zh/assets/js/a68c8982.522fac48.js
similarity index 59%
rename from zh/assets/js/a68c8982.118270a5.js
rename to zh/assets/js/a68c8982.522fac48.js
index 515df00..6442441 100644
--- a/zh/assets/js/a68c8982.118270a5.js
+++ b/zh/assets/js/a68c8982.522fac48.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":5,"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":6,"permalink":"/zh/blog/tags/devlake"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/aa9d3612.cbdfeed2.js b/zh/assets/js/aa9d3612.cbdfeed2.js
new file mode 100644
index 0000000..d16cc00
--- /dev/null
+++ b/zh/assets/js/aa9d3612.cbdfeed2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[1503],{3808:function(a){a.exports=JSON.parse('{"allTagsPath":"/zh/blog/tags","name":"graph","count":1,"permalink":"/zh/blog/tags/graph"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/abc99659.fb2aa604.js b/zh/assets/js/abc99659.fb2aa604.js
new file mode 100644
index 0000000..4b1c366
--- /dev/null
+++ b/zh/assets/js/abc99659.fb2aa604.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/bacbb418.1fea8fb5.js b/zh/assets/js/bacbb418.1fea8fb5.js
new file mode 100644
index 0000000..bd8ebac
--- /dev/null
+++ b/zh/assets/js/bacbb418.1fea8fb5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[5421],{802:function(e){e.exports=JSON.parse('{"allTagsPath":"/zh/blog/tags","name":"refdiff","count":1,"permalink":"/zh/blog/tags/refdiff"}')}}]);
\ No newline at end of file
diff --git a/zh/assets/js/bfb16af5.04cb7c2b.js b/zh/assets/js/bfb16af5.04cb7c2b.js
deleted file mode 100644
index d1dc034..0000000
--- a/zh/assets/js/bfb16af5.04cb7c2b.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":5,"permalink":"/zh/blog/tags/devlake"},"database":{"allTagsPath":"/zh/blog/tags","name":"database","count":1,"permalink":"/zh/blog/tags/database"},"postgresql":{"allTagsPath":"/zh/blog/tags","name":"postgresql","count":1,"permalink":"/zh/blog/tags/postgresql"},"codebase":{"allTagsPath":"/zh/blog/tags","name":" [...]
\ No newline at end of file
diff --git a/zh/assets/js/bfb16af5.fa9cee1b.js b/zh/assets/js/bfb16af5.fa9cee1b.js
new file mode 100644
index 0000000..e96afea
--- /dev/null
+++ b/zh/assets/js/bfb16af5.fa9cee1b.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":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/54d20d08.289f43ba.js b/zh/assets/js/d16611e3.0d24eab2.js
similarity index 96%
rename from zh/assets/js/54d20d08.289f43ba.js
rename to zh/assets/js/d16611e3.0d24eab2.js
index b93deb5..d6406d7 100644
--- a/zh/assets/js/54d20d08.289f43ba.js
+++ b/zh/assets/js/d16611e3.0d24eab2.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[2708],{3905:function(e,a,t){t.d(a,{Zo:function(){return m},kt:function(){return c}});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.app [...]
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3909],{3905:function(e,a,t){t.d(a,{Zo:function(){return m},kt:function(){return c}});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/d16611e3.cb576080.js b/zh/assets/js/d16611e3.cb576080.js
deleted file mode 100644
index 64d4032..0000000
--- a/zh/assets/js/d16611e3.cb576080.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[3909],{3905:function(e,a,t){t.d(a,{Zo:function(){return m},kt:function(){return c}});var n=t(7294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function l(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/edc931f8.149c17b0.js b/zh/assets/js/edc931f8.1969f4fa.js
similarity index 98%
rename from zh/assets/js/edc931f8.149c17b0.js
rename to zh/assets/js/edc931f8.1969f4fa.js
index d0b7183..a3927ac 100644
--- a/zh/assets/js/edc931f8.149c17b0.js
+++ b/zh/assets/js/edc931f8.1969f4fa.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[6160],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return f}});var r=n(7294);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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.app [...]
\ No newline at end of file
+"use strict";(self.webpackChunkwww=self.webpackChunkwww||[]).push([[7583],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return f}});var r=n(7294);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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.app [...]
\ No newline at end of file
diff --git a/zh/assets/js/main.7641d60a.js b/zh/assets/js/main.7641d60a.js
new file mode 100644
index 0000000..6d5253a
--- /dev/null
+++ b/zh/assets/js/main.7641d60a.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.7641d60a.js.LICENSE.txt */
+(self.webpackChunkwww=self.webpackChunkwww||[]).push([[179],{7757:function(e,t,n){e.exports=n(5666)},8726:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return [...]
\ No newline at end of file
diff --git a/zh/assets/js/main.032cc920.js.LICENSE.txt b/zh/assets/js/main.7641d60a.js.LICENSE.txt
similarity index 100%
rename from zh/assets/js/main.032cc920.js.LICENSE.txt
rename to zh/assets/js/main.7641d60a.js.LICENSE.txt
diff --git a/zh/assets/js/runtime~main.3317dbb0.js b/zh/assets/js/runtime~main.3317dbb0.js
deleted file mode 100644
index cebb7c6..0000000
--- a/zh/assets/js/runtime~main.3317dbb0.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var e,a,c,f,t,d={},n={};function r(e){var a=n[e];if(void 0!==a)return a.exports;var c=n[e]={id:e,loaded:!1,exports:{}};return d[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=d,r.c=n,e=[],r.O=function(a,c,f,t){if(!c){var d=1/0;for(u=0;u<e.length;u++){c=e[u][0],f=e[u][1],t=e[u][2];for(var n=!0,b=0;b<c.length;b++)(!1&t||d>=t)&&Object.keys(r.O).every((function(e){return r.O[e](c[b])}))?c.splice(b--,1):(n=!1,t<d&&(d=t));if(n){e.splice(u--,1);var o=f();voi [...]
\ No newline at end of file
diff --git a/zh/assets/js/runtime~main.7463da36.js b/zh/assets/js/runtime~main.7463da36.js
new file mode 100644
index 0000000..afb7e84
--- /dev/null
+++ b/zh/assets/js/runtime~main.7463da36.js
@@ -0,0 +1 @@
+!function(){"use strict";var e,a,c,f,d,t={},b={};function n(e){var a=b[e];if(void 0!==a)return a.exports;var c=b[e]={id:e,loaded:!1,exports:{}};return t[e].call(c.exports,c,c.exports,n),c.loaded=!0,c.exports}n.m=t,n.c=b,e=[],n.O=function(a,c,f,d){if(!c){var t=1/0;for(u=0;u<e.length;u++){c=e[u][0],f=e[u][1],d=e[u][2];for(var b=!0,r=0;r<c.length;r++)(!1&d||t>=d)&&Object.keys(n.O).every((function(e){return n.O[e](c[r])}))?c.splice(r--,1):(b=!1,d<t&&(t=d));if(b){e.splice(u--,1);var o=f();voi [...]
\ No newline at end of file
diff --git "a/zh/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 0acd71d..efc5019 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 ecd7c1b..a3b8f51 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.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.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 cc0dda4..26900c8 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 130b0cb..a97f86c 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.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.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/atom.xml b/zh/blog/atom.xml
index 9964a00..dcb906e 100644
--- a/zh/blog/atom.xml
+++ b/zh/blog/atom.xml
@@ -2,20 +2,50 @@
 <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-17T00:00:00.000Z</updated>
+    <updated>2022-06-22T00: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[refdiff插件的计算提交版本差异算法]]></title>
+        <id>some-practices-of-supporting-postgresql</id>
+        <link href="https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql"/>
+        <updated>2022-06-22T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[什么是 计算提交版本差异(CalculateCommitsDiff)?]]></summary>
+        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="标题的直接链接">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。</p><p>而如果只是使用<c [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
+        <author>
+            <name>Nddtfjiang</name>
+            <uri>http://nddtf.com/github</uri>
+        </author>
+        <category label="devlake" term="devlake"/>
+        <category label="refdiff" term="refdiff"/>
+        <category label="algorithm" term="algorithm"/>
+        <category label="graph" term="graph"/>
+    </entry>
     <entry>
         <title type="html"><![CDATA[Apache DevLake 兼容 PostgreSQL 踩坑小结]]></title>
         <id>some-practices-of-supporting-postgresql</id>
         <link href="https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql"/>
         <updated>2022-06-17T00:00:00.000Z</updated>
         <summary type="html"><![CDATA[本文作者:ZhangLiang]]></summary>
-        <content type="html"><![CDATA[<p>本文作者:ZhangLiang<br>
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="标题的直接链接">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。</p><p>而如果只是使用<c [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
         <author>
             <name>ZhangLiang</name>
             <uri>https://github.com/mindlesscloud</uri>
diff --git a/zh/blog/deadlock-caused-by-using-ants/index.html b/zh/blog/deadlock-caused-by-using-ants/index.html
index add4886..fa6d5c4 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.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.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 797a7d7..455e19b 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.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.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/index.html b/zh/blog/index.html
index 8966c0e..e05b3af 100644
--- a/zh/blog/index.html
+++ b/zh/blog/index.html
@@ -6,14 +6,16 @@
 <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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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" [...]
+我们最终决定把<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" [...]
+<!-- -->个人主页:<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" [...]
 这很有趣,它们几乎立刻就被拿走了......
 但对于那些有兴趣但没有得到的人来说可能就不那么有趣了。</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都列在这里!
@@ -26,7 +28,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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/rss.xml b/zh/blog/rss.xml
index a25cd41..4a9bda6 100644
--- a/zh/blog/rss.xml
+++ b/zh/blog/rss.xml
@@ -4,19 +4,45 @@
         <title>Apache DevLake (Incubating) Blog</title>
         <link>https://devlake.apache.org/zh/blog</link>
         <description>Apache DevLake (Incubating) Blog</description>
-        <lastBuildDate>Fri, 17 Jun 2022 00:00:00 GMT</lastBuildDate>
+        <lastBuildDate>Wed, 22 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[refdiff插件的计算提交版本差异算法]]></title>
+            <link>https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql</link>
+            <guid>some-practices-of-supporting-postgresql</guid>
+            <pubDate>Wed, 22 Jun 2022 00:00:00 GMT</pubDate>
+            <description><![CDATA[什么是 计算提交版本差异(CalculateCommitsDiff)?]]></description>
+            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="标题的直接链接">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。</p><p>而如果只是使用<c [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
+            <category>devlake</category>
+            <category>refdiff</category>
+            <category>algorithm</category>
+            <category>graph</category>
+        </item>
         <item>
             <title><![CDATA[Apache DevLake 兼容 PostgreSQL 踩坑小结]]></title>
             <link>https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql</link>
             <guid>some-practices-of-supporting-postgresql</guid>
             <pubDate>Fri, 17 Jun 2022 00:00:00 GMT</pubDate>
             <description><![CDATA[本文作者:ZhangLiang]]></description>
-            <content:encoded><![CDATA[<p>本文作者:ZhangLiang<br>
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_mojV" id="什么是-计算提交版本差异calculatecommitsdiff">什么是 <code>计算提交版本差异</code>(CalculateCommitsDiff)?<a class="hash-link" href="#什么是-计算提交版本差异calculatecommitsdiff" title="标题的直接链接">​</a></h2><p>我们常常需要计算两个<code>提交版本</code>之间的差异。具体的说,就是需要知道两个不同的<code>分支/标签</code>之间相差了哪些<code>提交版本</code>。</p><p>对于一般用户来说,通过<code>计算提交版本差异</code>,用户能迅速的判断两个不同的<code>分支/标签</code>之间在功能、BUG修复等等方面的区别。以帮助用户选择不同的<code>分支/标签</code>来使用。</p><p>而如果只是使用<c [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
             <category>devlake</category>
             <category>database</category>
             <category>postgresql</category>
diff --git a/zh/blog/some-practices-of-supporting-postgresql/index.html b/zh/blog/some-practices-of-supporting-postgresql/index.html
index 056b871..8d12959 100644
--- a/zh/blog/some-practices-of-supporting-postgresql/index.html
+++ b/zh/blog/some-practices-of-supporting-postgresql/index.html
@@ -5,16 +5,22 @@
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">refdiff插件的计算提交版本差异算法 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/some-practices-of-supporting-postgresql"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docusaurus [...]
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
-<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
-我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
-<script src="/zh/assets/js/runtime~main.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<div role="region"><a href="#" class="skipToContent_ZgBM">跳到主要内容</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navba [...]
+当然,有的同学在这里可能又会产生一个问题:</p><ul><li><code>目标分支/标签</code>和<code>源分支/标签</code> 虽然都能映射到其最后的<code>提交版本</code>上,但是实际上来说<code>提交版本</code>与<code>分支/标签</code>本质上就是两种不同的概念。</li></ul><p><code>分支/标签</code>的实质,是包含一系列的<code>提交版本</code>的集合。而特定的<code>提交版本</code>仅仅是这个集合中的最后一个元素罢了。</p><p>当我们把一个仓库通过上述数学建模抽象成一个有向图之后,这个集合的信息,会因此而丢失掉吗?</p><p>对于一个合法的仓库来说,答案显然是,<code>不会</code></p><p>实际上,这也就是为什么我们一定要在该有向图中强调<code>根节点</code>的原因。</p><p>我们这里这里,先给出结论:</p><p><strong><code>分支/标签</code>所对应的节点,到<code>根节点</code>的全部路�
 �中途径的<c [...]
+问题是,如何将一个节点添加到集合中。方案有如下两种。</p><p>染色法:添加到集合中的节点进行染色,未添加到集合中的节点不进行染色。
+集合法:使用平衡树算法建立一个集合,将节点添加到该集合中。</p><p>这两种算法各有优劣。</p><ul><li>染色法的优势在于,染色法添加一个元素的时间复杂度是O(1)的,快准狠。相比较而言,集合法添加一个元素的时间复杂度是O(log(n))。</li><li>集合法的优势在于,集合法遍历所有元素的时间复杂度是O(n)的,而染色法下,要遍历所有元素时间复杂度会是O(m),同时集合法可以通过设计一个优秀的hash算法代替平衡树,来将时间复杂度优化到接近O(1).(这里n表示集合大小,m表示整个图的大小)</li></ul><p>我们这里选择使用集合法。实际上这两种算法都差不多。</p><h2 class="anchor anchorWithStickyNavbar_mojV" id="算法实现">算法实现<a class="hash-link" href="#算法实现" title="标题的直接链接">​</a></h2><ul><li>根据提交建图</li><li>我们对<code>旧节点</code>使用<code>深度优先搜索
 (DFS)</code>计算出其到 [...]
+从节点<code>8</code>开始执行<code>深度优先搜索(DFS)</code>到<code>根节点</code>中止
+从节点<code>9</code>开始执行<code>深度优先搜索(DFS)</code>到已经在节点<code>8</code>的集合中的节点为止
+此时,在节点<code>9</code>执行<code>深度优先搜索(DFS)</code>过程中被访问到的所有非节点<code>8</code>的节点</p><ul><li>节点<code>3</code></li><li>节点<code>6</code></li><li>节点<code>7</code></li><li>节点<code>9</code> </li></ul><p>它们所对应的<code>提交版本</code>就是我们要求的差集</p><blockquote><p>此时最短路为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code> -&gt; <code>8</code>
+此时最近公共父节点为 <code>5</code>,到该节点的路径为 <code>9</code> -&gt; <code>7</code> -&gt; <code>5</code>
+从上图中也可以直观的看到如果使用最短路算法,或者最近公共父节点算法的情况下,我们是无法得到正确答案的。</p></blockquote><h2 class="anchor anchorWithStickyNavbar_mojV" id="时空复杂度">时空复杂度<a class="hash-link" href="#时空复杂度" title="标题的直接链接">​</a></h2><p>设<code>提交版本</code>的总大小为m,每一组<code>源分支/标签</code>和<code>目标分支/标签</code>的平均大小为n,一共有k组数据</p><p>DFS每访问一个节点,需要执行一次加入集合操作。我们按照我们实际实现中使用的 平衡树算法来计算 时间复杂度为 O(log(n))</p><p>此时我们可以计算得出</p><ul><li>建图的时间复杂度:O(m)</li><li>计算一组<code>源分支/标签</code>和<code>目标分支/标签</code>时间复杂度:O(n<!-- -->*<!-- -->log(n))</li><li>计算所有<c [...]
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/database/index.html b/zh/blog/tags/algorithm/index.html
similarity index 87%
copy from zh/blog/tags/database/index.html
copy to zh/blog/tags/algorithm/index.html
index 5469b14..4cfdc1e 100644
--- a/zh/blog/tags/database/index.html
+++ b/zh/blog/tags/algorithm/index.html
@@ -5,16 +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">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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.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">1 篇博文 含有标签「algorithm」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/algorithm"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh">< [...]
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 f8bb7b4..6e1e89b 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.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.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 09cbc0d..46dfbcd 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.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.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 30d9736..8d809b9 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.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.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 5469b14..78e09c1 100644
--- a/zh/blog/tags/database/index.html
+++ b/zh/blog/tags/database/index.html
@@ -6,15 +6,15 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">1 篇博文 含有标签「database」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/database"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><me [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 73f549c..b1f1212 100644
--- a/zh/blog/tags/devlake/index.html
+++ b/zh/blog/tags/devlake/index.html
@@ -5,16 +5,18 @@
 <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">5 篇博文 含有标签「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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.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">6 篇博文 含有标签「devlake」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/devlake"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta [...]
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+我们最终决定把<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" [...]
+<!-- -->个人主页:<a href="https://github.com/mindlesscloud" target="_blank" rel="noopener noreferrer">https://github.com/mindlesscloud</a></p><p>Apache DevLake 是一个研发数据平台,可以收集和整合各类研发工具的数据,比如 Jira、Github、Gitlab、Jenkins。</p><p><strong>本文并不打算对数据库兼容这个问题做全面的总结,只是对我们实际遇到的问题做一个记录,希望能对有相似需求的人提供一个参考。</strong></p><p><strong>1、数据类型差异</strong></p><h3 class="anchor anchorWithStickyNavbar_mojV" id="postgresql-不支持-uint-类型的数据类型">PostgreSQL 不支持 uint 类型的数据类型<a class="hash-link" href="#postgresql-不支持-uint-类型的数据 [...]
+我们最终决定把<code>GROUP_CONCAT</code>函数的功能拆分成两步,先用最简单的 SQL 查询得到排序好的多条数据,然后用代码做聚合。</p><p>修改后:</p><div class="codeBlockContainer_I0IT language-go theme-code-block"><div class="codeBlockContent_wNvx" style="color:#393A34;background-color:#f6f8fa"><pre tabindex="0" class="prism-code language-go codeBlock_jd64 thin-scrollbar"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">cursor2</span><span class="token punctuation" style="color:#393A34" [...]
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/database/index.html b/zh/blog/tags/graph/index.html
similarity index 87%
copy from zh/blog/tags/database/index.html
copy to zh/blog/tags/graph/index.html
index 5469b14..56c2fd5 100644
--- a/zh/blog/tags/database/index.html
+++ b/zh/blog/tags/graph/index.html
@@ -5,16 +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">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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.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">1 篇博文 含有标签「graph」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/graph"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta dat [...]
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 277d117..76c06b6 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.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.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 bdb269f..4bb9fdb 100644
--- a/zh/blog/tags/postgresql/index.html
+++ b/zh/blog/tags/postgresql/index.html
@@ -6,15 +6,15 @@
 <meta name="generator" content="Docusaurus v2.0.0-beta.18">
 <link rel="alternate" type="application/rss+xml" href="/zh/blog/rss.xml" title="Apache DevLake (Incubating) RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/zh/blog/atom.xml" title="Apache DevLake (Incubating) Atom Feed"><title data-rh="true">1 篇博文 含有标签「postgresql」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/postgresql"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh" [...]
-<link rel="preload" href="/zh/assets/js/runtime~main.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/blog/tags/database/index.html b/zh/blog/tags/refdiff/index.html
similarity index 87%
copy from zh/blog/tags/database/index.html
copy to zh/blog/tags/refdiff/index.html
index 5469b14..ae97ccb 100644
--- a/zh/blog/tags/database/index.html
+++ b/zh/blog/tags/refdiff/index.html
@@ -5,16 +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">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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.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">1 篇博文 含有标签「refdiff」 | Apache DevLake (Incubating)</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://devlake.apache.org/zh/blog/tags/refdiff"><meta data-rh="true" name="docusaurus_locale" content="zh"><meta data-rh="true" name="docsearch:language" content="zh"><meta [...]
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 86dda51..8381e5f 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/community/index.html b/zh/community/index.html
index 094045f..8f58622 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 8f4fa4c..6e40dff 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 6f5386f..6690ca1 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 f69907d..757ca4e 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 1a49cbd..0409af2 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 947f58f..f9da2d1 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 46116be..d03f9e6 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 1c2c53b..5a7bbe3 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 9acdd63..05a68da 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 a181133..2b54237 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 101d795..b96655e 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 6e2e10c..ecceeda 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 473c329..7981944 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 faed617..628852b 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 39d37b6..3cfd0e4 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 81c4eee..8338cce 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 208f9ff..c5edbcf 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 d991e03..2351aff 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 0506b8c..abf8f0f 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 ac0c815..9863312 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 81d1120..138f973 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 27efa8e..3938f01 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 de73900..47abf07 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 9d01879..1146b2a 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 e07c25b..1419ee0 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 ded320f..6cbef87 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 4d4a042..fc2e49c 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 8f8a328..1006798 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 8db25f1..4427ab3 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 8d94861..e8e0dca 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 7eee647..dfa1cf7 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 0b8c87a..468a61c 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 a49f7fe..fcd6085 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 8e0758b..cc3e9f4 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 2c0a4ef..88d1585 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 ddaec66..df27704 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 63be2c8..e92b637 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 b162cba..150bf17 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 fa3da17..4c7279d 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 c4f336a..f31f996 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/index.html b/zh/index.html
index cf1207c..8929918 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.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 ae2be7f..e2de76d 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.3317dbb0.js" as="script">
-<link rel="preload" href="/zh/assets/js/main.032cc920.js" as="script">
+<link rel="preload" href="/zh/assets/js/runtime~main.7463da36.js" as="script">
+<link rel="preload" href="/zh/assets/js/main.7641d60a.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}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.3317dbb0.js"></script>
-<script src="/zh/assets/js/main.032cc920.js"></script>
+<script src="/zh/assets/js/runtime~main.7463da36.js"></script>
+<script src="/zh/assets/js/main.7641d60a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/zh/sitemap.xml b/zh/sitemap.xml
index 9f21ad6..3c377d8 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